사용할 때 rsync --files-from=$FILE
파일에 나열되지 않은 대상의 모든 파일과 디렉토리를 삭제하고 싶습니다.
예 :
mkdir /tmp/sync
cd /tmp/sync
mkdir left right
touch left/only_left right/only_right
echo /tmp/sync/left/only_left > tosync
rsync \
--dry-run \
--itemize-changes \
--files-from=/tmp/sync/tosync \
--progress \
--human-readable \
--prune-empty-dirs \
--delete-after \
--inplace \
/ /tmp/sync/right/
출력
cd+++++++++ tmp/
cd+++++++++ tmp/sync/
cd+++++++++ tmp/sync/left/
>f+++++++++ tmp/sync/left/only_left
및 find /tmp/sync/right
출력
find right/
right/
right/only_right
right/tmp
right/tmp/sync
right/tmp/sync/left
right/tmp/sync/left/only_left
그러나 "only_right"는 삭제되지 않을 것으로 예상합니다. 어떻게 작동합니까?
rsync는 디렉토리의 내용을 재귀 적으로 비교할 때 대상 전용 파일을 삭제합니다.
그런 다음 'tosync'의 파일이 소스 디렉토리에 상대적이어야합니다.
예제를 기반으로 필요한 동작을 얻으려면 다음과 같이 작동합니다.
echo 'only_left' > /tmp/sync/tosync
rsync --dry-run --itemize-changes \
--delete --recursive \
--include-from=/tmp/sync/tosync \
--exclude=* /tmp/sync/left/ /tmp/sync/right/
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다