解决方法
使用rsync –human-readable –progress.
对于单个文件和块设备,还有pv.如果你真的需要一个准确的进度条,尝试使用tar与pv – 这样的事情:
source=/the/source/directory target=/the/target/directory size=$(du -sx "$source") cd "$source" find . xdev -depth -not -path ./lost+found -print0 \ | tar --create --atime-preserve=system --null --files-from=- \ --format=posix --no-recursion --sparse \ | pv --size ${size}k \ | { cd "$target"; \ tar --extract --overwrite --preserve-permissions --sparse; }
但是,请注意,GNU tar还不支持ACL或扩展属性,因此如果要复制使用“acl”或“xattrs”选项挂载的文件系统,则需要使用rsync(使用“–acls”和“ – ”) –xattrs“选项”.就个人而言,我使用:
rsync --archive --inplace --hard-links --acls --xattrs --devices --specials \ --one-file-system --8-bit-output --human-readable --progress /source /target
还要考虑是否要使用–delete和/或–numeric-ids选项.