太长了;
运行后rsync -aPc --no-inc-recursive --stats <source> <destination>
文件有所不同。
我正在修复我的家庭实验室 NAS,我想验证这些文件是否完全相同。
我的系统规格:
- openmediavault 5.6.13-1 (Debian) 在 Proxmox VM 中运行
- 源文件系统:EXT4
- 目标文件系统:EXT4
- 驱动器通过 SATA 电缆连接到主板
我创建了一个在后台运行的脚本。它首先同步文件,然后比较它们以验证备份:
echo "rsync /documents"
rsync -aPc --no-inc-recursive --stats /srv/dev-disk-by-uuid-ID1/documents /srv/dev-disk-by-uuid-ID2
echo "rsync /photos"
rsync -aPc --no-inc-recursive --stats /srv/dev-disk-by-uuid-ID1/photos /srv/dev-disk-by-uuid-ID2
echo "rsync /movies"
rsync -aPc --no-inc-recursive --stats /srv/dev-disk-by-uuid-ID1/movies /srv/dev-disk-by-uuid-ID2
echo "rsync /music"
rsync -aPc --no-inc-recursive --stats /srv/dev-disk-by-uuid-ID1/music /srv/dev-disk-by-uuid-ID2
echo "rsync /downloads"
rsync -aPc --no-inc-recursive --stats /srv/dev-disk-by-uuid-ID1/downloads /srv/dev-disk-by-uuid-ID2
echo "cmp all start"
find /srv/dev-disk-by-uuid-ID1 -type f -exec sh -c '
for f; do
cmp "$f" /srv/dev-disk-by-uuid-ID2"${f#/srv/dev-disk-by-uuid-ID1}"
done
' sh {} +
echo "cmp all finish"
cmp 命令给了我一些“错误”,例如:/srv/dev-disk-by-uuid-ID1/photos/DSC01010.ARW /srv/dev-disk-by-uuid-ID2/photos/DSC01010.ARW differ: byte 70406147, line 285859
。
是什么原因导致这些问题?
如何确保文件复制正确?
答案1
rsync
我见过的所有错误都是由 RAM 故障或文件系统损坏(有一次是松动的 SCSI 电缆)引起的。您可以使用 Memtest86+ 检查 RAM 并e2fsck
在文件系统上运行以查找/修复问题。
确保所有硬件连接器均已就位并正常工作(SCSI/IDE/SATA/USB 电缆松动)
如果您过度使用 USB 记忆棒rsync
,这些记忆棒会随着时间的推移而磨损,并且通常不会在系统启动时进行 fsck,因此不容易检测到错误。一个简单的方法e2fsck/fsck
也会有所帮助。