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

Мой rsnapshot зависает без ошибок

Пробую сделать бэкап-систему. Пытаюсь использовать rsnapshot.

описание:
Клиент с rsnapshot помещает данные в папку, подключенную к sshfs (резервный сервер sftp). Сделал ssh-key, примонтировал, все нормально.

В rsnapshot conf я включил link_dest = 1, потому что по умолчанию 0 заставлял rsnapshot кричать о жестких ссылках в смонтированной папке ssh.

описание ошибки:
Я сделал автозапуск rsnapshot с помощью cron. Через пару дней я проверил свои папки и увидел, что они маленького размера. (все данные 4 гб, но папки около 300 мб, 400 мб).

Я проверил копирование в папку ssh. cp data ssh_folder. Все идет нормально и не так медленно: около 30 минут, и я увидел свои 4 ГБ в папке ssh.

Хорошо, я запустил rsnapshot вручную с подробными файлами.

rsnapshot -V hourly

Единственная ошибка - ошибка chown (с ssh это не так просто). Также ничего в файлах журнала. Просто зависает какой-то файл.

Это первая странная мысль. И второе: я пытаюсь сделать инкрементное резервное копирование, пытаясь минимизировать время синхронизации по ssh. Но когда я проверяю свой новый почасовой каталог, я вижу только часть своих данных, а не новые данные или ссылки на old_data. точно такие же файлы в новой папке.

Очень большой, полный благодарностей за любые советы.

UPD: нет больших файлов. это веб-сервер

UPD: с помощью strace

select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout)
select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout)
select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout)
select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout)
select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout)
select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout)
select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout)
select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout)
select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout)
select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout)
select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout)
select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout)
select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout)
select(5, [], [4], [], {tv_sec=60, tv_usec=0}) = 0 (Timeout)

UPD: Думаю, что нашел решение. Моя резервная папка была внутри моей домашней папки, которую я пытаюсь создать. После того как исключил вроде все нормально, но нет. 0 (Таймаут) наступил намного позже. Strace с другой (принимающей стороны):

--- SIGSTOP {si_signo=SIGSTOP, si_code=SI_USER, si_pid=124744, si_uid=0} ---
--- stopped by SIGSTOP ---
select(5, [3], [], NULL, NULL)          = ? ERESTARTNOHAND (To be restarted if no handler)
--- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} ---
select(5, [3], [], NULL, NULL)          = ? ERESTARTNOHAND (To be restarted if no handler)
--- SIGSTOP {si_signo=SIGSTOP, si_code=SI_USER, si_pid=124744, si_uid=0} ---
--- stopped by SIGSTOP ---
select(5, [3], [], NULL, NULL)          = ? ERESTARTNOHAND (To be restarted if no handler)
--- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} ---
select(5, [3], [], NULL, NULL)          = ? ERESTARTNOHAND (To be restarted if no handler)
--- SIGSTOP {si_signo=SIGSTOP, si_code=SI_USER, si_pid=124744, si_uid=0} ---
--- stopped by SIGSTOP ---
select(5, [3], [], NULL, NULL)          = ? ERESTARTNOHAND (To be restarted if no handler)
--- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} ---
select(5, [3], [], NULL, NULL)          = ? ERESTARTNOHAND (To be restarted if no handler)
--- SIGSTOP {si_signo=SIGSTOP, si_code=SI_USER, si_pid=124744, si_uid=0} ---
--- stopped by SIGSTOP ---
select(5, [3], [], NULL, NULL)          = ? ERESTARTNOHAND (To be restarted if no handler)
--- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} ---
select(5, [3], [], NULL, NULL)          = ? ERESTARTNOHAND (To be restarted if no handler)
--- SIGSTOP {si_signo=SIGSTOP, si_code=SI_USER, si_pid=124744, si_uid=0} ---
--- stopped by SIGSTOP ---
select(5, [3], [], NULL, NULL)          = ? ERESTARTNOHAND (To be restarted if no handler)
--- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} ---
select(5, [3], [], NULL, NULL)          = ? ERESTARTNOHAND (To be restarted if no handler)
--- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} ---
select(5, [3], [], NULL, NULL)          = ? ERESTARTNOHAND (To be restarted if no handler)
--- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} ---
select(5, [3], [], NULL, NULL)          = ? ERESTARTNOHAND (To be restarted if no handler)
--- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} ---
select(5, [3], [], NULL, NULL)          = ? ERESTARTNOHAND (To be restarted if no handler)
--- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} ---
select(5, [3], [], NULL, NULL)          = ? ERESTARTNOHAND (To be restarted if no handler)
--- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} ---
select(5, [3], [], NULL, NULL)          = ? ERESTARTNOHAND (To be restarted if no handler)
--- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} ---
select(5, [3], [], NULL, NULL)          = ? ERESTARTNOHAND (To be restarted if no handler)
--- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} ---
select(5, [3], [], NULL, NULL)          = ? ERESTARTNOHAND (To be restarted if no handler)
--- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} ---
select(5, [3], [], NULL, NULL)          = ? ERESTARTNOHAND (To be restarted if no handler)
--- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=124744, si_uid=0} ---
select(5, [3], [], NULL, NULL)          = ? ERESTARTNOHAND (To be restarted if no handler)

Не используйте sshfs, так как его стабильность не всегда на высшем уровне, и его поведение с rsync может быть неоптимальным.

Скорее настроить rsnapshot для прямого использования rsync-over-ssh. Пример из rsnapshot страница руководства:

резервная копия root@foo.com: / etc / foo.com/

Посмотрите на rsync страница руководства также для получения дополнительной информации.

Думаю, что нашел решение. Было 2 ошибки.
Во-первых, моя резервная папка была в папке синхронизации. (Я смонтировал резервный сервер в / home / backup, но синхронизирую весь / home).
Таким образом, rsync всегда дает тайм-аут (0), пытаясь выполнить эту странную рекурсивную задачу.

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