restic--linuxのバックアッププログラム


hacktheboxで打ったターゲットの上でresticプログラムを実行しますrootに権限を持つ必要があるのでこれを勉強しました
https://restic.readthedocs.io/こちらは公式サイトです
https://github.com/restic/resticgithubアドレス
上記の手順に従ってインストールをダウンロードできます
使用することもできます
apt-get install restic 

公式サイトによると、ソースコードから構築する必要がある場合はgo 1.9以上のバージョンが必要です.詳細は公式サイトにマニュアルがあります.
resticが使用するとき、gitと似たようなコマンドがあるような気がします.これらのサブコマンドは使用できます.--helpヘルプマニュアルを参照してください.

倉庫準備


各ディレクトリまたはファイルのバックアップには、resticでリポジトリと呼ばれる保存場所が必要です.
このリポジトリは、リモートまたはローカルまたは他のデバイスであってもよい
自動バックアップが必要な場合は、いくつかの環境変数によって設定する必要があります(自動バックアップでない場合は設定しなくてもかまいません):
リポジトリの場所:RESTIC_REPOSITORY
パスワードファイルの場所:RESTIC_PASSWORD_FILE,--password-file
環境変数RESTIC_PASSWORDの設定
バックアップの前に倉庫を初期化する必要があります.この倉庫は後でバックアップする保存として使用できます.
restic init -r ${path}

倉庫の初期化にはパスワードを設定してからこの倉庫にアクセスするには、このパスワードが必要です.
ターゲットマシンで使用されているのはリモートウェアハウスrest-serverというもう一つの紹介です
restリモートウェアハウスへのアクセス
restic -r rest:${URL}

バックアップ


たとえば、ローカルファイルをターゲット・ウェアハウスにバックアップする方法を示します.
restic  backup -r ${restic-repo}  ${dir} --verbose 

backupはresticサブコマンドの1つです.ターゲットファイルを倉庫にバックアップする他のオプションがあります.restic backup--helpを使用して表示できます.
-r${restic-repo}倉庫の場所はリモート倉庫であってもよい
${dir}バックアップが必要なディレクトリ
--verboseバックアップ情報の印刷
ターゲットマシンでsudo-lが表示するコマンドはsudo restic back-r rest:*
backupコマンドの下にfiles-fromバックアップ時にファイルを読み込むため、このオプションを使用してshadowファイルを読み取りroot権限を得てファイルを読み込む
バックアップするときは、上記のコマンドはroot権限の下にあることに注意してください.注意権限設定は、ターゲットが外部に接続できないため、ローカルでリポジトリを作成できないため、ファイルをローカルにバックアップするユーザーを別に設定したほうがいいです.
公式サイトによると、同じ倉庫に重複するデータがある場合は削除されますので、バックアップ中にファイルを含めるか無視できます.
バックアップに成功すると、バックアップされたウェアハウスにスナップショットが作成され、スナップショットidが生成されます.
このスナップショットは、今回のバックアップの結果、複数回のバックアップで複数のスナップショットが作成されます.もちろん、同じファイルの複数回のバックアップではデータは保存されません.ただし、倉庫にはすでにファイルがあります.
2つのスナップショットの比較
restic  -r ${restic-repo}  diff ${id} ${id} 
2つのスナップショットidで比較すると、2つのスナップショットの違いが統計されます.

倉庫の表示


バックアップに成功した後、倉庫の内容を表示
restic snapshots -r ${restic-repo} 

ターゲット・ウェアハウス内のすべてのスナップショットのリスト
 -c, --compact       use compact format
  -h, --help          help for snapshots
  -H, --host host     only consider snapshots for this host
      --last          only show the last snapshot for each host and path
      --path path     only consider snapshots for this path (can be specified multiple times)
      --tag taglist   only consider snapshots which include this taglist (can be specified multiple times) (default [])

ホストラベルまたはディレクトリ、またはスナップショットを組み合わせてフィルタ

倉庫の整合性と一貫性の確認


restic check -r ${restic-repo}
ファイルが破損している場合は、チェック後にエラーメッセージが表示されます.
この場合、スナップショットを復元すると、ファイルエラーでリカバリできないという同じエラーメッセージが表示されます.
--read-dataすべてのデータファイルのステータスをチェック
 

バックアップリストア


 
リポジトリ内のスナップショットをターゲットディレクトリに復元
restic -r ${restic-repo} restore ${id} --target ${dir}

リポジトリ${restic-repo}からID${id}のスナップショットをターゲットディレクトリ${dir}に復元
このスナップショットのサブセットを復元するには、リカバリ中にファイルを含むか、フィルタリングします.
dumコマンドを使用してファイルを直接読み込むこともできます

スナップショットまたはトリムの削除


スナップショットのトリミングに時間がかかる
倉庫のスナップショットリストを取得した後
使用しないスナップショットを削除してスペース節約コマンドforgetがスナップショットのIDを指定する必要がある場合があります
restic -r ${restic-repo} forget ${id}

ただし、このスナップショットのファイル参照データはリポジトリに保存されます.
参照されていないデータを消去するにはpruneを使用します.
restuc -r ${restic-repo} prune
forgetコマンドにもこのパラメータがあります
自動バックアップを使用するとスナップショットが多くなり、削除時の煩雑な削除も同様の設定で自動的に削除できます.