web-dev-qa-db-ja.com

ボルグバックアップを自動化するにはどうすればよいですか?

バックグラウンド

UbuntuサーバーのバックアップソリューションとしてBorgBackupを使用したいと思います。彼らは非常に便利な sh script を提供し、cronジョブとして実行できると言っていますが、私には機能していません。

問題

ボルグバックアップを自動化するにはどうすればよいですか?最良の方法がcronを使用することである場合、私の実装の何が問題になっていますか?

データ

Root's 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::'{hostname}-{now:%Y-%m-%d}' /
/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の実行時)、/home/***/Logs/borgBackup_create.logの.logファイルにはStarting backup now...Done.の両方が表示され、スクリプトが最後まで実行されたことを示しますが、borgは実行しました。何らかの理由で動作しません。

代わりにshを使用して、crontabファイルからbashを削除し、interobangを#!/bin/bashではなく#!/bin/shに変更してみました。また、/user/bin/borg create ...の行をborgBackup_run.shbash -c "..."で折り返してみました。

どんな助けでも大歓迎です!

1
sgbrown

私は問題を理解し、将来誰かが同様の問題を抱えている場合に備えて解決策を投稿しています。

リポジトリを暗号化されていないように設定したため、borgがインタラクティブに実行されました(暗号化されていないリポジトリにバックアップしても問題ないかどうかをstdoutに尋ねます)。ボーグを非対話的に実行するには、borgBackup_run.shを呼び出す前に、borg create ...に「自動応答」をエクスポートする必要がありました。スクリプトの改行は次のようになります。

export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes

この変数の名前は、manborgページにあります。 manページには、他にも多数の「自動応答機能」があり、スクリプト内でborgが非対話的に実行されるようになっています。

2
sgbrown

同様のcronスクリプトの作成が完了しました。含まれているのは、BorgバックアップファイルのBackBlazeのクラウドストレージプラットフォームへの同期です(Amazon s3に似ていますが、より安価です)。うまくいけば、これは低コストのオフサイトバックアップでボーグを自動化することを探している他の誰かに役立つでしょう!

#!/bin/sh

echo "Starting backup for `date`\n"

# setup script variables
export BORG_PASSPHRASE="secret-passphrase-here!"
export BORG_REPO="/path/to/repo"
export BACKUP_TARGETS="/path1/to/backup /path2/to/backup"
export BACKUP_NAME="backup-and-remote-folder-name"

# create borg backup archive
cmd="borg create ::`date +%Y%m%d`-$BACKUP_NAME $BACKUP_TARGETS --stats"
$cmd

# Prune old archives to keep disk space in check
borg Prune -v --list --keep-daily=3 --keep-weekly=2

# sync backups to offsite storage
b2 authorize-account accountID applictionKey
b2 sync --delete --replaceNewer $BORG_REPO b2://bucket-name/$BACKUP_NAME

# all done!
echo "Backup complete at `date`\n";

現在、次のcrontabで1日1回実行されています

0 11 * * * /path/to/script/backup.sh >> /path/to/logfile/backup.log 2>&1

BackBlazeアカウントとそのCLIツールが必要です CLI installati

2
Glen