rsync 如何知道要传输哪些文件?

rsync 如何知道要传输哪些文件?

这只是一个“我感到好奇”的问题。当本地同步时(即从同一主机上的一个驱动器到另一个驱动器),rsync 如何知道哪些文件不值得传输?我猜是不做完整的文件比较(因为那太昂贵了)。它是否只进行简单的检查,例如:

  • 文件大小
  • 修改时间

如果是这样,我猜通过更改文件内容、保持大小并重置修改时间(如果可能的话)可以很容易地欺骗 rsync。

答案1

这是一个普遍的误解 - 使用rsync.进行增量传输rsync旨在实现最快的复制,而不一定需要进行增量复制。要进行增量复制,您需要进行校验和。现在,“rsync”不会检查要传输哪些文件,但会检查可以跳过哪些文件。通常会检查发送方的大小/mtime 并与接收端进行比较。

rsync可以选择对每个文件进行校验(我认为是的--checksum)。当然这会很慢......

答案2

Rsync 不执行“增量”,它更像是“差异”。它不会传输更改(假设了解之前的运行),它会传输差异(通过比较源文件和目标文件)

  • 首先检查文件大小、创建/修改日期、标志...如果全部相同,则跳过该文件。
  • 如果目标上没有该名称的文件,则只需复制整个文件。
  • 如果目标上有文件,它会计算文件每 2KB 的校验和并传输给发送方。

欲了解更多信息,请参阅 Rsync 手册页。

https://linux.die.net/man/1/rsync

相关内容