我正在使用rsync和选项
-r for recursive -l copy symlinks as symlinks -t preserve modification time -D preserve devices and specials -v verbose --prune-empty-dirs
源FS是ext4,目标是XFS.我复制了几百个文件夹,介于几百个演出到几个TB之间,它们都在不到1GB的大小差异范围内.但是这个特定的文件夹在源代码上是264GB,一旦我在它上面进行rsync,它就是286GB.这是一个巨大的差异,我不知道它有什么问题.
如果源ext4 FS有一些损坏,它是否可能没有报告正确的磁盘使用情况?我正在使用’du -skh’.
我删除了整件事并重新启动了3次,结果相同.
解决方法
rsync FAQ页面列出了这些原因:
https://sanitarium.net/rsyncfaq/#differentsizes
对于少量文件,您可以执行diff -r / mnt / data / mnt / data-BACKUP.但是,如果在中途停止,则无法从停止的位置重新启动.较旧的diff程序不能很好地处理二进制文件.
对于大量文件,我建议计算所有文件的哈希值并查找差异.这样,如果过程停止或中断,您可以继续没有太大困难.
以此脚本为例:
https://github.com/TomOnTime/tomutils/blob/master/bin/md5tree
md5tree /mnt/data >/var/tmp/list.orig md5tree /mnt/data-BACKUP >/var/tmp/list.backup # NOTE: For these next 2 lines TAB means press the TAB key. sort -t'TAB' -k6 </var/tmp/list.backup >/var/tmp/list.backup.sorted sort -t'TAB' -k6 </var/tmp/list.orig >/var/tmp/list.orig.sorted diff /var/tmp/list.orig.sorted /var/tmp/list.backup.sorted