В настоящее время у меня есть выделенный сервер резервного копирования Ubuntu, который ежедневно выходит из режима ожидания (с помощью rtcwake). 5 минут спустя запускается задача cron BASH, использующая rsync для извлечения файлов из различных сетевых расположений. Если этот сценарий BASH завершается, последнее, что он делает, - это переводит сервер в спящий режим до следующего дня (за 5 минут до повторного запуска задания резервного копирования - вы видите картину!).
Существует дополнительное задание cron, которое запускается в 22:45, чтобы «очистить» все запущенные процессы script / rsync, а затем приостановить работу машины до следующего дня.
Моя проблема / вопрос: машина подключена к медленному каналу (беспроводная связь 802.11n) и ей необходимо синхронизировать несколько довольно больших медиафайлов. Я использую такие команды rsync:
rsync -aPvz -e ssh --itemize-changes --modify-window=60 --exclude 'thumbs.db' /source/ /destination/
И в случае, когда rsync не может завершиться за время, пока сервер не спит, я предположил (из-за -P), что он попытается продолжить с того места, где остановился.
На самом деле кажется, что у меня в каталоге есть несколько частичных копий одного и того же файла, но копия никогда не завершается.
Например:
.BigFile.mkv.EJtNSS (4.1GB)
.BigFile.mkv.KSUStW (3.7GB)
.BigFile.mkv.LSewSA (4.3GB)
Кто-нибудь раньше сталкивался с подобным сценарием? Я очень рад все это изменить, если есть программа, которая будет выполнять аналогичную работу (включая обработку сна / пробуждения). Я новичок в написании сценариев BASH, но готов попробовать любые предложения.
Привет, Лоз
Судя по вашему симптому, попытки синхронизации, скорее всего, были незавершенными из-за медленного соединения и последующего прерывания синхронизации. В таком случае --inplace
вариант на самом деле является худшим вариантом, поскольку он не предназначен для ситуаций, связанных с сетью. Цитата из --inplace
вариант:
ВНИМАНИЕ: данные файла будут в несогласованном состоянии во время передачи (и, возможно, позже, если передача будет прервана) ...
Вы можете захотеть проверить другой пост при синхронизации очень большого файла с помощью rsync. (Подсказка: --append
) Кроме того, странно, что --partial
указанный вами вариант (-P
включает --partial
) не берет существующий частичный файл. Информации для определения причины пока недостаточно, но ее можно проверить с помощью более подробного параметра (добавить больше -v
).
Добавление --inplace
очень поможет с большими файлами. Это ускоряет сбор данных после сбоя или остановки rsync, поскольку не использует временные файлы.