Как автоматизировать резервное копирование Borg?

672
sgbrown

Фон

Я хотел бы использовать Borg Backup в качестве решения для резервного копирования моего сервера Ubuntu. Они предлагают очень удобный сценарий sh, который, по их словам, можно просто запустить как работу cron, но он не работает для меня.

проблема

Как автоматизировать резервное копирование Borg? Если лучший способ использовать cron, то что не так с моей имплементацией?

Данные

Корень Crontab:

# 5 2 * * * sh /home/***/Scripts/borgBackup_run.sh >/dev/null # Back up the root partition daily (2:05a) * * * * * sh /home/***/Scripts/borgBackup_run.sh >/dev/null # Test the script 

borgBackup_run.sh:

Изменено с оригинала, чтобы быть очень голым:

#!/bin/sh  echo 'Starting backup now...' >>  /home/***/Logs/borgBackup_create.log  #/usr/bin/borg create --verbose --filter AME --list --stats --show-rc --compression lz4 --exclude-caches --one-file-system --exclude-from ~/Scripts/borgBackup_exclude.txt /mnt/RootBackup/borg::'-' / /usr/bin/borg create /mnt/RootBackup/borg::cronTest /home/***/Logs/ # Backup a small folder as a test  echo 'Done.' >> /home/***/Logs/borgBackup_create.log 

"ls -l ~ / Scripts / borgBackup_run.sh"

-rwxr-xr-x 1 root root 455 Sep 27 12:34 Scripts/borgBackup_run.sh 

Заметки:

Когда borgBackup_run.shзапускается из командной строки, как:, sudo Scripts/borgBackup_run.shскрипт работает отлично, создавая новый архив в /mnt/RootBackup/borg.

Кроме того, через каждую минуту (когда запускается cronjob), в файле .log at /home/***/Logs/borgBackup_create.logпоказывается и то, Starting backup now...и другое Done., что указывает на то, что скрипт прошел весь путь, но по какой-то причине borg не работал.

Я попытался удалить shиз файла crontab, используя bashвместо этого, и изменив interobang #!/bin/bashвместо #!/bin/sh. Я также попытался обернуть строку /user/bin/borg create ...строки borgBackup_run.shв bash -c "...".

Любая помощь будет принята с благодарностью!

1
А что говорит сам Борг? Я вижу, вы пробовали такие опции, как `--verbose` и` --stats`. Конечно, stdout / stderr идет куда-то; либо в почтовый ящик root, либо в локальный / var / spool / mail / root почтовый ящик, либо, по крайней мере, в системный журнал. grawity 5 лет назад 2
Измените конец записи в crontab с «> / dev / null» на «> / path / to /where / cron_output 2> & 1» и посмотрите, поймете ли вы что-нибудь значимое в этом файле. Кроме того, строка сценария / usr / bin / borg ....., по-видимому, не перенаправляет вывод в ваш файл .log. В настоящее время вывод будет отправлен в / dev / null Tyson 5 лет назад 2
Спасибо за ваши комментарии! @grawity: У меня ранее был стандартный вывод borg, направленный на тот же файл `borgBackup_create.log`, однако я также попытаюсь перенаправить strerr. sgbrown 5 лет назад 0
@Tyson: Ранее я направлял stdout и stderr сценария в файле cron в журнал. Создает файл .log, но не добавляет никакого содержимого. sgbrown 5 лет назад 0
Просто предлагаю, что я сделал в прошлом, чтобы решить проблемы cron. В одном случае опечатка не стала очевидной, пока я не прекратил уничтожать стандартный вывод и не ошибся на уровне cron. Tyson 5 лет назад 0
Оказывается, я понятия не имею, что делаю, и пытался неправильно перенаправить stdout и stderr (я думал, что `&>` по какой-то причине перенаправит оба). После дополнительного тестирования выясняется, что `borg` пытался работать в интерактивном режиме. Спасибо вам обоим! sgbrown 5 лет назад 0

1 ответ на вопрос

1
sgbrown

Я выяснил проблему и выкладываю решение на случай, если у кого-нибудь в будущем появится подобная проблема.

Я установил свой репозиторий как незашифрованный, что привело borgк попытке запустить его в интерактивном режиме (запрос stdout, если резервное копирование в незашифрованный репозиторий в порядке). Чтобы заставить борг работать не в интерактивном режиме, мне пришлось экспортировать «автоматический ответчик» borgBackup_run.shперед вызовом borg create .... Новая строка в скрипте выглядит так:

export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes 

Имя этой переменной было найдено на manстранице для borg. На странице также можно найти несколько других «автоматических ответчиков» man, чтобы гарантировать, что borg работает не в интерактивном режиме в скрипте.

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