rsync가 중단되면 소스 파일이 손상됨

rsync가 중단되면 소스 파일이 손상됨

클라이언트에서 서버로 폴더를 동기화하는 스크립트를 실행 중입니다.

스크립트에 적용되는 구문은 다음과 같습니다.

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필요하지도 적절하지도 않습니다.

관련 정보