我想我可以将源目录中的文件数与cp进展中的目标目录中的文件数进行比较,或者可以用文件夹大小来代替?我试图找到示例,但所有bash进度条似乎是为复制单个文件而编写的。我想复制一堆文件(或目录,如果前者不可能)。
答案 0 :(得分:54)
您也可以使用rsync
代替cp
,如下所示:
rsync -Pa source destination
这将为您提供进度条和预计完成时间。非常方便。
答案 1 :(得分:22)
在执行文件的递归副本时显示进度条&文件夹&子文件夹(包括链接和文件属性),您可以使用gcp
(通过运行&#34轻松安装在Ubuntu和Debian中; sudo apt-get install gcp"):
gcp -rf SRC DEST
以下是复制大文件夹时的典型输出:
Copying 1.33 GiB 73% |##################### | 230.19 M/s ETA: 00:00:07
请注意,它只显示整个操作的一个进度条,而如果您希望每个文件只有一个进度条,则可以使用rsync
:
rsync -ah --progress SRC DEST
答案 2 :(得分:7)
您可以查看工具vcp
。这是一个简单的复制工具,有两个进度条:一个用于当前文件,一个用于整体。
修改强>
以下是来源的链接:http://members.iinet.net.au/~lynx/vcp/ 可以在此处找到管理页面:http://linux.die.net/man/1/vcp
大多数发行版都有一个包。
答案 3 :(得分:4)
此处有另一种解决方案:使用工具bar
您可以这样调用它:
#!/bin/bash
filesize=$(du -sb ${1} | awk '{ print $1 }')
tar -cf - -C ${1} ./ | bar --size ${filesize} | tar -xf - -C ${2}
你必须通过tar,并且它对小文件是不准确的。您还必须注意目标目录的存在。但这是一种方式。
答案 4 :(得分:2)
简单的unix 方式是转到目标目录并执行watch -n 5 du -s
。也许通过显示为一个酒吧使它更漂亮。这可以在您只拥有标准unix工具且没有安装其他文件的范围的环境中提供帮助。 du-sh是关键,手表是每5秒做一次。
优点:适用于任何unix系统缺点:没有进度条
答案 5 :(得分:1)
有一个工具pv
可以做到这一点:http://www.ivarch.com/programs/pv.shtml
在apt
中有一个ubuntu版本答案 6 :(得分:1)
我首选的选项是Advanced Copy,因为它使用原始的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中。您可以选择替换现有命令:
$ sudo cp src/cp /usr/local/bin/cp
$ sudo cp src/mv /usr/local/bin/mv
答案 7 :(得分:0)
像
这样的东西find . -type f | pv -s $(find . -type f | wc -c) | xargs -i cp {} --parents /DEST/$(dirname {})
它找到当前目录中的所有文件,通过PV管道,同时给PV估计大小,以便进度表工作,然后使用--parents标志将其传递给CP命令,以便DEST路径与SRC路径匹配
我还有一个问题需要解决,如果你发出这个命令
find /home/user/test -type f | pv -s $(find . -type f | wc -c) | xargs -i cp {} --parents /www/test/$(dirname {})
目标路径变为/ www / test / home / user / test / ....文件...我不知道如何告诉命令摆脱' / home / user / test& #39;部分。这就是为什么我必须从SRC目录中运行它。
答案 8 :(得分:0)
答案 9 :(得分:0)
在下面的我的git存储库中检查 progress_bar 的源代码
https://github.com/Kiran-Bose/supreme
还尝试使用自定义bash脚本包 supreme 来验证进度条如何与 cp 和 mv 指令一起使用
功能概述
(1)打开应用 ---- Firefox ----计算器 ----设置
(2)管理文件 - - 搜索 - - 导航 ----快速访问
|----Select File(s)
|----Inverse Selection
|----Make directory
|----Make file
|----Open
|----Copy
|----Move
|----Delete
|----Rename
|----Send to Device
|----Properties
(3)管理电话 ----从手机移动/复制 ----移动/复制到手机 ----同步文件夹
(4)管理USB ----从USB移动/复制 ----移动/复制到USB