Linuxには、システムレベルのバックアップとユーザーデータのバックアップの機能を提供する複数のバックアップツールがあります。この包括的な記事では、 BorgBackupとは何かを調べます。 LinuxおよびUnixライクなシステムでBorgを使用してファイルをバックアップおよび復元する方法。
1。はじめに
仕事で大量のデータを扱っているときに、最初に頭に浮かぶ明らかな質問は次のとおりです。1.データを失った場合はどうなりますか? 2.データはどの程度保護されていますか?
同じシナリオがパーソナルマシンにも適用されます。重要性に応じて常にデータをバックアップし、不正アクセスからデータを保護する必要があります。
個人データであろうと公式データであろうと、常に優れたバックアップ戦略を計画し、重要なデータのバックアップに役立つ堅牢なバックアップツールを使用する必要があります。最も推奨され広く使用されているオープンソースバックアップアプリケーションの1つは、「Borg」です。 。
2。ボーグとは?
BorgBackup(略してborg)は、重複排除技術を使用してデータをバックアップする効率的な方法を提供するために作成されたバックアップツールです。
ボーグのユニークな機能のいくつかを以下に示します。
- 重複排除 -重複排除手法では、データの増分コピーのみが保存されるため、毎日のバックアップを取るのに最適です。
- クロスプラットフォーム --Borgは、Linux、Mac OS X、およびFreeBSDにインストールして使用できます。
- 安全 - AESを使用したデータ暗号化をサポートします 暗号化(256ビット)、信頼性を検証する HMAC-SHA256 使用されます。
- 圧縮 -データは、次の圧縮方法を使用して圧縮できます。
- LZ4->超高速、低圧縮。
- ZSTD->高速および低圧縮から低速および高圧縮へ。
- ZLIB->中速、中圧縮。
- LZMA->低速、高圧縮。
- リモートバックアップ -SSHプロトコルを介してデータをリモートマシンにバックアップできます。
3。 LinuxにBorgをインストールする
Borgは、ほとんどのLinuxディストリビューションのデフォルトのリポジトリで利用できます。そのため、ディストリビューション固有のパッケージマネージャーを使用してインストールできます。
Alpine Linuxにborgをインストールするには、次のコマンドを実行します。
$ sudo apk add borgbackup
Arch Linuxと、EndeavourOSやManjaro Linuxなどのその亜種にborgをインストールするには、次のコマンドを実行します。
$ sudo pacman -S borg
Debian / Ubuntuベースのディストリビューションにborgをインストールします:
$ sudo apt install borgbackup -y
Fedora、RHEL、CentOS、AlmaLinux、Rocky Linuxにborgをインストールします:
$ sudo dnf install borgbackup -y
openSUSEにBorgをインストールします:
$ sudo zypper install borgbackup -y
ボーグはPythonで書かれているので 、Pythonパッケージマネージャー PiPを使用できます ボーグをインストールします。インストールされているpipのバージョンに応じて、次のコマンドのいずれかを実行できます。
$ pip install borgbackup
または、
$ pip3 install borgbackup
インストールしたら、バージョンコマンドとヘルプコマンドを実行して、Borgのインストールを確認できます。
$ borg --version
$ borg --help

4。ボーグを使用して最初のバックアップを取る
最初のバックアップを取る前に、2つの重要な用語を理解する必要があります。
- アーカイブ -データのバックアップコピー(スナップショット)はアーカイブと呼ばれます。
- リポジトリ -アーカイブが保存されているローカルまたはリモートのファイルシステムのディレクトリ。
まず、アーカイブが保存されるリポジトリ(ディレクトリ)を初期化します。
"source"という名前のディレクトリにファイルのリストがあります "backup"という名前の新しいディレクトリを作成しました これは、アーカイブを保存するためのリポジトリとして機能します。

