Rsync在传输之前计算文件计数?

ccl*_*oyd 2 bash rsync

当使用rsync在许多文件夹中传输许多小文件时,它往往会停留在ir-chk=1000/xxxxx,其中xxxxx在发现新文件时会不断增加计数,要检查的数量一直保持在1000左右,直到最后一个文件夹中为止。

如何在复制之前检查整个文件计数?

我用来复制的命令是:

rsync -av --progress source dest
Run Code Online (Sandbox Code Playgroud)

Fen*_*eng 5

rsync -av --progress --dry-run --stats source dest
Run Code Online (Sandbox Code Playgroud)
  • Option --dry-run不传输任何文件,但会显示要传输多少字节。
  • 选项--stats显示摘要。

样本输出:

...
tests/
tests/__init__.py
tests/test_config.py

Number of files: 5,033 (reg: 2,798, dir: 2,086, link: 149)
Number of created files: 5,032 (reg: 2,798, dir: 2,085, link: 149)
Number of deleted files: 0
Number of regular files transferred: 2,798
Total file size: 26,035,530 bytes
Total transferred file size: 26,032,322 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 0
File list generation time: 0.004 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 158,821
Total bytes received: 17,284

sent 158,821 bytes  received 17,284 bytes  117,403.33 bytes/sec
total size is 26,035,530  speedup is 147.84 (DRY RUN)
Run Code Online (Sandbox Code Playgroud)

获取将要传输的文件数

rsync -av --progress --dry-run --stats source dest | 
  fgrep 'Number of files' | 
  cut -d' ' -f4 | 
  tr -d ,
Run Code Online (Sandbox Code Playgroud)


小智 5

从版本 3.0.0 开始,您可以使用此选项显式关闭增量递归:

--no-i-r
Run Code Online (Sandbox Code Playgroud)

rsync 手册页的详细信息:

从rsync 3.0.0开始,使用的递归算法现在是增量扫描,使用的内存比以前少得多,并在前几个目录的扫描完成后开始传输。这种增量扫描只影响我们的递归算法,并不会改变非递归传输。也只有当传输两端的版本至少为 3.0.0 时才可能。

某些选项需要 rsync 才能知道完整的文件列表,因此这些选项禁用增量递归模式。其中包括:--delete-before--delete-after--prune-empty-dirs--delay-updates。因此,当连接两端至少为 3.0.0 时,指定--delete时的默认删除模式现在为--delete-during (使用--del--delete-during来请求这种改进的删除模式)明确)。另请参阅--delete-delay选项,它是比使用--delete-after更好的选择。

可以使用--no-inc-recursive 选项或其较短的--no-ir别名来禁用增量递归。