rsync делает 2 резервные копии, если cron запускается во время записи файла

Или предположим, что система * BSD (для ps непереносим, ​​и OpenBSD удалила / proc несколько выпусков назад)

ps -o uid,gid -p ...
2
22.01.2017, 21:08
1 ответ

Чтобы ответить на ваш вопрос: rsync, насколько мне известно, не имеет встроенного способа узнать, что какая-то отдельная запущенная вами программа (веб-браузер и т.д.) активно изменяет файл.

Учитывая ваш тип резервного копирования (запуск через один и тот же источник и место назначения каждые 30 минут), вы можете добиться окончательного удаления любых промежуточных файлов, имена которых отличаются от имен конечного файла (например, download_1.zip.tmp может быть промежуточным файлом для download_1.zip), добавив в команду опцию --delete.

Во время первого запуска rsync файл download_1.zip.tmp будет скопирован в местоположение резервной копии. Если предположить, что загрузка завершится в течение 30 минут, промежуточный файл download_1.zip.tmp будет переименован в download_1.zip. После следующего запуска rsync, rsync больше не находил промежуточный файл download_1.zip. tmp (потому что он был переименован в download_1.zip) и удалит download_1.zip.tmp и заменит его на download_1.zip в резервной копии. Это также удалит любые другие файлы из резервной копии (/mnt/dsbackup), которые больше не существуют в источнике (/mnt/datastore).

Из руководства rsync (версия 3.1.0):

Это указывает rsync удалять лишние файлы с принимающей стороны (те, которых нет на передающей стороне), но только для каталогов, которые синхронизируются. Вы должны были попросить rsync передать весь каталог (например, "dir" или "dir/"), не используя подстановочный знак для содержимого каталога (например, "dir/*"), так как подстановочный знак расширяется оболочкой, и rsync получает запрос на передачу отдельных файлов, а не родительского каталога файлов. Файлы, исключенные из передачи, также исключаются из удаления, если вы не используете опцию --delete-excluded или не отметите правила как соответствующие только передающей стороне (см. модификаторы include/exclude в разделе FILTER RULES).

0
27.01.2020, 22:42

Теги

Похожие вопросы