자동 백업에 rsync를 사용하는 경우 손상된 소스의 파일 동기화를 방지하려면 어떻게 해야 합니까?
예를 들어:
정기적으로 /source/*.*
다른 물리적 디스크와 자동 동기화 됩니다 . /destination/*.*
파일이 업데이트될 때마다 rsync가 실행될 때 업데이트된 파일을 대상에 복사합니다./source
/destination
하드 드라이브 오류로 인해 손상된 파일 복사를 방지하는 방법은 무엇입니까? 분명히 손상된 파일을 백업 드라이브에 복사하고 싶지 않습니다.
동기화할 항목을 결정하는 두 가지 모드가 있습니다.
파일 체크섬을 수행하기 위한 체크섬 -c
스위치입니다.
-c, --checksum
This changes the way rsync checks if the files have been changed
and are in need of a transfer. Without this option, rsync uses
a "quick check" that (by default) checks if each file’s size and
time of last modification match between the sender and receiver.
This option changes this to compare a 128-bit checksum for each
file that has a matching size. Generating the checksums means
that both sides will expend a lot of disk I/O reading all the
data in the files in the transfer (and this is prior to any
reading that will be done to transfer changed files), so this
can slow things down significantly.
그리고 -u
스위치 플래그:
-u, --update
This forces rsync to skip any files which exist on the
destination and have a modified time that is newer than the
source file. (If an existing destination file has a
modification time equal to the source file’s, it will be updated
if the sizes are different.)
이 경우에는 분명히 -c
원하는 동작이 없을 것입니다 . 소스 파일이 손상된 경우 다른 체크섬을 가지며 백업에 복사됩니다.
내 가정은 이것이 -u
내가 원하는 것을 정확히 수행할 것이라는 것입니다. 손상된 파일은 백업 드라이브의 버전과 mtime이 동일하므로 소스가 손상된 경우 파일이 복사되지 않습니다.
제 질문은 -u
여기에서 파일 복사를 사용하는 것이 충분한 백업 전략입니까? 입니다.
아니면 다른 접근 방식이나 완전히 다른 도구를 고려해야 합니까?
답변1
인식할 수 없습니다.소스가 손상되었습니다.". 당신이 할 수 있는 일은 더 이상 읽을 수 없는 하나 이상의 디스크 블록이 기록된 파일을 식별하는 것입니다. 그러나 이는 당신의 기준을 충족하는 가능한 세트의 하위 집합일 뿐입니다.
제안한 대로 -u
( ) 플래그는 대상에서 최신 수정 시간이 있는 파일을 읽고 업데이트하지 않도록 --update
지시합니다.rsync
다른 속성과 상관없이또는 수정 시간과 크기가 동일합니다.
더 나은 접근 방식은 rsnapshot
ext4 대상(NTFS 또는 FAT/exFAT 아님)에 백업 복사본을 만들고 smartctl
소스에서 SMART 디스크 검사를 구현하는 것입니다.