RSYNC는 대상 경로에서 디렉터리를 제외합니다.

RSYNC는 대상 경로에서 디렉터리를 제외합니다.

원격 서버에 이미 존재하는 폴더(예: )를 제외 하고 폴더 가 있는 원본 서버에서 실행 test/xyz하고 싶기 때문에 원격 측의 폴더를 덮어쓰고 싶지 않습니다 .rsynctest1/xyzxyz

test/xyz또한 원본 서버에서 파일이 삭제/추가되면 해당 파일은 원격 서버에서 삭제/추가되지만 폴더에서는 삭제/추가되지 않으며 해당 파일도 업데이트하고 싶습니다.

원격 디렉터리를 제외하기 위해 다음 명령을 사용해 보았으나 제외된 디렉터리와 파일이 원격 디렉터리에 복사됩니다.

rsync -ave ssh --exclude=remotedirectory root@IPADDRESS:remotepath --delete sourcepath

어떤 아이디어가 있나요?

답변1

두 가지 방법이 있습니다.

  1. 어쨌든 --exclude=dir동기화하고 싶지 않기 때문에 로컬이든 원격이든 상관이 없습니다.
  2. 이 제외 옵션을 사용 --rsync-path='rsync --exclude=dir'하면 원격 rsync가 수행됩니다.

답변2

이것은 작동합니다:

rsync -av --delete --exclude=/xyz/ sourcepath/ root@IPADDRESS:remotepath/

"sourcepath"의 루트에 나타날 때 "xyz"가 제외됩니다.그리고디렉토리입니다(끝의 "/"가 이를 보장합니다).

원본 및 대상 디렉터리의 후행 슬래시가 중요합니다. 그것 없이는두번째rsync 실행은 아마도 원하는 것이 아닐 수도 있는 새 폴더 "remotepath/sourcepath"를 생성합니다.

또한 귀하의 설명에 따르면 소스 및 대상 매개변수가 잘못되었습니다(그러나 혼란은 내 것일 수 있습니다).

관련 정보