我在同一个网络中的两台 Linux 服务器之间传输文件时遇到了问题。在源服务器上,我的目录中有 40055 个小文件,目录大小为 34 GB。我尝试使用 rsync 命令传输这些文件:
rsync -ah --progress --inplace /dir/dir_with_files user@server:/dir/destination_dir
传输后,目标服务器上的目录大小为 108 GB,而不是 34 GB
分区上的块相同。
我用 scp 做了同样的事情,但问题是一样的。
答案1
为了完整保留所有内容,请尝试:
rsync --archive --hard-links --sparse-files --acls --xattrs source dest
然后,为了验证正确性,您可以执行类似以下操作(假设文件名中没有空格):for file in *; do md5sum $file >> /tmp/sums.txt; done
然后diff
在两个服务器上执行 sums.txt。不过,md5summing 需要一段时间。
如果文件名中有空格,请使用find
and/or构造一些内容xargs
顺便问一下,怎么du --bytes -hs
说呢?这样,你就排除了块大小。