使用“ cp”进行复制时,终端机会显示进度条吗?


33

使用cp在终端中复制文件时可以显示进度条吗?


2
…您也可以考虑rsync改用。
阿斯姆斯

有没有办法在不安装任何第三方工具的情况下使用整体进度条来做到这一点?也许是脚本之类的?
rraallvv

Answers:


49

您可以改用rsync。

rsync --progress /copy/from /copy/to

1
Speedwise,rsync或cp哪个更快?
2011年

如果复制的所有文件都不存在于目标位置,则我认为不会有明显的区别。如果目标中确实存在某些文件,则它将有所不同,因为rsync会进行一些检查。在这种情况下,Rsync通常(但不总是)更快。
bahamat 2011年

2
使用rsync -P /copy/from /copy/to相当于rsync --partial --progress /copy/from /copy/to将显示复制进度,并在断开连接时恢复传输。
gh0st

就像cp一样,它需要-r标记来使其不跳过目录
亚历山大-

21

在期间cpCtrlT显示当前百分比(至少在macOS上)


棒极了!
felix021

1
之所以起作用,是因为Ctrl-t发送SIGINFO信号的方式与Ctrl-c发送SIGINT信号的方式相同。例如kill -INFO,如果您不想一直按这些键,则可以在另一个外壳中使用循环来重复该过程。因为是信号,所以它也可以与其他实用程序一起使用ddCtrl-t并且SIGINFO是从BSD继承的。
HTNW

1

如果要使用cp复制大文件或目录,则可以打开“活动监视器”,转到“磁盘”选项卡,然后查找进程“ cp”。在这里,您可以跟踪自上次引导以来已写入的字节数,从而大致了解进度。(作业系统X 10.10)。

希望有帮助!


0
#!/bin/sh
   strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
      | awk '{
        count += $NF
            if (count % 10 == 0) {
               percent = count / total_size * 100
               printf "%3d%% [", percent
               for (i=0;i<=percent;i++)
                  printf "="
               printf ">"
               for (i=percent;i<100;i++)
                  printf " "
               printf "]\r"
            }
         }
         END { print "" }' total_size=$(stat -c '%s' "${1}") count=0

它不是完美的,但是它可以工作...将其放在目录路径中并命名类似。


等等...我该如何运行呢???
daviesgeek 2011年

2
我不记得strace在编写此答案时(2011年7月),OS X是否具有命令,但今天肯定没有。
Tim Ruddick

有什么想法如何在macOS上运行吗?
rraallvv
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.