5。リポジトリを初期化する
borg init
を実行します バックアップディレクトリを初期化するコマンド。バックアップディレクトリは、ローカルマシンまたはリモートマシンに配置できます。私の場合、ディレクトリを初期化しています(つまり、バックアップ )私はすでに作成しました。
$ borg init --encryption=none /home/karthick/borg/backup
$ borg init --encryption=repokey /home/karthick/borg/backup
$ borg init --encryption=keyfile /home/karthick/borg/backup
リポジトリを初期化するときに、暗号化のタイプを選択できます 。暗号化タイプを「なし」として使用する場合 、暗号化は適用されません。 「repokey」を使用する場合 および"keyfile" 暗号化タイプとして、 AES-CTR-256を使用します 暗号化用。
暗号化タイプを1つ選択して、init
を実行します 指図。私の場合、暗号化タイプをなしとして選択しています。 デモンストレーション用。
6。ボーグを使用したファイルのバックアップ
6.1。最初のバックアップを作成する
リポジトリが初期化されたら、次のコマンドを実行してバックアップアーカイブを作成できます。
$ borg create --stats --progress /home/karthick/borg/backup::25-11-2021 /home/karthick/borg/source/
ここでは、アーカイブ名を日付形式で指定しています "25-11-2021" 毎日のバックアップをシミュレートします。 --stats
なし および--progress
フラグを立てると、createコマンドの出力は静かになります。

6.2。バックアップを作成するときにファイルを表示する
--list
を組み合わせることもできます および-v
borg create
の実行中に、アーカイブ内のファイルのリストを表示するフラグ コマンド。
$ borg create --list -v /home/karthick/borg/backup/::27-11-2021 /home/karthick/borg/source/

6.3。圧縮バックアップを作成する
デフォルトでは、borgは lz4を使用します 圧縮アルゴリズム。 lz4圧縮アルゴリズムは非常に高速で、圧縮率が低くなっています。別の圧縮アルゴリズムを使用する場合は、--compression
を使用できます。 フラグを立てて、圧縮レベルとともにタイプを渡します。
たとえば、 zstdを使用したい場合 アルゴリズムの場合、私のコマンドは次のようになります。
$ borg create --compression zstd,1 /home/karthick/borg/backup/::27-11-2021 /home/karthick/borg/source/
ボーグの公式ドキュメントから、さまざまな圧縮アルゴリズムとそのレベルを確認できます。 。
6.4。アーカイブ情報を取得する
info
を使用できます 特定のアーカイブに関する情報を取得するコマンド。
$ borg info /home/karthick/borg/backup/::25-11-2021

7。バックアップの一覧表示
borg list
の使用 コマンドを使用すると、リポジトリにクエリを実行して、アーカイブのリストとアーカイブ内にあるファイルを見つけることができます。
アーカイブのリストだけを取得するには、次のコマンドを実行します。
$ borg list /home/karthick/borg/backup
出力例:
25-11-2021 Thu, 2021-11-25 13:16:53 [653d952301fc70ab9f2f74794361359144e05f5534e668ef4a4957d2c7f67937]
26-11-2021 Thu, 2021-11-25 13:19:51 [473bbe30fbe8597b63910310d567e69b501b2fb7127f04a78da76ab59d90114f]
27-11-2021 Thu, 2021-11-25 13:20:01 [0e6813f1a05246d43d196de9d28034d0397b4ae50cd20ee50163e347efee3e2a]
--json
を使用することもできます jsonのリポジトリとアーカイブのリストに関する詳細情報を提供するフラグ フォーマット。
$ borg list --json /home/karthick/borg/backup

7.1。アーカイブ内のファイルを一覧表示する
アーカイブ内のファイルのリストを取得するには、次のコマンドを実行します。ここでは、アーカイブ "25-11-2021"のファイルを一覧表示しています。 。
$ borg list /home/karthick/borg/backup::25-11-2021
出力例:
drwxrwxr-x karthick karthick 0 Thu, 2021-11-25 12:48:58 home/karthick/borg/source
-rw-r--r-- karthick karthick 807 Mon, 2021-11-22 13:35:51 home/karthick/borg/source/project_profile.txt
-rw------- karthick karthick 2301 Mon, 2021-11-22 13:35:51 home/karthick/borg/source/hist.txt
-rw-r--r-- karthick karthick 220 Mon, 2021-11-22 13:35:51 home/karthick/borg/source/external.txt
-rw-r--r-- karthick karthick 3895 Mon, 2021-11-22 13:35:51 home/karthick/borg/source/config.txt
--json-lines
を使用することもできます JSONのアーカイブコンテンツを一覧表示するフラグ フォーマット。

