UbuntuサーバーのバックアップソリューションとしてBorgBackupを使用したいと思います。彼らは非常に便利な sh script を提供し、cronジョブとして実行できると言っていますが、私には機能していません。
ボルグバックアップを自動化するにはどうすればよいですか?最良の方法がcronを使用することである場合、私の実装の何が問題になっていますか?
# 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
オリジナルから非常に必要最低限のものに変更されました:
#!/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
-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.sh
のbash -c "..."
で折り返してみました。
どんな助けでも大歓迎です!
私は問題を理解し、将来誰かが同様の問題を抱えている場合に備えて解決策を投稿しています。
リポジトリを暗号化されていないように設定したため、borg
がインタラクティブに実行されました(暗号化されていないリポジトリにバックアップしても問題ないかどうかをstdoutに尋ねます)。ボーグを非対話的に実行するには、borgBackup_run.sh
を呼び出す前に、borg create ...
に「自動応答」をエクスポートする必要がありました。スクリプトの改行は次のようになります。
export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes
この変数の名前は、man
のborg
ページにあります。 man
ページには、他にも多数の「自動応答機能」があり、スクリプト内でborgが非対話的に実行されるようになっています。
同様の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