使用 ETA 进行 Linux 文件复制?

使用 ETA 进行 Linux 文件复制?

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

有什么建议吗?

答案1

使用rsync --human-readable --progress

对于单个文件和块设备,还有pv。如果你真的需要一个准确的进度条,请尝试使用tarpv — 如下所示:

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; }

但请注意,GNUtar尚不支持 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选项。

答案2

相反,dd我会建议pv,例如:

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

答案3

你试过了吗rsync -P?如果你正在使用dd,例如tar -cf - src | dd | (cd dest; tar -xf -)你应该能够使用Ctrl-T(SIGINFO)来查看你的进度。

相关内容