소스 폴더에서 찾을 수 없는 하위 디렉터리를 수정하지 않도록 rsync를 구성할 수 있습니까?

소스 폴더에서 찾을 수 없는 하위 디렉터리를 수정하지 않도록 rsync를 구성할 수 있습니까?

필요한 작업을 수행하기 위해 rsync를 실행하는 방법을 알아내는 데 어려움을 겪고 있습니다. 기본적으로 나에게 필요한 것은 아래와 같이 여러 하위 디렉터리가 있는 단일 소스 폴더입니다.

-만약에문서원본 폴더의 지정된 하위 디렉터리에 대한 변경 사항의 경우 이러한 변경 사항을 대상에 동기화합니다(파일을 업데이트하고 원본 폴더에 더 이상 없는 파일을 삭제합니다).

-만약폴더소스에는 있지만 대상에는 없는 경우 폴더와 해당 내용을 모두 대상에 동기화합니다.

-만약폴더대상에는 있지만 소스에는 없으면 아무 작업도 수행하지 마십시오(예: 삭제하지 마십시오).

디렉토리 구조는 다음과 같습니다.

Source Folder
   Folder 1
      File 1 unchanged.txt
   Folder 2
      File 2 newer.txt
   Folder 3
      File 3.txt

Destination Folder
   Folder 1
      File 1 unchanged.txt
   Folder 2
      File 2 old.txt (to be replaced with File 2 newer.txt)
   (Folder 3 not yet in destination, to be added from source)
   Folder X (not in source, to be left untouched)

답변1

man rsync에 따르면 다음을 사용할 수 있습니다.

--exclude=PATTERN

또는 목록이 너무 크면 다음을 사용할 수 있습니다.

--exclude-from=FILE 

답변2

귀하가 설명하는 것은 rsync의 기본 표준 동작입니다.

다른 동작을 원할 경우 --delete다음 옵션 중 하나를 사용해야 합니다.

내 주장을 입증하는 테스트는 다음과 같습니다.

 $ mkdir tmp1
 $ mkdir tmp2
 $ mkdir tmp1/1
 $ mkdir tmp1/2
 $ mkdir tmp2/1
 $ mkdir tmp2/X
 $ touch tmp1/1/1.txt
 $ touch tmp1/2/2.txt
 $ rsync -avz tmp1 tmp2
 sending incremental file list
 tmp1/
 tmp1/1/
 tmp1/1/1.txt
 tmp1/2/
 tmp1/2/2.txt

 sent 208 bytes  received 62 bytes  540.00 bytes/sec
 total size is 0  speedup is 0.00
 $ ls tmp2
 1  tmp1  X

디렉터리 X가 영향을 받지 않고 그대로 있는 것을 볼 수 있습니다.

데몬으로 사용하는 경우 rsync구성 파일의 옵션이 적용될 수 있습니다.

여기 또는 시작하려는 사용자의 홈 디렉터리에 /etc/rsyncd.conf삭제 옵션이 설정되어 있는지 확인하세요.rsyncd.confrsync

관련 정보