Linux - 文件复制后大小不一致的问题

问题:通过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?

你可能感兴趣的:(Linux)