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

rsync真的能更快地处理已经更改的文件吗?

  •  2
  • Angelo  · 技术社区  · 15 年前

    为什么我不能相信rsync能像cp一样快呢?(我忽略了开销的微不足道的差异。)

    如果我生成一个文件:cp-a testfile-100M destfile

    $rsync-av测试文件-100M目标文件 发送增量文件列表

    发送56字节接收12字节8.00字节/秒

    但这只是因为rsync正在检查大小和时间戳并跳过文件。如果我只是改变时间戳怎么办?

    $touch测试文件-1亿

    $rsync-av testfile-100M destfile发送增量文件列表 测试文件-100M

    总尺寸为104857600加速比为1.00

    还要注意,即使加速比是1,初始拷贝也要比最终rsync花费大约1/4的时间才能完成,即使内容完全相同。怎么回事?只是做比较的开销吗?

    如果是这样,那么rsync什么时候能提供性能优势呢?只有当两边的文件完全相同时?

    4 回复  |  直到 9 年前
        1
  •  3
  •   poolie    11 年前

    对于本地文件,如果大小或时间发生了更改,rsync默认情况下只复制整个文件,而不使用delta算法。你可以用 --no-whole-file

    对于在不更改文件的情况下触摸文件的特定情况:

    • 如果你给 --size-only

    • 如果你给 --checksum

        2
  •  2
  •   Wodin    9 年前

    当源和目标都是本地安装的文件系统时,如果时间戳或大小不匹配,rsync只复制文件。Rsync在有大文件和小差异的地方获胜,它们在被低带宽链接分隔的机器上。

    编辑:既然有人觉得有必要否决这个古老的答案。。。至于为什么本地文件上的rsync可能比cp慢,似乎没有任何好的理由。

        3
  •  1
  •   Angelo    9 年前

    答案似乎是rsync执行了一些额外的步骤,以使文件保持一致状态,而不是在操作时处于“部分传输”状态。使用 --inplace

        4
  •  0
  •   Geremia    13 年前

    有趣的是,对我来说,rsync比cp复制到外部USB驱动器快4倍。