필요한 작업을 수행하기 위해 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.conf
rsync