![Rsync 显示单个文件的进度](https://linux22.com/image/797961/Rsync%20%E6%98%BE%E7%A4%BA%E5%8D%95%E4%B8%AA%E6%96%87%E4%BB%B6%E7%9A%84%E8%BF%9B%E5%BA%A6.png)
我正在使用 rsync 上传/下载一个相当大的文件 (20Gb)。我知道 --progress 选项,但它在我的情况下只是在最后显示结果。
我的问题是,在连接不稳定的情况下,我不知道它是否仍在下载/上传或出了什么问题。有没有办法显示单个文件的进度条?类似于 wget 默认执行的操作?
谢谢!
答案1
这也许就是您所追求的。
% rsync -avvz --times --stats --checksum --human-readable --acls \
--itemize-changes --progress \
--out-format='[%t] [%i] (Last Modified: %M) (bytes: %-10l) %-100n' \
/usr/include/glib-2.0 my-glib-copy/
交换机细分如下:
- -avvz= 存档,详细 x 2,压缩
- --次= 保留修改时间
- --统计= 提供一些文件传输统计数据
- --校验和= 根据校验和跳过,而不是根据 mod-time 和 size 跳过
- --人类可读= 以人类可读的格式输出数字
- --acls= 保留 ACL(隐含 -p)
- --itemize-changes= 输出所有更新的变更摘要
- - 进步= 显示传输过程中的进度
- --输出格式='[%t] [%i](上次修改:%M)(字节:%-10l)%-100n'
- %吨= 当前日期时间
- %我= 正在更新的内容的详细列表
- %M= 文件的最后修改时间
- %-10升= 文件的长度(以字节为单位)(-10 用于对齐和精度)
- %-100n= 文件名(缩写形式;目录末尾带有“/”)(-100 用于对齐和精度)
笔记:请参阅手册页rsync
和rsyncd.conf
以获取有关上述开关的完整详细信息。
上述命令生成以下记录:
sending incremental file list
delta-transmission disabled for local transfer or --whole-file
[2012/12/23 21:34:46] [cd+++++++++] (Last Modified: 2010/12/19-08:13:31) (bytes: 4096 ) glib-2.0/
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:30) (bytes: 1511 ) glib-2.0/glib-object.h
1.51K 100% 0.00kB/s 0:00:00
1.51K 100% 0.00kB/s 0:00:00 (xfer#1, to-check=181/183)
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:30) (bytes: 2910 ) glib-2.0/glib.h
2.91K 100% 2.78MB/s 0:00:00
2.91K 100% 2.78MB/s 0:00:00 (xfer#2, to-check=180/183)
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:31) (bytes: 3613 ) glib-2.0/gmodule.h
3.61K 100% 3.45MB/s 0:00:00
3.61K 100% 3.45MB/s 0:00:00 (xfer#3, to-check=179/183)
...
...
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:31) (bytes: 8431 ) glib-2.0/gobject/gvaluecollector.h
8.43K 100% 141.96kB/s 0:00:00
8.43K 100% 141.96kB/s 0:00:00 (xfer#178, to-check=1/183)
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:31) (bytes: 8507 ) glib-2.0/gobject/gvaluetypes.h
8.51K 100% 143.23kB/s 0:00:00
8.51K 100% 143.23kB/s 0:00:00 (xfer#179, to-check=0/183)
total: matches=0 hash_hits=0 false_alarms=0 data=1305506
rsync[2996] (sender) heap statistics:
arena: 540672 (bytes from sbrk)
ordblks: 3 (chunks not in use)
smblks: 7
hblks: 2 (chunks from mmap)
hblkhd: 401408 (bytes from mmap)
allmem: 942080 (bytes from sbrk + mmap)
usmblks: 0
fsmblks: 592
uordblks: 404784 (bytes used)
fordblks: 135888 (bytes free)
keepcost: 134240 (bytes in releasable chunk)
rsync[2999] (server receiver) heap statistics:
arena: 286720 (bytes from sbrk)
ordblks: 2 (chunks not in use)
smblks: 8
hblks: 3 (chunks from mmap)
hblkhd: 667648 (bytes from mmap)
allmem: 954368 (bytes from sbrk + mmap)
usmblks: 0
fsmblks: 672
uordblks: 174480 (bytes used)
fordblks: 112240 (bytes free)
keepcost: 102352 (bytes in releasable chunk)
rsync[2998] (server generator) heap statistics:
arena: 233472 (bytes from sbrk)
ordblks: 4 (chunks not in use)
smblks: 6
hblks: 2 (chunks from mmap)
hblkhd: 401408 (bytes from mmap)
allmem: 634880 (bytes from sbrk + mmap)
usmblks: 0
fsmblks: 448
uordblks: 83152 (bytes used)
fordblks: 150320 (bytes free)
keepcost: 131120 (bytes in releasable chunk)
Number of files: 183
Number of files transferred: 179
Total file size: 1.31M bytes
Total transferred file size: 1.31M bytes
Literal data: 1.31M bytes
Matched data: 0 bytes
File list size: 6.30K
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 350.39K
Total bytes received: 3.43K
sent 350.39K bytes received 3.43K bytes 707.64K bytes/sec
total size is 1.31M speedup is 3.69
rsync 的新版本中有进度条吗?
我遇到了这个SF问题:
答案之一提到在较新版本中rsync
现在支持进度条。它看起来像这样:
% ./rsync -a --info=progress2 /usr .
305,002,533 80% 65.69MB/s 0:00:01 xfr#1653, ir-chk=1593/3594)
这个进度条仍然没有显示传输中各个文件的状态,但它确实显示了整体传输的百分比,这可能会有所帮助。
答案2
rsync -vP
对我有用。
来自手册页:“-P 与 --partial --progress 相同”
答案3
您是否在守护进程模式下使用 rsync?rsync 的默认行为(在 Debian 6 上)就是您请求的。但是,我在 rsyncd.conf 的手册页中发现,守护进程模式下的默认行为是:
传输日志
此参数启用每个文件的下载和上传日志记录,其格式与 ftp 守护程序使用的格式有些相似。守护程序总是在传输结束时记录传输,因此如果传输中止,日志文件中不会有任何提示。
如果您想自定义日志行,请参阅“日志格式”参数。
因此,如果在守护进程模式下使用 rsync,则必须将“传输日志”行添加到 rsyncd.conf。
答案4
我认为 Pipe Viewer 就是您所需要的:https://code.google.com/p/pipeviewer/