问题:通过cp或者rsync传输文件后,通过du -s查看到的体积,前后不一致。
原因:https://stackoverflow.com/questions/10364999/file-size-changes-when-using-cp
为了验证文件传输的正确性,可选用下列方法之一
方法一:du默认统计的是block的大小,加上--apparent-size之后统计的就是文件本身大小,但是依然可能对不上,orz...
du -s --apparent-size
方法二:比对两个目录所有文件的hash值是否一样,注意此方法会造成 io.await 飙高...
$ cd ~/dir1
$ find . -type f \( -exec sha1sum "{}" \; \) | sort -k2,2 | sha1sum
$ cd ~/dir2
$ find . -type f \( -exec sha1sum "{}" \; \) | sort -k2,2 | sha1sum
来自: https://unix.stackexchange.com/questions/106275/du-gives-two-different-results-for-the-same-file
方法三:文件复制完后再次执行rsync用checksum特性来比对所有文件的hash值,此方法会造成 io.util 升高,io.await不会…
# -c, --checksum: skip based on checksum, not mod-time & size
# In order to verify all copies you have to do another rsync with --checksum option, they say.
rsync -rac src dst
来自: https://superuser.com/questions/218544/is-there-a-copy-and-verify-command-in-ubuntu-linux
其他参考文章:
du -s -k differences between two identical directories
Copying data over with rsync causes size discrepancies
Different file size after copy
Does rsync verify files copied between two local drives?