目录级别的原子rsync,具有最小的临时存储

时间:2013-11-29 08:26:10

标签: rsync atomicity

我在远程主机(在目录中)有一些文件,我想在目录级别以原子方式执行rsync以在本地主机上提取文件(在分布式设置中)。我可以想到的一种方法是,当我可以在本地主机上备份文件然后用新文件替换旧文件时,这是一个非常简单的情况,但就磁盘空间而言,这种方法效率不高。例如文件大小为10GB,差异只有100 MB。

有没有办法在本地主机上的临时位置存储rsync diff,然后更新本地主机上的文件?

1 个答案:

答案 0 :(得分:5)

你可以这样做:

  1. 在本地主机和远程主机中的临时文件夹之间运行rsync。要确保只获取diff,请使用--link-dest选项并链接到远程主机中的真实文件夹。

    你基本上有这样的命令:

      

    rsync --link-dest =“/ var / www”--archive“/ localhost / path / www /”“remote@example.com:/ var / www_update_20131129”

    (/ var / www是要更新的文件,/ var / www_update_20131129 /是“temp”文件夹)

  2. 完成rsync操作后,您可以在远程主机中交换www_update_20131129 /和真实的www /文件夹(可能通过软链接www /到www_update_20131129 /)。