|
[[405900]] 導入Resticは、高速で効率的、かつ安全なバックアッププログラムです。3つの主要オペレーティングシステム(Linux、macOS、Windows)と、一部の小規模オペレーティングシステム(FreeBSDおよびOpenBSD)をサポートしています。Goプログラミング言語で記述されており、データの暗号化にはAES-256を使用し、データ認証にはPoly1305-AESを使用しています。 GitHub アドレス: https://github.com/restic/restic 設計原則Restic はバックアップを正しく実行できるプログラムであり、その設計は次の原則に従います。 - シンプルさ:バックアップはシームレスなプロセスであるべきです。そうでなければ、バックアップを省略したくなるかもしれません。Resticは、データが失われた場合でも直接復元できるよう、設定と操作が簡単である必要があります。同様に、データ復旧も過度に複雑であってはなりません。
- 速度: Resticを使ったデータのバックアップは、ネットワークやハードドライブの帯域幅に制限されることなく、毎日ファイルをバックアップできる必要があります。時間がかかりすぎると、誰もバックアップしなくなります。バックアップの復元は、ファイルの復元に必要なデータのみを転送することで、プロセスを迅速化します。
- 検証可能: バックアップよりもリカバリの方が重要なので、Restic を使用すると、すべてのデータをリカバリできるかどうかを簡単に検証できます。
- セキュリティ: Resticは暗号化を使用し、データの機密性と整合性を確保します。これは、バックアップデータが信頼できない環境(システム管理者や他のユーザーがバックアップにアクセスできる共有スペースなど)に保存されていることを前提としています。Resticは、このような攻撃者からデータを保護するように設計されています。
- 効率性:データの増加に伴い、追加のスナップショットは実際の増分ストレージのみを占有するべきです。さらに重要なのは、重複データはストレージバックエンドに実際に書き込まれる前に重複排除され、貴重なバックアップスペースを節約することです。
インストールセントOS- [root@centos7 ~]# yum install yum-plugin-copr -y
- [root@centos7 ~]# yum copr Enable copart/restic -y
- ロードされたプラグイン: copr、fastestmirror
- 完了
- [root@centos7 ~]# yum installrestic -y
上記のインストールでエラーが発生した場合は、次のコマンドを実行してソースの問題を解決してください。 - [root@centos7 ~]# yum-config-manager --add-repo https://copr.fedorainfracloud.org/coprs/copart/restic/repo/epel-7/copart-restic-epel-7.repo
- 読み込まれたプラグイン: fastestmirror
- リポジトリの追加元: https://copr.fedorainfracloud.org/coprs/copart/restic/repo/epel-7/copart-restic-epel-7.repo
- ファイル https://copr.fedorainfracloud.org/coprs/copart/restic/repo/epel-7/copart-restic-epel-7.repo を /etc/yum.repos.d/copart-restic-epel-7.repo に取得しています
- リポジトリは /etc/yum.repos.d/copart-restic-epel-7.repo に保存されました
macOS- # 醸造
- $ brew インストール restic
- # macprots
- $ sudo ポートをインストール restic
詳細なインストール手順については、https://restic.readthedocs.io/en/latest/020_installation.html#stable-releases を参照してください。 バックアップリポジトリを構成するバックアップが保存される場所は「リポジトリ」と呼ばれます。リポジトリはローカル、リモートサーバー、またはサービスに保存できます。以下の保存方法がサポートされています。 自動バックアップの場合、Restic は環境変数からリポジトリの場所 RESTIC_REPOSITORY を受け取ります。また、--repository-file オプションまたは環境変数で指定されたファイルからリポジトリの場所 RESTIC_REPOSITORY_FILE を読み取ることもできます。 パスワードにはいくつかのオプションがあります。 - 環境変数RESTIC_PASSWORDを設定する
- --password-file オプションまたは環境変数 RESTIC_PASSWORD_FILE を使用して、パスワードを含むファイル パスを指定します。
- オプション --password-command または環境変数 RESTIC_PASSWORD_COMMAND を介してパスワードが必要なときに呼び出されるプログラムを構成します。
ローカルリポジトリを作成するローカルリポジトリの作成を例に挙げると - [root@centos7 ~]# restic init --repo /restic/backup_dir
- 新しいリポジトリのパスワードを入力してください:
- パスワードをもう一度入力してください:
- /restic/backup_dir に restic リポジトリ dff64d39c6 を作成しました
- アクセスするにはパスワードが必要ですのでご注意ください
- リポジトリ。パスワードを紛失すると、データが
- 回復不能なほど失われた。
- ヒントは非常に明確です。ここで入力したパスワードを覚えておいてください。パスワードを紛失すると、データが失われます。
その他のリポジトリ作成方法については、公式ドキュメントを参照してください: https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html バックアップの練習データ ディレクトリの内容をリポジトリにバックアップします。 - [root@centos7 ~]# restic -r /restic/backup_dir --verbose バックアップ ./data
- オープンリポジトリ
- リポジトリのパスワードを入力してください:
- リポジトリ dff64d39 が正常に開かれました。パスワードは正しいです。
- /root/.cache/restic に新しいキャッシュを作成しました
- リポジトリをロックする
- インデックスファイルを読み込む
- 親スナップショットが見つからないため、すべてのファイルを読み取ります
- [./data]でスキャンを開始
- [./data] でバックアップを開始します
- スキャンは1.455秒で終了しました: 2922ファイル、71.126 MiB
- ファイル: 新規 2922 件、変更 0 件、未修正 0 件
- ディレクトリ: 新規 99 件、変更 0 件、未修正 0 件
- データブロブ: 2889件の新規
- 木の塊: 99個の新規
- リポジトリに追加されました: 72.083 MiB
- 2922 個のファイルが処理され、0:05 で 71.126 MiB になりました #バックアップファイルの数とサイズ
- スナップショット 4d20711e を保存しました # ファイルスナップショットを作成しました
- --verbose # プロセス情報を出力します
単一のファイルをバックアップすることもできます。 - [root@centos7 ~]# ls ./data
- goInception-linux-amd64-v1.2.3.tar.gz httpd-2.4.6-95.el7.centos.x86_64.rpm mingongge.z02
- httpd-2.4.46 mingongge.file mingongge.zip
- httpd-2.4.46.tar.gz mingongge.z01
- [root@centos7 ~]# restic -r /restic/backup_dir --verbose バックアップ ./data/mingongge.zip
- オープンリポジトリ
- リポジトリのパスワードを入力してください:
- リポジトリ dff64d39 が正常に開かれました。パスワードは正しいです。
- リポジトリをロックする
- インデックスファイルを読み込む
- 親スナップショットが見つからないため、すべてのファイルを読み取ります
- [./data/mingongge.zip] のスキャンを開始します
- [./data/mingongge.zip] のバックアップを開始します
- スキャンは0.249秒で終了しました: 1ファイル、942.793 KiB
- ファイル: 新規 1 件、変更 0 件、未修正 0 件
- ディレクトリ: 新規 1 件、変更 0 件、未修正 0 件
- データブロブ: 新規 0 件
- 木の塊: 2つの新しい
- リポジトリに追加されました: 750 B
- 0:00に1ファイル、942.793 KiBを処理しました
- スナップショット 3e5b7dea を保存しました
手順1のバックアップコマンドを再度実行すると、新しいコンテンツは追加されず、現在のデータのスナップショットが新たに追加されるだけであることがわかります。実際、Resticにはファイルスキャン機能(各ファイルを個別にスキャンして比較する機能)が搭載されているため、同じデータは一度だけバックアップされます。 文書検査機能すべてのファイルの内容全体をスキャンするのはリソースの大きな無駄なので、Restic はファイル メタデータに基づく変更検出ルールも使用して、ファイルが最後のバックアップ以降変更されていないかどうかを判断し、変更されていない場合は再度スキャンしません。 Unix システム (Linux および Mac を含む) では、ファイルが以前のバックアップのファイルと同じ場所にある場合、その内容が変更されていないと想定するには、次のファイル メタデータ属性が一致する必要があります。 - タイムスタンプの変更 (mtime)
- メタデータ変更タイムスタンプ (ctime)
- ファイルサイズ
- inode 番号 (ファイルシステム内のファイルを参照するために使用される内部番号)。
したがって、上記の理由に基づいて、次のようないくつかのパラメータが導入されます。 - --force # 変更検出を無効にしてすべてのファイルを再スキャンします
- --ignore-ctime # mtime が一致する必要がありますが、異なる ctimes が許可されます。
- --ignore-inode # 一致する inode 時刻が必要ですが、inode 番号と ctime は異なっていてもかまいません。
除外ファイルパラメータ - --exclude # 除外する 1 つ以上の項目を指定します。
- --iexclude # exclude と同じですが、パスケースは無視されます
- --exclude-caches # 除外する特殊なファイルを含むフォルダーを指定します。
- --exclude-file # 除外する特殊なファイルを含むフォルダーを指定します。
- --iexclude-file # exclude-file と同じですが、パスケースは無視されます
- --exclude-if-present foo #fooという名前のファイルを含むフォルダーを除外する
- --exclude-larger-than size # 指定されたサイズより大きいファイルを除外することを指定します。
その他の関連機能については、https://restic.readthedocs.io/en/latest/040_backup.html を参照してください。 リポジトリの使用データがリポジトリにバックアップされたので、リポジトリを使用する必要があります。以下では、関連する操作について説明します。 リポジトリのすべてのスナップショットを一覧表示するこの機能は、システム上で ls コマンドを使用して情報を表示するのと同じです。 - [root@centos7 ~]# restic -r /restic/backup_dir/ スナップショット
- リポジトリのパスワードを入力してください:
- リポジトリ dff64d39 が正常に開かれました。パスワードは正しいです。
- ID 時間 ホスト タグ パス
- ---------------------------------------------------------------------------------
- 4d20711e 2021-06-04 03:40:47 centos7 /ルート/データ
- 3e5b7dea 2021-06-04 03:46:34 centos7 /root/data/mingongge.zip
- 94c62288 2021-06-04 03:51:21 centos7 /root/data
- ---------------------------------------------------------------------------------
- 3枚のスナップショット
- #フィルタリングと一致には次のパラメータを使用することもできます。
- --path = "ディレクトリ名"
- --host ホスト名
- #同じフィルター(ホスト、パス、タグ)を使用して出力をグループ化します
- --group-by
詳細については、https://restic.readthedocs.io/en/latest/045_working_with_repos.html を参照してください。 リポジトリデータを検出する- [root@centos7 ~]# restic -r /restic/backup_dir/ チェック
- /tmp/restic-check-cache-294136679 の一時キャッシュを使用しています
- リポジトリのパスワードを入力してください:
- リポジトリ dff64d39 が正常に開かれました。パスワードは正しいです。
- /tmp/restic-check-cache-294136679 に新しいキャッシュを作成しました
- リポジトリの排他ロックを作成する
- インデックスをロードする
- すべてのパックをチェック
- スナップショット、ツリー、ブロブをチェックする
- [0:00] 100.00% 3 / 3 スナップショット
- エラーは見つかりませんでした。
データ復旧ここが重要なポイントです。データの復元が切り札です。 データ削除をシミュレートする環境を作成する- [root@centos7 ~]# cd data/
- [root@centos7 データ]# ll
- 合計 33796
- -rw-r--r-- 1 ルート ルート 13034487 2020年8月30日 goInception-linux-amd64-v1.2.3.tar.gz
- drwxr-sr-x 11 ルート 40 4096 12月24日 22:35 httpd-2.4.46
- -rw-r--r-- 1 ルート ルート 9363314 2020年8月5日 httpd-2.4.46.tar.gz
- -rw-r--r-- 1 ルート ルート 2846172 2020年10月14日 httpd-2.4.6-95.el7.centos.x86_64.rpm
- -rw-r--r-- 1 ルート ルート 0 1月16日 11:32 mingongge.file
- -rw-r--r-- 1 ルート root 4194304 1 月 16 日 16:24 mingongge.z01
- -rw-r--r-- 1 ルート root 4194304 1 月 16 日 16:24 mingongge.z02
- -rw-r--r-- 1 ルート ルート 965420 1月16日 16:24 mingongge.zip
- [root@centos7 データ]# rm -rf ./*
- [root@centos7 データ]# ll
- 合計 0
データ復旧誤って削除したデータをスナップショットから直接復元する - [root@centos7 ~]# restic -r /restic/backup_dir/ 4d20711e を復元 --target /root/
- リポジトリのパスワードを入力してください:
- リポジトリ dff64d39 が正常に開かれました。パスワードは正しいです。
- <スナップショット4d20711e of [/root/data] at 2021-06-04 03:40:47.878873654 -0400 EDT by root@centos7 >を /root/ に復元しています
- [root@centos7 ~]# ll /root/data/
- 合計 33796
- -rw-r--r-- 1 ルート ルート 13034487 2020年8月30日 goInception-linux-amd64-v1.2.3.tar.gz
- drwxr-sr-x 11 ルート 40 4096 12月24日 22:35 httpd-2.4.46
- -rw-r--r-- 1 ルート ルート 9363314 2020年8月5日 httpd-2.4.46.tar.gz
- -rw-r--r-- 1 ルート ルート 2846172 2020年10月14日 httpd-2.4.6-95.el7.centos.x86_64.rpm
- -rw-r--r-- 1 ルート ルート 0 1月16日 11:32 mingongge.file
- -rw-r--r-- 1 ルート root 4194304 1 月 16 日 16:24 mingongge.z01
- -rw-r--r-- 1 ルート root 4194304 1 月 16 日 16:24 mingongge.z02
- -rw-r--r-- 1 ルート ルート 965420 1月16日 16:24 mingongge.zip
上記のリカバリ方法は、どのスナップショットからデータを復元するかを指定することと同じです。スナップショットが複数ある場合があり、どのスナップショットから素早く復元すればよいか分からない場合は、「latest」パラメータを使用して、最新のバックアップスナップショットからデータを復元できます。 - [root@centos7 ~]# rm -rf /root/data/*
- [root@centos7 ~]# ll /root/data/
- 合計 0
- [root@centos7 ~]# restic -r /restic/backup_dir/ 最新のものを復元 --target /root/
- リポジトリのパスワードを入力してください:
- リポジトリ dff64d39 が正常に開かれました。パスワードは正しいです。
- <スナップショット94c62288 / [/root/data] at 2021-06-04 03:51:21.232686491 -0400 EDT by root@centos7 >を /root/ に復元しています
- [root@centos7 ~]# ll /root/data/
- 合計 33796
- -rw-r--r-- 1 ルート ルート 13034487 2020年8月30日 goInception-linux-amd64-v1.2.3.tar.gz
- drwxr-sr-x 11 ルート 40 4096 12月24日 22:35 httpd-2.4.46
- -rw-r--r-- 1 ルート ルート 9363314 2020年8月5日 httpd-2.4.46.tar.gz
- -rw-r--r-- 1 ルート ルート 2846172 2020年10月14日 httpd-2.4.6-95.el7.centos.x86_64.rpm
- -rw-r--r-- 1 ルート ルート 0 1月16日 11:32 mingongge.file
- -rw-r--r-- 1 ルート root 4194304 1 月 16 日 16:24 mingongge.z01
- -rw-r--r-- 1 ルート root 4194304 1 月 16 日 16:24 mingongge.z02
- -rw-r--r-- 1 ルート ルート 965420 1月16日 16:24 mingongge.zip
その他の経営紹介スナップショットを削除ここでのスナップショットとバックアップは同じファイル名です。スナップショットが多すぎる場合は、定期的に削除する必要があります。通常、バックアップに必要な期間は約30日間ですが、特に重要なデータの場合は、実際の状況に応じてさらに時間がかかる場合があります。 - [root@centos7 ~]# restic -r /restic/backup_dir/ スナップショット
- リポジトリのパスワードを入力してください:
- リポジトリ dff64d39 が正常に開かれました。パスワードは正しいです。
- ID 時間 ホスト タグ パス
- ---------------------------------------------------------------------------------
- 4d20711e 2021-06-04 03:40:47 centos7 /root/data
- 3e5b7dea 2021-06-04 03:46:34 centos7 /root/data/mingongge.zip
- 94c62288 2021-06-04 03:51:21 centos7 /root/data
- ---------------------------------------------------------------------------------
- 3枚のスナップショット
- [root@centos7 ~]# restic -r /restic/backup_dir/ 4d20711e を忘れてください
- リポジトリのパスワードを入力してください:
- リポジトリ dff64d39 が正常に開かれました。パスワードは正しいです。
- [0:00] 100.00% 1 / 1 個のファイルを削除しました
- [root@centos7 ~]# restic -r /restic/backup_dir/ スナップショット
- リポジトリのパスワードを入力してください:
- リポジトリ dff64d39 が正常に開かれました。パスワードは正しいです。
- ID 時間 ホスト タグ パス
- ---------------------------------------------------------------------------------
- 3e5b7dea 2021-06-04 03:46:34 centos7 /root/data/mingongge.zip
- 94c62288 2021-06-04 03:51:21 centos7 /root/data
- ---------------------------------------------------------------------------------
- 2枚のスナップショット
- #この方法は復元と同じで、どちらもスナップショット ID を指定します。
この削除方法ではスナップショットのみが削除され、参照されているファイルはリポジトリ内に残ります。つまり、リポジトリのサイズは変更されず、データを消去するには `prune` パラメータを使用する必要があります。 - [root@centos7 ~]# restic -r /restic/backup_dir/ プルーン
- リポジトリのパスワードを入力してください:
- リポジトリ dff64d39 が正常に開かれました。パスワードは正しいです。
- インデックスを読み込んでいます...
- すべてのスナップショットを読み込んでいます...
- 2つのスナップショットでまだ使用中のデータを見つける
- [0:00] 100.00% 2 / 2 スナップショット
- 中古パックを検索中...
- 削除と再パックのためのパックの収集
- [0:00] 100.00% 19 / 19パック処理済み
- 再パック: 0 ブロブ / 0 B
- これにより、0 個のブロブ / 0 個の B が削除されます
- 削除対象: 0 個のブロブ / 0 バイト
- 合計プルーン: 0 ブロブ / 0 B
- 残り: 2990 ブロブ / 72.175 MiB
- プルーニング後の未使用サイズ: 0 B (残りのサイズの 0.00%)
- 終わり
次のコマンドを使用して、上記の 2 つの手順を同時に実行することもできます。これは、マージ操作と同等です。 - restic 忘れる --keep-last 1 --prune
- #--keep-last 1 最後のスナップショットを削除しない
スナップショットの削除の詳細については、https://restic.readthedocs.io/en/latest/060_forget.html を参照してください。 リポジトリのパスワード管理`key` コマンドを使用して同じリポジトリに複数のパスワードを設定できます。また、`add`、`list`、`remove`、`passwd` を使用してパスワードを管理することもできます。 - [root@centos7 ~]# restic -r /restic/backup_dir/ キーリスト
- リポジトリのパスワードを入力してください:
- リポジトリ dff64d39 が正常に開かれました。パスワードは正しいです。
- ID ユーザー ホスト作成
- ---------------------------------------------
- *d216779f ルート Centos7 2021-06-04 03:28:34
- ---------------------------------------------
- [root@centos7 ~]# restic -r /restic/backup_dir/ キーを追加
- リポジトリのパスワードを入力してください:
- リポジトリ dff64d39 が正常に開かれました。パスワードは正しいです。
- 新しいパスワードを入力してください:
- パスワードをもう一度入力してください:
- 新しいキーを< root@centos7 のキー、2021-06-04 04:43:18.024358447 -0400 EDT m =+18.001857421に作成>として保存しました
- [root@centos7 ~]# restic -r /restic/backup_dir/ キーリスト
- リポジトリのパスワードを入力してください:
- リポジトリ dff64d39 が正常に開かれました。パスワードは正しいです。
- ID ユーザー ホスト作成
- ---------------------------------------------
- *d216779f ルート Centos7 2021-06-04 03:28:34
- 33d0b428 ルート Centos7 2021-06-04 04:43:18
- ---------------------------------------------
- [root@centos7 ~]# restic -r /restic/backup_dir/ キー削除 33d0b428
- リポジトリのパスワードを入力してください:
- リポジトリ dff64d39 が正常に開かれました。パスワードは正しいです。
- 削除されたキー 33d0b428cba5c62585f1190432e61d46b88b4a6418c693d09ec47db596eace1f
- [root@centos7 ~]# restic -r /restic/backup_dir/ キーリスト
- リポジトリのパスワードを入力してください:
- リポジトリ dff64d39 が正常に開かれました。パスワードは正しいです。
- ID ユーザー ホスト作成
- ---------------------------------------------
- *d216779f ルート Centos7 2021-06-04 03:28:34
- ---------------------------------------------
- [root@centos7 ~]# restic -r /restic/backup_dir/ キー パスワード
- リポジトリのパスワードを入力してください:
- リポジトリ dff64d39 が正常に開かれました。パスワードは正しいです。
- 新しいパスワードを入力してください:
- パスワードをもう一度入力してください:
- 新しいキーを< root@centos7 のキー、2021-06-04 04:51:13.658184739 -0400 EDT m =+27.022974479に作成>として保存しました
- [root@centos7 ~]# restic -r /restic/backup_dir/ キーリスト
- リポジトリのパスワードを入力してください:
- リポジトリ dff64d39 が正常に開かれました。パスワードは正しいです。
- ID ユーザー ホスト作成
- ---------------------------------------------
- *a62168f6 ルート Centos7 2021-06-04 04:51:13
- ---------------------------------------------
- #パスワードが正常に更新されました。IDの変更を確認できます。
よくある質問https://restic.readthedocs.io/en/latest/faq.html より詳しい機能や操作方法については、ご興味のある読者の皆様はご自身でインストールして体験してみてください。すべて試した結果、Resticは非常に強力で、高速、安全、そして効率的なバックアップツールだと感じました。重要なのは、オープンソースで無料であることです。これは素晴らしいことです。強くお勧めします。 |