はじめに
圧縮率が高く、高速にバックアップが行えるツール「borg」について、公式のドキュメントを翻訳しながら抜粋してまとめます。
Borg: https://borgbackup.readthedocs.io/en/1.1.7/
※この翻訳はversion1.1.7(2018/08/11)のものになります。
(前回(1.1.5)の投稿が個人的に見にくかったので書き直しました。)
間違いなどありましたら編集リクエスト、コメントをお願いします。
(アドベントカレンダーに参加しようと思ったけど、マッチしそうなカレンダーがなかったので通常投稿します。。。)
Borgって?
- リポジトリ管理方式の重複除外バックアップツール。(差分をブロック単位で検知して、変更ブロックのみ保存する方法)
- 圧縮形式を選択できる。(lz4,zstd,zkib,lzma)
- パスワードなどをかけてセキュリティ対策も行える。(SHA-256)
- SSHでリモートにデータを設置できる。
- データはバイナリ形式で保存される。
- 利用可能なOS
- パッケージマネージャー版
- Arch Linux (
pacman -S borg
) - Debian (
apt install borgbackup
) - Gentoo (
emerge borgbackup
) - GNU Guix (
guix package --install borg
) - Fedora / RHEL (
dnf install borgbackup
) - FreeBSD (
cd /usr/ports/archivers/py-borgbackup && make install clean
) - Mac OS (
brew cask install borgbackup
) - Mageia (
urpmi borgbackup
) - NetBSD (
pkg_add py-borgbackup
) - OpenBSD (
pkg_add borgbackup
) - OpenIndiana (
pkg install borg
) - openSUSE (
zypper in borgbackup
) - Raspbian (
apt install borgbackup
) - Ubuntu (
apt install borgbackup
)
- Arch Linux (
- バイナリ版
- Linux (glibc >= 2.13)
- Mac OS X (10.10以上)
- FreeBSD (10.2以上)
- ソースからインストール
- ドキュメントを参照
- BSD (3-Clause) ライセンス
- パッケージマネージャー版
参考:https://borgbackup.readthedocs.io/en/1.1.7/index.html#what-is-borgbackup
https://borgbackup.readthedocs.io/en/1.1.7/installation.html 一番簡単なのは、「Standalone Binary」の項目にあるバイナリ版です。 必須条件 可能であれば、jq(JSONを扱えるようになるアプリケーション)をインストールすることをオススメします。(ログの表示を好きなように設定できるため)インストール方法
OSごとにインストール方法が異なります。
Linux: glibc >= 2.13
Mac OS X: 10.10
FreeBSD: 10.2cd /usr/local/bin
wget https://github.com/borgbackup/borg/releases/download/1.1.7/borg-linux64
cp borg-linux64 /usr/local/bin/borg
chown root:root /usr/local/bin/borg
chmod 755 /usr/local/bin/borg
基本的な用語などは、下記の通りです。用語
名称
意味
共通オプション
ほぼすべてのコマンドで使用できるオプションです。
環境変数
BORGから始まる環境変数群です。対話に対する自動回答や、コマンド実行時の設定を省く機能などがあります。
レポジトリ
バックアップ対象となるディレクトリです。初期化を実行したユーザのホームディレクトリに、.cacheや.configディレクトリが生成されます。
アーカイブ
バックアップを取る時に指定する保存名です。復元する場合などに使用します。
borgでは、バックアップ対象や保存先に下記を指定できます。 ローカル リモートディレクトリについて
/path/to/repo
~/path/to/repo
~user/path/to/repo
ステータスコード
コード
意味
0
成功
1
警告
2
エラー
128 + N
KILLされたシグナル番号(例えば137 = 128 + kill(9))
共通オプション(抜粋)
オプション
概要
--critical
ログレベルCRITICALで実行する。
--error
ログレベルERRORで実行する。
--warning
ログレベルWARNINGで実行する。(デフォルト)
--info, -v, --verbose
ログレベルINFOで実行する。
--debug
ログレベルDEBUGで実行する。
-p, --progress
進捗状況を表示する。
--log-json
ログをJSON形式で表示する。
すべてを試しているわけではないので、間違っていたら編集リクエストやコメントをお願いします。環境変数一覧(抜粋)
設定値
概要
BORG_REPO
デフォルトのレポジトリを指定します。指定されている場合はレポジトリ指定を省略できます。
BORG_PASSPHRASE
設定すると、パスフレーズを自動回答します。
BORG_PASSCOMMAND
設定すると、パスフレーズを聞かれた時にコマンドを実行します。BORG_PASSPHRASEを設定している場合はそちらが優先されます。
TMPDIR
一時ディレクトリの場所を変更できます。
BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes
暗号化をnoneにしている場合のエラーをスキップできます。
コマンド一覧
リンクがあるものは、最低限必要になるコマンドです。
これらの中から、抜粋して解説していきます。
コマンド | 用途 |
---|---|
borg init | 初期化 |
borg create | アーカイブ作成 |
borg extract | 内容抽出 |
borg list | 内容の一覧表示 |
borg diff | アーカイブ間の比較 |
borg delete | アーカイブの削除(単一) |
borg prune | アーカイブの削除(複数) |
borg info | アーカイブ情報表示 |
borg check | 整合性の検証 |
borg rename | アーカイブ名変更 |
borg mount | ファイルシステムのマウント |
borg umount | ファイルシステムのマウント解除 |
borg key | アーカイブの鍵設定 |
borg upgrade | アーカイブ情報の更新 |
borg recreate | アーカイブの再構築(実験中) |
borg export-tar | アーカイブからtarを作成 |
borg serve | ?? |
borg config | アーカイブの設定変更 |
borg with-lock | アーカイブロック |
borg break-lock | アーカイブロック解除 |
borg benchmark | ベンチマーク(作成/読取/更新/削除) |
borg init
指定したディレクトリをBorgのレポジトリに初期化します。
下記のように実行します。
borg [common options] init [options] [REPOSITORY]
options(抜粋)
オプション
概要
-e MODE. --encryption MODE
暗号化モードの選択
暗号化を無効にすると、有効に切り替えることができません。
暗号化には、パスフレーズを設定する方法、キーファイルを設定する方法、またはその両方の3種類があります。
borg create
バックアップを行います。レポジトリを指定する為、initを行っているディレクトリを指定する必要があります。
下記のように実行します。
borg [common options] create [options] ARCHIVE [PATH...]
options(抜粋)
オプション
概要
-n, --dry-run
テスト実行する。(保存しない)
-s, --stats
作成後に情報を表示する。
--list
対象ディレクトリ/ファイルをすべて表示する。
--filter STATUSCHARS
指定したステータスの対象のみ表示する。使用する際は--listオプションを追加すること。(下記参照)
--json
作成後に情報をJSON形式で表示する。
除外オプション
概要
-e PATTERN, --exclude PATTERN
PATTERNに一致するパスを除外する。
アーカイブオプション
概要
--comment COMMENT
COMMENTを追加する。
--timestamp TIMESTAMP
アーカイブの作成日時を手動で指定する。
-c SECONDS, --checkpoint-interval SECONDS
チェックポイントをSECONDS秒ごとに書き込みます。(デフォルトは1800)
-c COMPRESSION, --compression COMPRESSION
圧縮アルゴリズムを選択します。(borg help compressionを見て選んでください。)
filterオプションについて(抜粋)
CHAR
概要
A
追加されたファイル
M
変更されたファイル
U
変更なし
E
アクセスエラー
borg extract
バックアップから復元を行います。復元の際、ディレクトリ/ファイルを指定、除外設定することもできます。
実行時のディレクトリに復元されるため、mktemp -d
などで一時ディレクトリを作成し、移動してから実行したほうがいい。
下記のように実行します。
borg [common options] extract [options] ARCHIVE [PATH...]
options(抜粋)
オプション
概要
--list
対象ディレクトリ/ファイルをすべて表示する。
-n, --dry-run
テスト実行する。(復元しない)
除外オプション
概要
-e PATTERN, --exclude PATTERN
PATTERNに一致するパスを除外する。
復元は少し癖があります。
例えば、/backup/root
レポジトリのtest01
というアーカイブに含まれる/root/test/
ディレクトリを復元したい場合、下記のように実行します。
mktemp -p
# /tmp/tmp.xxxxxxxxxxと出力される
cd /tmp/tmp.xxxxxxxxxx
mkdir -p root
borg extract /backup/root::test01 root/test/
# /tmp/tmp.xxxxxxxxxx/root/test/に復元される
borg list
内容を表示します。レポジトリを指定した場合と、アーカイブ名まで指定した場合とで表示が変わります。
- レポジトリを指定
保存されているアーカイブの一覧を表示 - アーカイブ名を指定
アーカイブに格納されているディレクトリ/ファイルの一覧を表示
下記のように実行します。
borg [common options] list [options] [REPOSITORY_OR_ARCHIVE] [PATH...]
※formatオプションについては、内容が多すぎるため省略します。options(抜粋)
オプション
概要
--short
ディレクトリ/ファイル名のみ出力する。
--format FORMAT, --list-format FORMAT
ファイルの出力形式を指定する。(デフォルト: "{mode} {user:6} {group:6} {size:8d} {mtime} {path} {extra} {NL}")
--json
JSON形式で出力する。(レポジトリ内容の一覧表示時)
--json-lines
JSON形式で出力する。(アーカイブ内容の一覧表示時)
除外オプション
概要
-e PATTERN, --exclude PATTERN
PATTERNに一致するパスを除外する。
borg diff
アーカイブ間の差分を表示します。
下記のように実行します。
borg [common options] diff [options] REPO::ARCHIVE1 ARCHIVE2 [PATH...]
# PATHはアーカイブ内の比較するパスを指定
options(抜粋)
オプション
概要
--sort
出力をファイルパスでソートする。
除外オプション
概要
-e PATTERN, --exclude PATTERN
PATTERNに一致するパスを除外する。
borg delete
アーカイブ名を指定して、アーカイブを削除します。
複数選択された場合は、回答を求められます。
下記のように実行します。
# アーカイブ削除
borg [common options] delete [options] REPO::ARCHIVE
# レポジトリ削除
borg [common options] delete [options] [REPOSITORY]
options(抜粋)
オプション
概要
-n, --dry-run
テスト実行する。(削除しない)
-s, --stats
削除後に削除されたアーカイブの情報を表示する。
--cache-only
指定したレポジトリのローカルキャッシュのみ削除します。
--save-space
時間がかかりますが、スペースをより多く確保できます。
borg prune
日時を指定して、アーカイブを削除します。
下記のように実行します。
borg [common options] prune [options] [REPOSITORY]
options(抜粋)
オプション
概要
-n, --dry-run
テスト実行する。(削除しない)
-s, --stats
削除後に削除されたアーカイブの情報を表示する。
--list
対象ディレクトリ/ファイルをすべて表示する。
--keep-within INTERVAL
INTERVALで保持期間を指定します。(H,d,w,m,yを付ける)
--keep-last, --keep-secondly
最後、2番目までのアーカイブのみ保持します。
--keep-minutely
分単位で保持するアーカイブを指定します。
-H, --keep-hourly
時単位で保持するアーカイブを指定します。
-d, --keep-daily
日単位で保持するアーカイブを指定します。
-w, --keep-weekly
週単位で保持するアーカイブを指定します。
-m, --keep-monthly
月単位で保持するアーカイブを指定します。
-y, --keep-yearly
年単位で保持するアーカイブを指定します。
--save-space
時間がかかりますが、スペースをより多く確保できます。
borg info
レポジトリの情報を表示します。レポジトリを指定した場合と、アーカイブ名まで指定した場合とで表示が変わります。
- レポジトリを指定
名称 | 意味 |
---|---|
Repository ID | レポジトリのID |
Location | レポジトリの設置場所(移動しないこと) |
Encrypted | 暗号化種類 |
Cache | キャッシュが置かれている場所 |
Security dir | セキュリティ設定が置かれている場所 |
- アーカイブ名を指定
名称 | 意味 |
---|---|
Archive name | アーカイブ名 |
Archive fingerprint | アーカイブのID(フィンガープリント) |
Comment | コメント |
Hostname | 保存ホスト名 |
Username | 保存ユーザ名 |
Time (start) | 処理開始時間 |
Time (end) | 処理終了時間 |
Duration | 所要時間 |
Number of files | 対象ファイル数 |
Command line | 実行コマンド |
Utilization of maximum supported archive size | アーカイブ全体で占める割合 |
下記のように実行します。
borg [common options] info [options] [REPOSITORY_OR_ARCHIVE]
options(抜粋)
オプション
概要
--json
JSON形式で出力する。
最後に
この記事を書いている時点でGitHubでは743コミットもありました。
もしかしたら今年中に1.2.0が来るかもしれません。
設定項目などに大幅なアップデートがない場合は、早いうちに更新するかも。
BorgBackup、便利なのに日本語の解説が少なくて悲しいです。。。
もっとBorgBackupが盛り上がってくれたら嬉しいな。
著作表示
Copyright (C) 2015-2018 The Borg Collective (see AUTHORS file)
Copyright (C) 2010-2014 Jonas Borgström <jonas@borgstrom.se>
All rights reserved.