我怎样才能做一个进度条(cp复制一个目录)?

我想我可以将源目录中的文件数量与cp进展时目标目录中的文件数量进行比较,也可以使用文件夹大小来进行比较? 我试图find例子,但所有的bash进度条似乎是为复制单个文件而写的。 我想复制一堆文件(或一个目录,如果前者是不可能的)。

你也可以使用rsync而不是像这样的cp

rsync -Pa source destination

这将给你一个进度条和预计完成时间。 非常便利。

要在recursion复制文件和文件夹和子文件夹(包括链接和文件属性)时显示进度条,可以使用gcp (通过运行“sudo apt-get install gcp”可以轻松安装在Ubuntu和Debian中):

 gcp -rf SRC DEST 

以下是复制文件的大文件夹时的典型输出:

 Copying 1.33 GiB 73% |##################### | 230.19 M/s ETA: 00:00:07 

请注意,它只显示整个操作的一个进度栏,而如果您想为每个文件使用一个进度栏,则可以使用rsync

 rsync -ah --progress SRC DEST 

你可以看看工具vcp 。 这是一个简单的复制工具,有两个进度条:一个用于当前文件,另一个用于整体。

编辑

这里是链接的来源: http ://members.iinet.net.au/~lynx/vcp/ Manpage可以在这里find: http : //linux.die.net/man/1/vcp

大多数发行版都有一个包。

这里另一个解决scheme:使用工具bar

你可以像这样调用它:

 #!/bin/bash filesize=$(du -sb ${1} | awk '{ print $1 }') tar -cf - -C ${1} ./ | bar --size ${filesize} | tar -xf - -C ${2} 

你必须通过焦油,这将是不准确的小文件。 你也必须注意目标目录的存在。 但这是一种方式。

一个简单的unix方法是去目的地目录,并watch -n 5 du -s 。 也许通过显示为一个酒吧更漂亮。 这可以帮助您在只有标准的unix utils的环境中安装额外的文件。 du-sh是关键,手表是每5秒钟做一次。 优点 :适用于任何Unix系统缺点 :没有进度条

有一个工具pv来做这件事: http : //www.ivarch.com/programs/pv.shtml

在apt中有一个ubuntu版本

我的首选是高级复制 ,因为它使用原始的cp源文件。

 $ wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.21.tar.xz $ tar xvJf coreutils-8.21.tar.xz $ cd coreutils-8.21/ $ wget --no-check-certificate https://raw.githubusercontent.com/atdt/advcpmv/master/advcpmv-0.5-8.21.patch $ patch -p1 -i advcpmv-0.5-8.21.patch $ ./configure $ make 

新程序现在位于src / cp和src / mv中。 您可以selectreplace现有的命令:

 $ sudo cp src/cp /usr/local/bin/cp $ sudo cp src/mv /usr/local/bin/mv 

感觉如何?

 find . -type f | pv -s $(find . -type f | wc -c) | xargs -i cp {} --parents /DEST/$(dirname {}) 

它查找当前目录中的所有文件,通过PV传递给PV的pipe道,估计大小以便进度表工作,然后用–parents标志将其传递给CP命令,以便DESTpath与SRCpath相匹配。

我还没有克服的一个问题是,如果你发出这个命令

 find /home/user/test -type f | pv -s $(find . -type f | wc -c) | xargs -i cp {} --parents /www/test/$(dirname {}) 

目标path变为/ www / test / home / user / test / ….文件…我不确定如何告诉命令摆脱'/ home / user / test'部分。 这就是为什么我必须从SRC目录中运行它。

要添加另一个选项,您可以使用cpv 。 它使用pv来模仿cp的用法。

它的工作原理像pv但你可以用它来recursion复制目录

在这里输入图像说明

你可以在这里得到它