Linux文件复制与ETA?

我在磁盘之间复制大量的文件。 大约有16 GB的数据。 我希望看到进度信息,甚至从命令行看到完成的时间。

有什么build议?

使用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选项。

而不是dd我会build议pv ,例如:

 % tar -cf - INPUT | pv -rbe -s SIZE | tar -xf - -C DEST 

你尝试过rsync -P吗? 如果你使用dd ,比如tar -cf - src | dd | (cd dest; tar -xf -) tar -cf - src | dd | (cd dest; tar -xf -) tar -cf - src | dd | (cd dest; tar -xf -)你应该可以使用Ctrl-T(SIGINFO)来查看你的进度。