バックアップはあらゆる業界で最も重要なことの 1 つであり、最も信頼性の高いバックアップ ソリューションを探しているかもしれません。 Linux で Restic バックアップを試してみませんか?
Restic は、安全で高速で信頼性の高いバックアップ ソリューションです。このチュートリアルでは、Linux サーバーに Restic バックアップ システムをセットアップする方法を学びます。
読み進めて、もうデータを失うことはありません!
前提条件
このチュートリアルは実践的なデモンストレーションです。先に進むには、次のものがあることを確認してください:
- 2 つの Linux サーバー – このチュートリアルでは、server1 という名前の 2 つの Debian 11 サーバーを使用します。 およびバックアップ サーバー .
- sudo 権限を持つ root 以外のユーザー
Linux への Restic のインストール
Restic は暗号化されたリポジトリにデータを保存し、リポジトリにデータを追加するたびに、Restic は自動的に新しいスナップショットを作成します。ただし、Restic バックアップ ユーティリティを利用する前に、まずマシンに Restic をインストールする必要があります。
1. 端末を開き、server1
にログインします
2. 次に、wget
を実行します 以下のコマンドを実行して、Restic バイナリ ファイルをダウンロードします。これを書いている時点で、Restic の最新バージョンは v0.12.1 です。
wget https://github.com/restic/restic/releases/download/v0.12.1/restic_0.12.1_linux_amd64.bz2
3. 次のコマンドを実行して restic_0.12.1_linux_amd64.bz2
を抽出します ファイルを開き、restic_0.12.1_linux_amd64
を確認します バイナリファイルが存在します。
# Extract restic_0.12.1_linux_amd64.bz2
bzip2 -dv restic_0.12.1_linux_amd64.bz2
# List the files to verify restic_0.12.1_linux_amd64 exists
ls
4. chmod
を実行します restic_0.12.1_linux_amd64
を作成するコマンド 実行可能ファイルを作成し、ファイルの名前を変更して /usr/bin/restic
に移動します ディレクトリ。
この時点で、サーバーで restic コマンドを実行できるようになりました。
# Make Restic file executable
chmod +x restic_0.12.1_linux_amd64
# Installing Restic
mv restic_0.12.1_linux_amd64 /usr/bin/restic
5. restic
を実行します 以下のコマンドを実行して、Restic の bash 補完を生成します。そうすることで、ユーザーは restic
を簡単に実行できます。 指図。
restic generate --bash-completion /etc/bash_completion.d/restic
6. 最後に、以下のコマンドを実行して現在のターミナル セッションで bash の完了をリロードし、restic
を実行します。 コマンドを押して TAB を押します restic
の利用可能なオプションを表示します 指図。
最後に、次のコマンドを実行して、現在のターミナル セッションで bash の完了をリロードします。 restic と入力して TAB キーを押すと、restic コマンドで使用できるオプションが表示されます。
# reload bash completion
source /etc/profile.d/bash_completion.sh
# verify restic command
restic
以下に示すように、restic コマンドの使用可能なすべてのオプションが表示されます。
バックアップ サーバーのセットアップ
server1
に Restic をインストールしたので、 次のステップは、backup-server
をセットアップすることです 、SFTP プロトコルを介してデータのバックアップを開始できます。
デフォルトでは、Restic を使用すると、データをローカル ディレクトリ、リモート サーバー、および SFTP プロトコルにバックアップできます。 Restic では、Amazon S3、Azure ブログ ストレージ、Backblaze B2、Google Cloud Storage などのサードパーティ クラウド バックアップ サービスにデータをバックアップすることもできます。
1. 新しいターミナルを開き、backup-server
にログインします
2. 次に、以下のコマンドを実行して、johndoe
という名前の新しいユーザーを作成します とパスワードを設定します。
# create new user
useradd -m -s /bin/bash johndoe
# setup the password
passwd johndoe
3. 以下の各コマンドを実行して、新しいバックアップ ディレクトリ (/srv/backup
) を作成します。 ) Restic の所有権を変更します (chown
) johndoe
に ユーザーとグループ。このディレクトリには、server1
からのすべてのバックアップ データが保存されます。 機械。
# create new backup directory
mkdir -p /srv/backup
# change ownership of the backup directory
sudo chown -R johndoe:johndoe /srv/backup
4. 次に、server1
に切り替えます 以下のコマンドを実行して SSH キーを生成します。
パスワードベースの認証を使用する代わりに、キーベースの認証を使用します.特に、シェル スクリプトまたは Cron ジョブを使用して自動バックアップを設定する場合は、SSH キーが不可欠です。
ssh-keygen
以下に示すように、次のプロンプトに対して ENTER を押します。これにより、SSH キーの保存場所がデフォルト ディレクトリ (~/.ssh) に設定され、SSH 秘密キーのパスワードが無効になります。
この時点で、~/.ssh ディレクトリに、id_rsa (SSH 秘密鍵) と id_rsa.pub (公開鍵) ファイルがあります。
5. ls
を実行します 以下のコマンドで id_rsa を確認します および id_rsa.pub ファイルは ~/.ssh
に存在します ディレクトリ。
ls ~/.ssh/
6. 次に、ssh-copy-id
を実行します 以下のコマンドで、SSH 公開鍵を backup-server
にアップロードします .このデモでは、backup-server
ユーザー名 johndoe
を使用 および IP アドレス 172.16.1.150
.
ssh-copy-id [email protected]
アップロードが完了すると、Number of key(s) added:1 というメッセージが端末に表示されます。
7. 最後に、ssh
を実行します 以下のコマンドを使用して、backup-server
を確認して接続します .
ssh [email protected]
パスワード認証なしで バックアップ サーバー に自動的にログインしたことに注意してください。
新しいリポジトリの初期化
これで、Restic バックアップ サーバーが構成されました。次のステップは、新しいリポジトリを初期化することです。 Restic はバックアップ データをリポジトリに保存し、各バックアップ アクションはそのリポジトリ内に新しいスナップショットを作成します。
1. restic
を実行します 以下のコマンドで初期化します (init
) リポジトリ (-r
) SFTP プロトコルを使用します。
restic -r sftp:[email protected]:/srv/backup init
2. リポジトリの強力なパスワードを入力し、パスワードを確認します。パスワードはバックアップ データの暗号化解除に使用するため、覚えておいてください。
以下に示すように、新しいリポジトリ(a9073b62d0)が SFTP サーバー(sftp:[email protected]:/srv/backup)に作成されます。
3. 最後に、restic
を実行します 以下のコマンドでリポジトリを確認します。以前にメモしたリポジトリ用のパスワードを入力するよう求められます (ステップ 2)。
restic -r sftp:[email protected]:/srv/backup check
エラーがない場合は、以下に示すように、エラーが見つかりませんでしたというメッセージが表示されます。
リポジトリへのデータのバックアップ
backup-server
上の SFTP サーバーを使用してリポジトリを初期化しました .しかし、Restic でデータをバックアップするにはどうすればよいでしょうか? server1
からデータをバックアップします backup-server
のリポジトリに .
1. restic
を実行します 以下のコマンドで /var/www/wordpress
からデータをバックアップします ディレクトリをリポジトリに追加します。
restic -r sftp:[email protected]:/srv/backup backup /var/www/wordpress
リポジトリのパスワードを入力し、バックアップ プロセスが完了すると、以下に示すように、Restic によってスナップショット (736949a9) が作成されます。
2. 次に、以下のコマンドを実行してすべての snapshots
を一覧表示します .
restic -r sftp:[email protected]:/srv/backup snapshots
以下に示すように、スナップショット(736949a9)がリストにあることを確認してください
3. 以下のコマンドを実行して、すべてのファイルを一覧表示します (ls
)スナップショット(736949a9
) ).
restic -r sftp:[email protected]:/srv/backup ls 736949a9
/var/www/wordpress/ ディレクトリからのバックアップ データであるスナップショット(736949a9)にファイルのリストが表示されます。
さらに、以下のコマンドを実行して、複数のディレクトリ (/var/www/wordpress および var/www/html) を同じリポジトリにバックアップできます。
restic -r sftp:[email protected]:/srv/backup backup /var/www/wordpress /var/www/html
Restic が新しいスナップショットを作成したことに注意してください(7b6e321e)。
4. 次に、以下の各コマンドを実行して、すべてのスナップショット、バックアップ ファイルの統計情報、および 2 つのスナップショットの違いを一覧表示します(736949a9
および 7b6e321e
)。
# checking list snapshots
restic -r sftp:[email protected]:/srv/backup snapshots
# show stats of repository
restic -r sftp:[email protected]:/srv/backup stats
# checking different between two snapshots
restic -r sftp:[email protected]:/srv/backup diff 736949a9 7b6e321e
以下、スナップショット 736949a9 と 7b6e321e には同じバックアップ データ (/var/www/wordpress) があります。 Restic はファイルの変更のみをバックアップし、Restic を高速かつ効率的にするため、リポジトリ上のファイル サイズも同じであることに注意してください。
バックアップ プロセスでのファイルの除外
データのバックアップは便利ですが、不要なデータをどのように除外しますか? Restic では、--exclude-file
でファイル/ディレクトリを除外できます バックアップ プロセス中のオプション。
--exclude-file
オプションを使用すると、ログ ファイルなどのジャンク ファイルを除外できるため、バックアップ プロセスが高速かつクリーンになります。
1. 以下のコマンドを実行して、/opt/backup
という名前の新しいディレクトリを作成します バックアップしたファイルを保存します。
mkdir -p /opt/backup
2. 次に、新しいファイルを作成します (/opt/backup/excludes.txt
) 好みのテキスト エディタを使用して、次の設定を入力します。
以下の構成は、異なるファイル タイプのファイルを除外することを Restic に指示します。
# excludes files .zip
*.tar.gz
# excludes directory logs
logs
# exclude .txt files on the directory data
data/*.txt
3. 以下のコマンドを実行して、/var/www/html からデータをバックアップします。 リポジトリへのディレクトリ (-r
)。 --exclude-files
オプションは、exludes.txt にリストされているファイルとディレクトリを除外するよう Restic に指示します ファイル。
restic -r sftp:[email protected]:/srv/backup backup /var/www/html --exclude-file=/opt/backup/excludes.txt
以下では、excludes.txt で指定したファイルを除外して、Restic によって新しいバックアップ スナップショット ca99be01 が作成されます。 ファイル。
4. 次に、以下のコマンドを実行して、ファイルのリストを確認します (ls
) スナップショットの ca99be01
.
restic -r sftp:[email protected]:/srv/backup ls ca99be01
構成ファイルで定義したファイル (excludes.txt) を除く、すべてのバックアップ ファイルが表示されます。 ).
5. 最後に、tree
を実行します。 以下のコマンドを実行して、データの除外が Restic で機能することを確認します。
tree /var/www/html/
以下に示すように、/var/www/html ディレクトリにはテキスト ファイルが含まれていますが、Restic はそれらをバックアップから除外しませんでした。
リポジトリからのスナップショットの削除
ほとんどの場合、最新のスナップショットのバージョンは 2 つまたは 3 つしか必要ありません。では、なぜ古いスナップショットを削除しないのでしょうか?スナップショットを削除するには、スナップショットの ID を知っている必要があるため、最初にスナップショットのリストを確認してください。
1. 以下のコマンドを実行して、リポジトリ内のすべてのスナップショットを一覧表示します。
restic -r sftp:[email protected]:/srv/backup snapshots
削除するスナップショットの ID を 1 つ選択します (736949a9)。
2. 次に、次のコマンドを実行して削除します (forget
) 特定のスナップショット (736949a9
)、およびリポジトリからの残りのデータ。
# Removes snapshot only
restic -r sftp:[email protected]:/srv/backup forget 736949a9
# Removes remaining data from repository
restic -r sftp:[email protected]:/srv/backup prune
3. 以下のコマンドを実行して、--dry-run
を実行します。 どのスナップショットが削除されるかを確認します (forget
) と、保持される 2 つのスナップショット バージョン (--keep-last 2
) )。
スナップショットを削除する前に、重要なスナップショットが失われないように、予行演習を行うことを常にお勧めします。
restic -r sftp:[email protected]:/srv/backup forget --keep-last 2 --prune --dry-run
4. 以下のコマンドを実行して (forget
を削除します) ) 古いスナップショット バージョンを保持し、最後の 2 つ (--keep-last 2
) リポジトリから。
restic -r sftp:[email protected]:/srv/backup forget --keep-last 2 --prune
5. 最後に、以下のコマンドを実行して、既存のすべてのスナップショットを一覧表示します。
restic -r sftp:[email protected]:/srv/backup snapshots
最後の 2 つのスナップショット バージョンのみが残っていることが以下でわかります。
リポジトリでのデータの復元
リポジトリから重要なデータを誤って削除してしまった可能性があります。もしそうなら、どうやってそれらを取り戻しますか?幸いなことに、Restic では、バックアップのスナップショット ID を知っていれば、バックアップ データを復号化して復元できます。
1. restic
を実行します 以下のコマンドを実行して、リポジトリで利用可能なスナップショットを確認します。
restic -r sftp:[email protected]:/srv/backup snapshots
以下は、リポジトリで利用可能なスナップショットの例です。復元するバックアップ データのスナップショット ID をメモします。
2. 次に、次のコマンドを実行して復元ディレクトリを作成します (/opt/restore
)、ターゲットのスナップショット (6b44ac32
) を復元します。 ) をその復元ディレクトリに追加します。
# Create a restore directory
mkdir -p /opt/restore
# Restore snapshot data to the /opt/restore directory
restic -r sftp:[email protected]:/srv/backup restore 6b44ac32 --target /opt/restore
3. 最後に、ls
を実行します 以下のコマンドを実行して、復元されたデータを確認します。
ls /opt/restore/var/www/wordpress
以下に示すように、スナップショットから復元されたファイルのリストが表示されます(6b44ac32)。
特定のファイルの復元
失われたデータを復元したばかりですが、特定のファイルのみを復元する必要がある場合はどうすればよいでしょうか? Restic では、--include
を追加することで特定のファイルをターゲットにすることができます restic
のオプション コマンド。
1. 以下のコマンドを実行して、スナップショットから復元する特定のファイルを保持するディレクトリを作成します。
mkdir -p /opt/restore/specific
2. 次に、restic
を実行します 以下のコマンドを使用して、特定のディレクトリを復元します (/var/www/wordpress/wp-content
) および特定のファイル(wp-config.php
) ) スナップショットから (6b44ac32
)。各コマンドは、ターゲットの復元ディレクトリを /opt/restore/specific
に設定します ディレクトリ。
# restore specific directory wp-config
restic -r sftp:[email protected]:/srv/backup restore 6b44ac32 --target /opt/restore/specific --include /var/www/wordpress/wp-content
# restore specific file wp-config.php
restic -r sftp:[email protected]:/srv/backup restore 6b44ac32 --target /opt/restore/specific --include /var/www/wordpress/wp-config.php
3. 最後に、ls
を実行します 以下のコマンドを実行して、ディレクトリ内の復元されたファイルとディレクトリを確認します (/opt/restore/specific
)。
ls /opt/restore/specific/var/www/wordpress
復元が正常に行われた場合、ディレクトリ(wp-content)とファイル(wp-config.php)がスナップショット(6b44ac32)から復元されていることがわかります。
Restic と Cron を使用してデータを自動的にバックアップする
この時点で、Restic バックアップ ツールの基本的な使用法をすべて学習済みです。しかし、手動でデータをバックアップするのは面倒な場合があるため、なぜ Linux システムのデータを自動的にバックアップするのでしょうか? Restic は、Cron と共に、データ バックアップのプロセスを自動化するなど、驚くべきことを行うことができます。
1. 新しいファイルを作成します(/opt/backup/.secret
) 好みのエディタを使用して、リポジトリのパスワードを入力します。このデモでは、パスワード ResticRepositoryPassword
を使用しています Restic リポジトリ用。
2. 次に、以下のコマンドを実行して /opt/backup/.secret
の権限を変更します 600
にファイルします .許可コード 600
/opt/backup/.secret
だけに読み取りと書き込みの許可を与える ファイルの所有者。
chmod 600 /opt/backup/.secret
3. crontab
を実行します 以下のコマンドを実行して、新しい Cron ジョブを作成します。 -u root
オプションは、Cron ジョブが root ユーザーとして実行されることを示します。
crontab -u root -e
4. 好みのエディターを選択すると、Cron 構成ファイルがそのエディターで開きます。しかし、このデモでは nano を使用しています 編集者。
5. 最後に、Cron 構成に次の構成を入力して、自動バックアップをセットアップし、変更を保存します。
以下のスクリプトは以下を実行します:
restic
を実行します コマンド毎1.AM
ディレクトリをバックアップする(/var/www/wordpress
および/var/www/html
) リポジトリ SFTP サーバーへ(sftp:[email protected]:/srv/backup
).
2.AM
で古いスナップショットを自動的に削除 スナップショットの最新の 2 つのバージョンを保持します。
- 指定 (
--password-file
) ファイル (/opt/backup/.secret
) には Restic リポジトリのパスワードが含まれているため、Cron 構成でパスワードをハードコードする必要はありません。
# Runs daily backup at 1.AM
0 1 * * * restic --password-file /opt/backup/.secret -r sftp:[email protected]:/srv/backup backup --verbose /var/www/{wordpress,html}
# Runs every 2.AM, and always keeps the last 2 backup snapshots
0 2 * * * restic --password-file /opt/backup/.secret -r sftp:[email protected]:/srv/backup forget --keep-last 2 --prune
結論
このチュートリアルでは、Restic を Linux にインストールする方法と、ディレクトリからスナップショットを含む特定のファイルにデータをバックアップするさまざまな方法を学びました。データのバックアップとは別に、予期せず失われたデータを復元できることを発見しました。自動化はデータのバックアップに大きな役割を果たすため、Cron ジョブを実行し続けてデータを保護してください。
この時点で、Restic を使用してさらにデータをバックアップする準備が整いました。タグ、フィルタリング ポリシー、バックアップ クラウド サービスを使用して、バックアップを活用してみませんか?