Назад | Перейти на главную страницу

Как я могу синхронизировать каталог, который может быть занят обновлением файлов?

Я хочу перенести каталог файлов в удаленное место назначения. Легко.

Однако в любой момент времени один или несколько из этих файлов могут использоваться и обновляться пользователями.

Это не беспокоит rsync - он с радостью перенесет файлы ... но в конечном каталоге назначения могут быть наполовину записанные или наполовину созданные файлы.

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

Или я мог бы проверить 'lsof', затем заблокировать каталог с помощью chmod и затем запустить rsync ... снова, возможное состояние гонки и если кто-то попытается получить доступ, он получит сообщение об ошибке / отказано.

Как это можно сделать?

Вы используете LVM?

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

Однако использование снимка LVM не помешает правильному сохранению файла. Что делают пользователи? Если это был текстовый файл, открытый в текстовом редакторе, снимок LVM просто сохранит файл в том состоянии, в котором он находится на диске. Но если ваши пользователи компилируют двоичные файлы и прочее, тогда вы получите файлы, сохраненные в непредсказуемых условиях.