代码之家  ›  专栏  ›  技术社区  ›  viraptor

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

  •  15
  • viraptor  · 技术社区  · 14 年前

    我正试图弄清楚rsynching文件是否是原子的。我找不到任何证实。由于rsync只能发送delta,我觉得它也只能更新部分实时文件。

    另一方面,hang-djb建议rsync用于实时同步 .cdb 文件和我找到了这篇文章( http://lists.samba.org/archive/rsync/2002-April/002210.html )这两者都意味着创建了新文件,然后移到正确的位置。

    有人能指认我的官方消息来源吗?

    3 回复  |  直到 13 年前
        1
  •  14
  •   Ira Cooke    13 年前

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

    详情如下:

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

        2
  •  2
  •   Gerald    7 年前

    , rsync 不自动写入文件。

    在传输过程中,正在同一目标目录中创建隐藏的临时文件( .[original-filename].[6-random-characters] )其中包含当前状态下传输的文件。

    如果您在传输过程中丢失了连接,或者 远程同步 遇到其他问题,导致连接关闭, 杀人前 这个 远程同步 进程确保复制临时文件以保留所有已传输的包。您可以简单地重命名临时文件(删除前面的“.”和后面的“.XXXXXX”以获取原始文件名)。

        3
  •  0
  •   sorin    13 年前

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

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