Are rsync operations atomic at file level?

前端 未结 3 1200
粉色の甜心
粉色の甜心 2020-12-20 11:38

I\'m trying to figure out how if rsyncing files is atomic. I couldn\'t find any confirmation about it. Due to rsync being able to send only deltas, I was under the impressio

相关标签:
3条回答
  • 2020-12-20 12:15

    No, rsync does not write files atomically.

    During transfer, a hidden temporary file is being created within the same target directory (.[original-filename].[6-random-characters]) which contains the transferred file in its current state.

    If you should happen to lose connection during transfer or rsync encounters any other problem, causing the connection to be closed, before killing the rsync process make sure to copy the temporary file in order to keep all the already transferred packages. You can simply rename the temp file (remove the leading "." and the trailing ".xxxxxx" to get the original filename).

    0 讨论(0)
  • 2020-12-20 12:18

    Rsync creates a new temporary file which will contain blocks from the local (receiving) copy and whatever blocks it requires from the sending copy. When done the temporary file is moved into place replacing the original.

    Full details are here;

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

    0 讨论(0)
  • 2020-12-20 12:38

    There is a perl script that is supposed to add this functionality: http://www.opensource.apple.com/source/rsync/rsync-40/rsync/support/atomic-rsync

    The problem is that I tried to test it and it doesn't work. Also there is something strage because from the URL it looks like being something related to rsync 4.0 and the current version of rsync is 2.6.9 !

    0 讨论(0)
提交回复
热议问题