클라이언트에서 서버로 폴더를 동기화하는 스크립트를 실행 중입니다.
스크립트에 적용되는 구문은 다음과 같습니다.
rsync -avzP --append-verify --delete -e "SSH parameters" source_dir user@host:destination
그러나 네트워크 문제로 인해 rsync가 중단된 경우 rsync를 다시 시작하면 소스 파일이 손상됩니다.
예: 전송 전 소스 파일입니다.
root@localhost:~# ls -Alth
total 1.1G
-rw-r--r-- 1 root root 1.0G Nov 12 08:56 testfile1GB
소스 파일 전송이 중단된 후 다시 시작됩니다.
root@localhost:~# ls -Alth
total 152M
rw------- 1 root root 152M Nov 15 17:46 testfile1GB
현재 rsync 버전 3.1.1 프로토콜 버전 31을 사용하고 있습니다.
rsync 버전은 업데이트할 수 없습니다.
제안 사항이 있으면 알려주시기 바랍니다.
답변1
사용 --remove-source-files
하지 않는 한 소스의 어떤 것도 변경되지 않습니다 rsync
(그리고 그런 경우에도 대상에 정확한 복사본이 있음이 확인된 경우에만 소스 파일을 삭제합니다). 따라서 대상에 작성한 변경 사항은 다른 방식으로 소스에 영향을 미쳐야 합니다.
user@host:destination:
실수로 소스 파일을 덮어쓰지 않았 는지 다시 확인하세요 . 즉, 호스트가 클라이언트가 아닌지, 호스트가 클라이언트와 동일한 파일 시스템을 공유하지 않는지(예: NFS 또는 Samba 사용) 확인하세요. 이를 다음과 같이 확인할 수 있습니다.
예제와 동일한 디렉터리에 있는 로컬 시스템에서 source_dir
필요에 따라 교체하세요 .
touch source_dir/620014.tmp
ls -ld source_dir/620014.tmp
원격 시스템은 적절하게 source_dir
교체될 수 있습니다 destination
. ( rsync
실제로 명령이 있는 source_dir/
경우 source_dir
명령이 source_dir
해당 경로에 포함되어서는 안 됩니다.)
ssh -nq user@host ls -ld destination/source_dir/620014.tmp
동일한 파일을 얻는 경우 두 시스템 모두 동일한 파일 시스템을 공유하며 파일 시스템은 rsync
필요하지도 적절하지도 않습니다.