rsync如何知道哪些文件被更改,哪些不是? 它是否在文件的任何地方logging数据?
因为我想要做增量备份,但首先它会传输所有文件。
所以我的主要问题是:如果我通过FTP上传初始文件,而不是通过rsync 。 rsync仍然会跳过那些现有的文件,或者它会在第一次运行时上传所有的文件。
Rsync有一些标志,控制着它的内容,以及它将拷贝到目的地的内容。 大多数情况下使用“-a”标志,这是“存档”标志,这可能是你想要的。 使用“-av”标志运行rsync并使其对要备份的数据执行首次运行。 下一次运行时,它会对文件执行块校验和,只复制在现有文件上已修改的部分,复制新文件并删除不再存在的文件。 检查“-a”选项部分:
http://linux.die.net/man/1/rsync
第一次运行将是BandWidth密集型的,下面的运行很可能是处理器密集型的,但与初始运行相比使用的带宽很小。 除非你的数据集有很多stream失。
Rsync并不关心你如何获得源文件或目标目录中的文件,它只会复制这两者之间的变化,除非你添加标志来做不同的事情。
如果要logging更改的内容,可以使用“–log-file”选项。 总而言之,这听起来像你想要的东西:
rsync -av --log-file=/var/log/rsync.log -e "ssh -l backup-user" backup-user@source-machine::module /nas01/backups
rsync不会logging任何数据,它会检查文件修改时间戳,然后检查内容。 如果你先通过ftp上传,那么rsync将不会重新传输所有的数据,但可能会通过所有的内容和修复时间戳。 但不会再有大的转移。
rsync不会做'增量',它更像'差异'。 它不会传输变化 (假定一些先前运行的知识),它会传递差异 (通过比较源文件和目标文件)
这个过程的简化:
也许我很迂腐,但增量备份意味着你有一个完整的备份第一。 然后,您备份自备份以来更改的文件。 然后,您将备份自上一次备份以来发生更改的备份,因此您需要完整备份以及自该备份以来的所有增量备份。
所以, 只使用归档模式不是增量备份 。 我认为这个区别很重要,因为这意味着你不能在更改之前及时获取文件 。
如果您想要执行真正的增量备份,则可以使用诸如--backup-dir选项。 这里有一个例子。
如果真正的问题是“我想通过rsync进行增量备份”,则有几个选项可用。 我使用Dirvish:
恢复很容易,因为它为您提供快照:它使用硬链接为您提供完整的快照,同时节省文件相同的空间。 在内部,它使用rsync的–link-dest选项:
--link-dest=DIR hardlink to files in DIR when unchanged
由于它使用rsync,它也可以节省networking带宽(从而节省时间),因为这些变化非常小。 如果你有tar和sneakernet一个本地创build的dirvish图像第一,如果你有很多的文件和一个缓慢的链接,它也可以。