代码之家  ›  专栏  ›  技术社区  ›  cclloyd

Rsync在传输前计算文件数?

  •  0
  • cclloyd  · 技术社区  · 7 年前

    当使用rsync在多个文件夹中传输大量小文件时,它往往会留在周围 ir-chk=1000/xxxxx ,xxxxx在发现新文件时会不断计数,在最后几个文件夹中进行检查之前,要检查的数量保持在1000左右。

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

    我用来复制的命令是:

    rsync -av --progress source dest
    
    1 回复  |  直到 7 年前
        1
  •  16
  •   Feng    7 年前
    rsync -av --progress --dry-run --stats source dest
    
    • 选项 --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)
    

    获取将传输的文件数

    rsync -av --progress --dry-run --stats source dest | 
      fgrep 'Number of files' | 
      cut -d' ' -f4 | 
      tr -d ,
    
        2
  •  0
  •   asmoore82    4 年前

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

    --no-i-r
    

    rsync手册页中的详细信息:

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

    有些选项要求rsync知道完整的文件列表,因此 禁用增量递归模式。这些措施包括: --删除之前 , --删除后 , - -修剪空的树枝 --延迟更新 .因此,当您指定 --删除 现在 --删除期间 当连接的两端至少为3.0.0时(使用 --德尔 --删除期间 明确请求此改进的删除模式)。另见 --删除延迟 这是一个比使用更好的选择 --删除后 .

    可以使用 --没有 选项或其较短的选项 --no-i-r 别名

    推荐文章