7.2。バックアップからファイルとディレクトリを除外する
-e
を使用してファイルとディレクトリを除外できます または--exclude
フラグ。
$ borg list /home/karthick/borg/backup::25-11-2021 --exclude "hist"

8。アーカイブ間の違いを見つける
diff
を使用できます 2つのアーカイブを比較するコマンド。
datafile.txt
という名前の新しいファイルを作成しています source
の下 ディレクトリ。また、 28-11-2021という名前のアーカイブをもう1つ作成しました。 。
これで、次のように新しいアーカイブと古いアーカイブを比較できます。
$ borg diff /home/karthick/borg/backup/::27-11-2021 28-11-2021 added 2.89 kB home/karthick/borg/source/datafile.txt

9。アーカイブの名前を変更する
アーカイブが作成されたら、名前を変更したい場合は、borg rename
を使用して変更できます。 指図。
アーカイブの名前を"27-11-2021"に変更したい場合を考えてみましょう。 "29-11-2021" 、次のコマンドを実行することでこれを行うことができます。
$ borg rename /home/karthick/borg/backup/::27-11-2021 29-11-2021

10。 borgを使用してファイルを復元する(アーカイブからデータを抽出する)
データのバックアップの主な焦点は、必要なときにいつでもデータを復元することです。したがって、borg extract
を使用できます アーカイブからデータを取得するコマンド。 extract
を実行するとき コマンドを実行すると、extractコマンドを実行している現在の作業ディレクトリにデータが抽出されます。
次のコマンドを実行して、アーカイブを現在の作業ディレクトリに抽出します。 -v
を使用 および--list
フラグが追加されると、抽出されたファイルのリストが表示されます。
$ borg extract -v --list backup/::25-11-2021

--dry-run
を使用することもできます 抽出するのではなく、抽出する内容を表示するフラグ。
$ borg extract --dry-run -v --list backup/::25-11-2021
ディレクトリ名を渡すことにより、アーカイブから特定のディレクトリを抽出できます。アーカイブにはディレクトリが1つしかないため、それが取得されます。
$ borg extract -v --list backup/::25-11-2021 home/karthick/borg/source/
10.1。復元からファイルを除外する
--exclude
を追加することもできます ディレクトリを抽出するときにファイルを省略します。ここでは、 histのファイルを除くすべてのファイルを抽出しています。 。
$ borg extract -v --list backup/::25-11-2021 home/karthick/borg/source/ --exclude "hist"

11。リポジトリとアーカイブのマウントとアンマウント
リポジトリまたは特定のアーカイブをヒューズファイルシステムとしてマウントできます。その後、マウントされたアーカイブを使用してファイルを復元できます。
リポジトリ全体をマウントするには、次のコマンドを実行します。
$ mkdir /tmp/borg/
$ borg mount /home/karthick/borg/backup/ /tmp/borg/
$ ls -l /tmp/borg/
出力例:
drwxr-xr-x 1 karthick karthick 0 Nov 25 16:31 25-11-2021
drwxr-xr-x 1 karthick karthick 0 Nov 25 16:31 26-11-2021
drwxr-xr-x 1 karthick karthick 0 Nov 25 16:31 27-11-2021
drwxr-xr-x 1 karthick karthick 0 Nov 25 16:31 28-11-2021
drwxr-xr-x 1 karthick karthick 0 Nov 25 16:32 29-11-2021
上記の出力から、すべてのアーカイブがディレクトリとしてマウントされていることがわかります。これで、ファイルをコピーするだけで簡単に復元できます。
特定のアーカイブをマウントするには、リポジトリと一緒にアーカイブ名を追加するだけです。
$ borg mount /home/karthick/borg/backup/::25-11-2021 /tmp/borg/
マウントされたリポジトリまたはアーカイブをアンマウントするには、borg umount
を使用します コマンド。
$ borg umount /tmp/borg
$ ls -l /tmp/borg
12。アーカイブを整理する
borg prune
このコマンドは、バックアップを自動化し、特定のコピーのみを維持し、残りのコピーをクリーンアップする場合に非常に役立ちます。

