Субботний переполох

Прекрасный субботний день

Вчера я сидел, попивал кофе и смотрел забавные видеоролики на ютюбе. Вдруг мне приходит смс от сервиса мониторинга, оказалось, что GoDesigner не отзывается. Вскоре пришли уведомления и на почту. Я удивился, потому что сервер новый, нагрузок в субботу быть не может, но никаким способом достучаться до сервера не удалось, перезагрузка не помогла. Я уже предполагал повреждение оборудования, но оказалось, что проблема лишь в сети внутри датацентра, вскоре всё заработало как надо. Переполох быстро закончился, но нервов я потратил не мало.

А они точно сохраняются?

Тут я решил проверить, как там поживают бэкапы, и к своему шоку обнаружил, что файлов не хватает. Бэкапы файлов (а это в нашем случае огромное количество картинок) не полностью соответствуют тому количеству, которое должно присутствовать. Я запустил процесс бэкапа с выводом информации и понял, что процесс зависает при копировании случайного файла! Вот такой неприятный сюрприз.

Копирование производилось с помощью программы rsync вот такой командой:

Во время вывода я обратил внимание на большое количество ошибок, связанных с отсутствием прав на смену прав доступа (простите!) для файлов на бэкап сервере. Погуглив, оказалось, что  проблема с зависанием возникает довольно часто, но по разным причинам. Прогнав команду strace, я решил, что при попытке присвоить нужные права, при зависании, происходило бесконечное ожидание ответа. По крайней мере, такова моя интерпретация логов.

Решение

Я решил убрать из команды все опции, связанные с установкой владельца, прав и времени и команда выше превратилась в

В итоге, все заработало без зависаний. Вот простой скрипт, который я использую для бэкапа ряда важных директорий:

В переменную BACKUPDIRS через пробел следует прописать директории, для бэкапа и в цикле не забыть указать конечный путь для него. В моём случае бэкап сервер был доступен как директория через mount, поэтому никаких логинов к удаленному серверу тут нет.

Стоит дополнить чеклисты двумя пунктами:
1) Убедится, что бэкап завершается правильно и все файлы копируются;
2) Убедится, что можно восстановить файлы обратно/

Rsync hangs up/stop working

English TL;DR:

If your rsync hangs up/stop working in a middle of uploading on seemingly random file, make sure you enable verbose mode with -v option and run it again. If there are lot of «permission denied» errors, you should try run rsync without trying to preserve all access file rights, owner and time. If you are using -a options, replace it with -rlD whis is -a without options that deal with file metadata. It helped my backup, and may help yours. See above example bash script for reference. It very well maybe that you have totally another problem. You may use strace utility, which writes all activity of other command in log file. Analyzing this log file, may help figure out why process stops. Use following commands to do this:

 


Also published on Medium.

Добавить комментарий