这只是一个“我感到好奇”的问题。当本地同步时(即从同一主机上的一个驱动器到另一个驱动器),rsync 如何知道哪些文件不值得传输?我猜是不做完整的文件比较(因为那太昂贵了)。它是否只进行简单的检查,例如:
- 文件大小
- 修改时间
如果是这样,我猜通过更改文件内容、保持大小并重置修改时间(如果可能的话)可以很容易地欺骗 rsync。
答案1
这是一个普遍的误解 - 使用rsync
.进行增量传输rsync
旨在实现最快的复制,而不一定需要进行增量复制。要进行增量复制,您需要进行校验和。现在,“rsync”不会检查要传输哪些文件,但会检查可以跳过哪些文件。通常会检查发送方的大小/mtime 并与接收端进行比较。
您rsync
可以选择对每个文件进行校验(我认为是的--checksum
)。当然这会很慢......
答案2
Rsync 不执行“增量”,它更像是“差异”。它不会传输更改(假设了解之前的运行),它会传输差异(通过比较源文件和目标文件)
- 首先检查文件大小、创建/修改日期、标志...如果全部相同,则跳过该文件。
- 如果目标上没有该名称的文件,则只需复制整个文件。
- 如果目标上有文件,它会计算文件每 2KB 的校验和并传输给发送方。
欲了解更多信息,请参阅 Rsync 手册页。