上記の表のオプションは、リポジトリに保持するアーカイブコピーの数を決定します。たとえば、2つのコピーだけを保持したい場合 毎週のバックアップから、私のコマンドは次のようになります。
$ borg prune -v --list --keep-weekly=2 /home/karthick/borg/backup/
上記の条件を特定のアーカイブのみに適用することもできます。たとえば、リポジトリに10個のアーカイブがあり、archive7に保持ルールを適用したい場合は、--prefix
を使用できます。 条件を設定するためのフラグ。
$ borg prune -v --list --keep-weekly=2 --prefix='{archive name}' /home/karthick/borg/backup/
prune
を実行する前に コマンド、--dry-run
を使用してドライランを実行します フラグ。
13。リポジトリとアーカイブを削除する
borg delete
を使用して、アーカイブまたはリポジトリ全体を削除できます コマンド。
単一のアーカイブを削除するには、アーカイブ名を指定する必要があります。
$ borg delete /home/karthick/borg/backup/::26-11-2021

アーカイブ全体を削除するには、リポジトリパスを指定するだけです。ディレクトリ全体を削除すると、確認を求めるメッセージが表示されます。
$ borg delete /home/karthick/borg/backup/

14。キーパスフレーズを変更する
これまで、リポジトリに暗号化を適用せずに例を示してきました。最初のセクションで説明したように、暗号化を有効にして、repokey
の場合は、ディレクトリを初期化できます。 またはkeyfile
を使用すると、オプションでパスフレーズを設定するように求められます。
$ borg init --encryption=repokey /home/karthick/borg/bkup/

これ以降、このリポジトリで操作を実行しようとするときは、毎回パスフレーズを提供する必要があります。下の画像を見てください。リポジトリを一覧表示しようとしていますが、そのためのパスフレーズを提供する必要があります。

ここで、パスフレーズを変更したいとします。次に、borg change-passphrase
を使用して変更できます。 コマンド。
$ borg key change-passphrase -v /home/karthick/borg/bkup

環境変数を使用してパスフレーズを設定することもできます。
$ BORG_PASSPHRASE="old password" BORG_NEW_PASSPHRASE="new password" borg key change-passphrase /home/karthick/borg/bkup
15。キーのエクスポートとインポート
リポジトリキーをエクスポートしてバックアップし、後で必要に応じてインポートすることができます。
キーをエクスポートするには、次のコマンドを実行します。
$ borg key export bkup/ ./key
$ cat ./key
キーを同じリポジトリにインポートするには、次のコマンドを実行します。
$ borg key import bkup/ ./key

16。リモートリポジトリの操作
これまでに見たものはすべて、同じマシンでデータをバックアップしています。 Borgは、任意のリモートマシンでデータをバックアップできるリモートリポジトリもサポートしています。リモートホストにはSSH経由でアクセスできる必要があります。
構文:
$ borg init [email protected]:/path/to/repo
例:
$ borg init [email protected]:/home/karthick/borg/bkup
ローカルバックアップで実行できるのと同様のあらゆる種類の操作を実行できます。たとえば、バックアップを復元するには、extract
を使用できます また、mount
を使用することもできます リモートリポジトリをマウントするコマンド。
ここで、リモートディレクトリを指定するときは、sshプロトコルを「ssh://[email protected]:port/path/to/repo
」として指定する必要があります。 "。
$ borg mount ssh://[email protected]:2222/home/karthick/borg/bkup /tmp/borg
$ borg extract ssh://[email protected]:2222/home/karthick/borg/bkup
17。ボーグGUIデスクトップクライアント
BorgBackupは純粋にコマンドラインツールであるため、すべてのコマンドを覚えておくことはほぼ不可能です。グラフィカルインターフェイスを介してデータをバックアップできる優れたグラフィカルアプリケーションを好む人もいるかもしれません。心配しないでください!
Vortaは、BorgBackup用のGUIデスクトップクライアントです。 Vortaを使用すると、Borgアプリケーションをお気に入りのデスクトップ環境に簡単に統合できます。コマンドを覚える必要はありません。シンプルなグラフィカルインターフェイスを介してすべてを行うことができます!
Vortaのインストールと使用方法の詳細については、次のガイドを参照してください。
- Vorta –BorgBackupのグラフィカルフロントエンド
18。結論
この記事では、borgを使用してLinuxでデータをバックアップおよび復元する方法について説明しました。ボーグには、ツールをテストすることで理解できる非常に多くの機能があります。ボーグの良い代替手段はタイムシフトです システムレベルのバックアップとrsync ユーザーファイルとディレクトリを取得します。