rsync操作在文件级别是原子的吗?

vir*_*tor 15 rsync synchronization atomic

我试图弄清楚如果rsyncing文件是原子的.我找不到任何关于它的确认.由于rsync只能发送增量,我的印象是它也只更新了部分实时文件.

在另一个挂起DJB建议rsync同步实时.cdb文件,我发现这篇文章(http://lists.samba.org/archive/rsync/2002-April/002210.html),这两个帖子都暗示新文件是创建,然后移动到正确的位置.

有人能指出我在官方消息来源确认其中一个吗?

Ira*_*oke 15

Rsync创建一个新的临时文件,该文件将包含本地(接收)副本中的块以及发送副本所需的任何块.完成后,临时文件移动到位替换原始文件.

详细信息在这里;

http://rsync.samba.org/how-rsync-works.html

  • “考虑”?我认为原子与非原子应该是事实问题,而不是意见问题?:) 您的意思是说,在某些情况下,目录(本地磁盘上)中的文件重命名*不是*原子的?如果是这样,那会发生在什么时候? (3认同)
  • 你没有回答实际问题。– 这是否意味着每个文件的更新都是原子的? (2认同)
  • 是的,如果您认为同一目录中的文件移动操作是原子的。 (2认同)
  • @zrajm:是的,这取决于,甚至在这里查看更根本的问题是和否答案:/sf/ask/493839111/ (2认同)

sor*_*rin 1

有一个 perl 脚本应该添加此功能: http://www.opensource.apple.com/source/rsync/rsync-40/rsync/support/atomic-rsync

问题是我尝试测试它但它不起作用。还有一些东西,因为从 URL 来看,它看起来像是与 rsync 4.0 相关的东西,而 rsync 的当前版本是 2.6.9 !