今回はGo言語で書かれた、オープンソースでマルチプラットフォームなバックアップツールであるResticを紹介します。前後編に分かれており、今回はインストールとバックアップ方法2種類を解説します。
Resticとは
第653回で紹介したDéjà DupはDuplicityというバックアップツールのフロントエンドです。しかしバージョン43.
Duplicityは高性能ではあるもののコマンドラインオプションが複雑で使用するのは難しく、Duplyというコマンドラインのフロントエンドまであるくらいです。
ではこのResticはどうなのかと思って調査したところ、後発
こんな素晴らしいツール、使わない手はありません。
注意点としては、まだまだ開発版であり後方互換性が失われる可能性があることです。とはいえ復元できなくなるようなことはないのでそれほど気にする必要はありません。現に0.
使用するResticのバージョン
ResticはUbuntuのリポジトリにパッケージがあります。22.
インストール
前述の理由で公式ビルドのバイナリを使用します。オーソドックスに/usr/
公式ビルドはbzip2形式で配布されています。Ubuntu
$ sudo apt install lbzip2
あとは共通で、次のコマンドを実行してください。
$ cd /usr/local/bin $ sudo wget https://github.com/restic/restic/releases/download/v0.15.2/restic_0.15.2_linux_amd64.bz2 $ sudo bzip2 --decompress restic_0.15.2_linux_amd64.bz2 $ sudo mv restic_0.15.2_linux_amd64 restic $ sudo chmod +x ./restic
前述のとおり執筆段階で最新版の0.
入力するコマンドを補完したい
$ sudo restic generate --bash-completion /etc/bash_completion.d/restic $ . /etc/bash_completion
ローカルにバックアップ
手始めにローカルにバックアップする方法を紹介しますが、特にお勧めなわけではありません。理由は後述しますが、いかに簡単かわかりやすいのでとにかく例示します。
想定としては、ローカルで動作しているSamba
何はともあれ次のコマンドを実行してください。
$ sudo mkdir -p /srv/restic/samba $ sudo restic init --repo /srv/restic/samba/ enter password for new repository: enter password again: created restic repository 00aba54843 at /srv/restic/samba/ Please note that knowledge of your password is required to access the repository. Losing your password means that your data is irrecoverably lost.
バックアップ先のフォルダーを作成し、そこをリポジトリとして初期化すると、パスワードを聞かれるので2回入力しています。このパスワードを忘れたらリポジトリにアクセスできなくなるのでくれぐれもご注意ください。
実際にバックアップを実行します。次のコマンドを実行してください。
$ sudo restic -r /srv/restic/samba/ --verbose backup /srv/samba/ open repository enter password for repository: repository 00aba548 opened (version 2, compression level auto) created new cache in /root/.cache/restic lock repository no parent snapshot found, will read all files load index files start scan on [/srv/samba/] start backup on [/srv/samba/] scan finished in 0.219s: 387 files, 582.663 MiB [0:01] 268 files 396.720 MiB, total 387 files 582.663 MiB, 0 errors Files: 387 new, 0 changed, 0 unmodified Dirs: 13 new, 0 changed, 0 unmodified Data Blobs: 629 new Tree Blobs: 14 new Added to the repository: 502.136 MiB (475.047 MiB stored) processed 387 files, 582.663 MiB in 0:02 snapshot 55fd44e5 saved
たった3つのコマンドを実行するだけでバックアップできてしまいました。
前述のとおりローカルへのバックアップはあまりお勧めしません。たとえローカルのバックアップであっても後述のMinIOによるストレージバックエンドにバックアップを置くのがお勧めです。理由としては、MinIOはメンテナンスが充分に容易であること、スケールすることなどが挙げられます。
MinIOにバックアップ
次に、MinIOにバックアップしてみます。MinIOは第655回で紹介したオプジェクトストレージ機能を提供するサーバーです。MinIOもGo言語で書かれており、オープンソースでマルチプラットフォームです。
MinIOサーバーは当然のことながらどこにあってもいいのですが、今回はResticと同じサーバーにインストールします。
まずはMinIOのインストール方法から紹介します。第655回とは少し違いがあります。次のコマンドを実行してください。
$ sudo adduser --system --group --no-create-home minio-user $ sudo mkdir /opt/minio $ cd /opt/minio/ $ sudo wget https://dl.min.io/server/minio/release/linux-amd64/minio $ sudo chown minio-user: -R /opt/minio/ $ sudo mkdir /srv/minio $ sudo chown minio-user: /srv/minio/
ご覧のとおりユーザー
続けて設定ファイルを作成します。
$ sudo editor /etc/default/minio # Volume to be used for MinIO server. MINIO_VOLUMES="/srv/minio/" # Use if you want to run MinIO on a custom port. # MINIO_OPTS="--address :9199" # Root user for the server. MINIO_ROOT_USER=unique-minioadmin # Root secret for the server. MINIO_ROOT_PASSWORD=secure-minioadmin-password
環境変数を指定しています。これは一目瞭然でしょう。
デーモンとして動作するように設定します。次のコマンドを実行してください。
$ sudo bash -c "cd /etc/systemd/system/; curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service" $ sudo sed -i -e "s|/usr/local/bin/|/opt/minio/|g" -e "s|/usr/local/|/opt/minio/|" /etc/systemd/system/minio.service $ sudo systemctl daemon-reload $ sudo systemctl enable --now minio.service
これでMinIOがサーバーとして動作するようになりました。
ではリポジトリを作成します。サーバー名は
$ export AWS_ACCESS_KEY_ID=unique-minioadmin $ export AWS_SECRET_ACCESS_KEY=secure-minioadmin-password $ restic -r s3:http://hamana.local:9000/restic init
環境変数としてMINIO_
」AWS_
」MINIO_
」AWS_
」
実際にバックアップを行います。次のコマンドを実行してください。
$ sudo restic -r s3:http://hamana.local:9000/restic --verbose backup /srv/samba/
オブジェクトストレージを自力で用意できる場合はMinIOでいいのですが、そうではない場合、あるいは自力で用意したくない
今回は一旦ここで区切りとします。後編では、Rclone経由でWebDAVサーバーにバックアップする方法と、リストアなど運用に関する内容をお届けします。