圧縮、暗号化、リモート対応の差分バックアップを作成できる「Borg Backup」の使い方
はじめに
圧縮、暗号化に対応し差分バックアップを作成できるソフトウェアである「Borg Backup」をUbuntuにインストールして使ってみたのでその手順をまとめます。「Borg Backup」はLinux、macOSに対応しています。
Borg Backupについて
Borg Backup(以降、Borg)は、圧縮、暗号化に対応し差分バックアップを作成できるソフトウェアです。 リモートでのバックアップにも対応しているため、本番で使用しているサーバーや自分のPCの定期的なバックアップを安全に作成できるソフトウェアとして強力です。
オープンソースで開発されており、以下が公式リポジトリです。
前提と環境
以下の通りとなります。
- OS : Ubuntu18.04
この記事ではUbuntuにBorgをインストールしますが、公式ドキュメントに記載されている通り他の多くのディストリビューションにも対応しています。 BorgはSSH経由でリモートにあるファイルをバックアップすることもできますが、この記事では、ローカルのファイルをローカルの他の場所にバックアップする場合の使い方をまとめます。公式ドキュメントの通りに作業します。
Borgをインストールする
公式ドキュメントに記載の通り、Ubuntuの場合は以下でBorgをインストールします。
$ sudo apt install borgbackup
以上でインストールが完了です。
バックアップ用のリポジトリを作成する
まずはborg init
を使用してバックアップ先とするディレクトリを指定して初期化し、バックアップ用のリポジトリを作成します。
$ borg init オプション バックアップ先のパス
以下が例です。
$ borg init -e repokey /media/share/borg-backup
上記は、暗号化モードとしてrepokey
を指定し、/media/share/borg-backup
をバックアップファイルを格納するディレクトリのパスとしています。
ここではオプションの詳細は省略しますが、borg
で使用できるコマンドのオプションについては以下に詳しくまとめられており大変参考になりました。
圧縮に特化していて使いやすい差分バックアップツール「borg」について、公式ドキュメントを翻訳してみました。 実験的なもの、あまり使用しないと思われる項目については省いてあります。
以下が実行結果です。
$ borg init -e repokey /media/share/borg-backup
Enter new passphrase:
Enter same passphrase again:
Do you want your passphrase to be displayed for verification? [yN]: N
Failed to securely erase old repository config file (hardlinks not supported>). Old repokey data, if any, might persist on physical storage.
By default repositories initialized with this version will produce security
errors if written to with an older version (up to and including Borg 1.0.8).
If you want to use these older versions, you can disable the check by running:
borg upgrade --disable-tam /media/share/borg-backup
See https://borgbackup.readthedocs.io/en/stable/changes.html#pre-1-0-9-manifest-spoofing-vulnerability for details about the security implications.
borg init
実行時にバックアップ暗号化用のパスフレーズを2回入力します。Do you want your passphrase to be displayed for verification? [yN]
は、確認のためにパスフレーズを表示するか?と聞かれています。ここではN
で表示しないようにしました。
なお、Failed to securely erase old repository config file
と出ていますが、このエラーに気づかずにそのままバックアップ作成や復元まで問題なくおこなえました。
ちょっと現状エラーを再現できないためまたもし何か発生したらメモします。
バックアップを作成する
borg create
を使用してバックアップを作成します。
$ borg create オプション バックアップ先のパス::バックアップ名 バックアップ対象のパス
以下が例です。
$ borg create /media/share/borg-backup::bkdoc ~/Documents
上記は、borg init
で初期化したバックアップ先に、bkdoc
という名前で~/Documents
のバックアップを作成します。実行時にはborg init
で指定したパスフレーズを入力します。
複数のディレクトリを指定してバックアップを作成することも可能です。
$ borg create /media/share/borg-backup::bkdoc ~/Documents ~/Downloads
また、-C 圧縮アルゴリズム
のようにオプションを使用すると、圧縮アルゴリズムを指定できます。デフォルトの圧縮アルゴリズムはLZ4です。以下はzlibを指定した場合です。
$ borg create -C zlib /media/share/borg-backup::bkdoc ~/Documents ~/Downloads
zlibを指定すると処理時間は長くなりますがより高い圧縮率になります。デフォルトのLZ4では圧縮率はそこそこですが処理時間が短くなります。
なお、Borgのコマンドは進捗を表示しないものが多いです。もし進捗を出力したい場合は、以下のように--progress
オプションを使用します。
$ borg create --progress /media/share/borg-backup::bkdoc ~/Documents
また、実行結果も表示されないものが多いので、--stats
や--info
、--verbose
を使用するとより詳しい情報を出力できます。
バックアップの一覧を表示する
borg list
を使用して作成済のバックアップを一覧表示できます。
$ borg list /media/share/borg-backup
バックアップファイルを復元する
borg extract
を実行して復元します。
$ borg extract /media/share/borg-backup::bkdoc
カレントディレクトリ直下にバックアップが復元されるので、復元先としたいディレクトリに移動してから使用します。
バックアップファイルを削除する
borg delete
を使用して指定したバックアップを削除します。
$ borg delete /media/share/borg-backup::bkdoc
期間を指定してバックアップファイルを削除する
borg prune
を使用することで、一定期間経過しているバックアップをまとめて削除できます。なお、borg prune
を実行する前に、borg prune -v --list --dry-run
によるドライラン(実際には何も削除せず実行結果を確認する)のオプションを使って実行することが強く推奨されています。
$ borg prune オプション バックアップ先のパス
以下が例です。以下は、直近7日分のバックアップをキープし、それ以外は削除します。
$ borg prune -v --list --dry-run --keep-daily=7 /media/share/borg-backup
なお、毎時間バックアップを作成していたとしても上記で残されるバックアップは7個のみになります。すなわち、1日につき1つの最新のバックアップが残されます。
もし直近7日間に作成した全てのバックアップをキープしたい場合は--keep-within=7d
を使用します。
$ borg prune -v --list --dry-run --keep-within=7d /media/share/borg-backup
--keep-within=10d
とすれば10日間になります。
他にも時間単位、日単位、週単位、月単位、年単位で指定できます。詳しくはすでに載せたこちらの参考記事か公式ドキュメントで確認してみてください。
なお、borg prune -v --list --dry-run
で実行すればどのバックアップがキープされてどのバックアップが削除されるか確認用に出力されるのでそれで見てみるのが早いと思います。
実際に削除する場合は--dry-run
を外して実行します。
まとめ
ここではローカル内でのBorgの使い方を簡単にまとめましたが、スクリプト等を作成してリモートにあるファイルを定期的にバックアップするようにできると色々と楽になりそうです。
関連記事
- 公開日:2020/03/23 更新日:2020/03/23
指定したURLのWebページをPDF、PNG化してくれるAPIサーバー「URL to PDF Microservice」の使い方
特定のWebページをPDF化したりPNG化してダウンロードしたい場合に使える「URL to PDF Microservice」というリポジトリが公開されており、実際に使ってみたのでその手順をまとめます。「URL to PDF Microservice」は自分のサーバーにインストールして使用できます。
- 公開日:2020/02/14 更新日:2020/02/14
自分専用の後で読むサービスを構築できる「Wallabag」をUbuntu + Nginxで構築する手順
後で読むサービスのPocketにかなり近く、機能豊富なオープンソースのWallabagをUbuntuにインストールしたのでその手順をまとめます。
- 公開日:2020/02/13 更新日:2020/02/13
モダンで美しいRSS&ポッドキャストリーダー「Winds」をUbuntuで使用する
RSSリーダーアプリは色々ありますが、結構見た目が古く更新されていないものも多いです。Windsはモダンな見た目で綺麗な上、WebサイトのRSSフィードだけでなくポッドキャストのフィードにも対応しています。この記事ではWindsをUbuntuにインストールして使用する手順をまとめます。
- 公開日:2020/02/12 更新日:2020/02/12
ファイル単位で暗号化して保存できるCryptomatorをインストールして使う手順
Cryptomatorは、ファイル単位での暗号化が可能なソフトウェアです。この記事では、UbuntuにCryptomatorをインストールする手順と使い方をまとめます。