Являются ли операции rsync атомарными на уровне файлов? - PullRequest
15 голосов
/ 22 сентября 2010

Я пытаюсь выяснить, как, если rsyncing файлы атомарны. Я не мог найти никакого подтверждения об этом. Из-за того, что rsync мог отправлять только дельты, у меня сложилось впечатление, что он также обновляет только части живых файлов.

На другом зависании DJB рекомендует rsync для синхронизации живых .cdb файлов, и я нашел этот пост (http://lists.samba.org/archive/rsync/2002-April/002210.html), который подразумевает, что новый файл создан, а затем перемещен в нужное место .

Может ли кто-нибудь указать мне на официальный источник, подтверждающий одно или другое?

Ответы [ 3 ]

14 голосов
/ 02 августа 2011

Rsync создает новый временный файл, который будет содержать блоки из локальной (принимающей) копии и любые блоки, которые требуются от отправляющей копии. По завершении временный файл перемещается на место, заменяя оригинальный.

Полная информация здесь;

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

2 голосов
/ 01 сентября 2017

Нет , rsync не записывает файлы атомарно.

Во время передачи скрытый временный файл создается в том же целевом каталоге (.[original-filename].[6-random-characters]), который содержит переданный файл.файл в его текущем состоянии.

Если вы потеряли соединение во время передачи, или rsync столкнется с какой-либо другой проблемой, которая приведет к закрытию соединения, перед уничтожением процесса rsyncОбязательно скопируйте временный файл, чтобы сохранить все уже переданные пакеты.Вы можете просто переименовать временный файл (удалить начальный «.» И завершающий «.xxxxxx», чтобы получить исходное имя файла).

0 голосов
/ 28 июля 2011

Существует Perl-скрипт, который должен добавить эту функциональность: http://www.opensource.apple.com/source/rsync/rsync-40/rsync/support/atomic-rsync

Проблема в том, что я пытался протестировать его, и он не работает.Также есть что-то странное, потому что по URL-адресу это похоже на то, что связано с rsync 4.0, а текущая версия rsync - 2.6.9!

...