운영 체제는 Debian 10, rsync 버전 3.1.3입니다. 나는 다음과 같이 rsync를 실행합니다.
time rsync -ar --delete --info=progress2 --files-from=filelist.txt . /path/to/dest
이렇게 하면 파일이 복사되지만 삭제된 콘텐츠는 제거되지 않습니다. (src에서 완전히 제거되거나 제 경우에는 filelist.txt에서 제거되거나) 이것은 큰 문제입니다. 내가 찾은 유일한 해결 방법은 단순히 전체 대상을 삭제하고 모든 것을 다시 복사하는 것입니다. 그러나 이 방법은 시간이 많이 걸리고 기본적으로 처음에 rsync를 사용하는 요점을 무효화합니다.
이것은 버그입니까? --delete 플래그를 존중하여 rsync가 올바르게 작동하도록 하려면 어떻게 해야 합니까?
편집하다:
예를 들어:
- filelist.txt에 "foo"가 포함되어 있으면 /path/to/dest에 "foo"가 포함됩니다.
- filelist.txt에 "foo"와 "bar"가 포함되어 있으면 /path/to/dest에 "foo"와 "bar"가 포함됩니다.
- filelist.txt에 "foo", "bar" 및 "bat"가 포함되어 있으면 /path/to/dest에는 "foo", "bar" 및 "bat"가 포함됩니다.
- 등
"foo", "bar", "bat" 등이 디렉토리라고 가정합니다.
답변1
누락된 매개변수를 제거하려면 rsync에 지시해야 합니다.
rsync -arv --delete-missing-args --delete --info=progress2 --files-from=filelist.txt . /path/to/dest
- 따라서 디렉토리를 삭제하면 디렉토리도 삭제
foo
됩니다 ./path/to/dest
--delete-missing-args
foo
여전히 포함되어야 합니다filelist.txt
.- 이 매개변수는 rsync가 폴더의 파일을
--delete
삭제하도록 허용하는 데 필요합니다.foo
답변2
습관. rsync
파일 목록에 해당 파일이 없거나 비어 있기 때문에 파일/디렉터리는 삭제 되지 않습니다 .
이를 사용하는 경우 --files-from
소스에서 대상으로 나열된 파일만 동기화를 시도합니다.
전달된 파일 목록에 파일이 존재하지 않는다고 해서 파일이 삭제되지는 않습니다 --files-from
.
--delete 작업을 수행하려면 실제 소스 경로를 사용해야 합니다. 이와 같이
rsync -ar --delete path/to/src path/to/destination