バックアップ · 3 min read · Dec 05, 2025
経済的な追加専用オフサイトバックアップ:resticとWasabiを使用したDebian 10での設定

このガイドでは、Debian Buster上で無料のバックアップソフトウェアresticをインストールおよび構成し、クラウドストレージ会社Wasabiにオフサイトバックアップを保存する方法を示します。このガイドの主な利点は、必須の追加専用バックアップを提供することです。これは、一度バックアップが作成されると、それが上書きされたり、バックアップが作成されたシステムから削除されたりすることができないという意味です。これは、バックアップアーカイブが、元のサーバーでの自然災害(たとえば火災)や人為的な事故(ルートシェルプロンプトでのミスなど)から保護されることを意味します。また、バックアップは暗号化されて保存されるため、バックアップのパスワードを持つ人またはシステムのみがそれを読むことができます。
このガイドは、現状のまま提供されており、いかなる保証もありません。バックアップソフトウェアresticはまだバージョン1.0に達していないため、唯一のバックアップソリューションとして使用しないでください。最終的なトラブルに備えるために、ガイドの目的で使用するシステムのバックアップを開始する前に必ず取得してください。また、取得したバックアップが実際に機能することをテストリストアを通じて確認してください。
このガイドは、Debian Buster(Debian 10)を基にしており、テストされています。古いDebianバージョンはこのガイドの範囲外ですが、自分で実験したい場合は、Debian JessieまたはStretchに最近のバージョンのrestic、tinyproxy、rcloneをインストールするためにDebian Busterのaptパッケージリポジトリを追加することが可能です。
このガイドは5つの部分で構成されています:
最初の部分では、後でバックアップを保存するWasabiクラウドストレージのアカウントを準備します。Wasabiは、テスト目的のために30日間の無料トライアルを提供しています。
次に、rcloneをインストールおよび構成します。これは、Wasabiのストレージへのアクセスを提供し、同時にresticがストレージにアクセスするためのインターフェースを提供します。
第三に、tinyproxy - シンプルなプロキシサーバー - を準備します。これは、resticと一緒に追加専用の方法でストレージを機能させるための中間として必要です。
第四に、バックアッププログラムresticを設定します。
最後のステップとして、バックアップの作成と部分的なリストアの両方をテストします。
1 Wasabiクラウドストレージにアカウントを準備する
1.1 Wasabiアカウントを開始する
Wasabiには、こちらで見つけることができる30日間の無料トライアルがあります:
上記のウェブページのフォームに記入すると、Wasabiのウェブインターフェースへのアクセスデータが届きます。このページにアクセスデータを使用してログインします:
https://console.wasabisys.com/
1.2 データ用のバケットとロック用の別のバケットを作成する
これから「バケット」と呼ばれる2つのストレージコンテナを作成します。
ウェブページの右上にあるCreate Bucketという赤いアイコンをクリックして最初のバケットを作成します。最初のバケットは、後でDATABUCKETと呼ぶバックアップデータが保存される場所です。バケット名を選択する必要があります。たとえば、次の形式をバケット名のテンプレートとして使用できます:
*yourdomain.com*-restic-data上記のテンプレート名のyourdomain.comをバックアップしたいコンピュータのドメイン名に置き換えてください。DATABUCKET名を設定したら、それを書き留めてください。後でこのガイドのテンプレートでDATABUCKETのプレースホルダーを置き換える必要があります。
次に、バケットを配置したいリージョンを選択します。最適なパフォーマンスを得るためには、バックアップしたいサーバーのリージョン/大陸を選ぶことが良いです。したがって、サーバーがヨーロッパにある場合は、次のように選択できます:
eu-central-1次にNextを押します。
次のページには、Bucket VersioningとBucket Loggingの2つの選択肢が表示されます。これらの選択肢はデフォルト値、すなわちSuspend VersioningとSuspend Loggingのままにしておくことができます。次にNextをクリックし、Create Bucketをクリックします。
同じ手順を繰り返して、別のバケットを作成します。この2番目のバケットは、resticのロック情報を保存するためだけに使用されます。後でこれをLOCKBUCKETと呼びます。再度Create Bucketボタンをクリックし、この2番目のバケットの名前を選択します。たとえば、次の形式を使用できます:
*yourdomain.com*-restic-locks上記のテンプレートのyourdomain.comをバックアップ対象のコンピュータのドメイン名に置き換えてください。LOCKBUCKET名を設定したら、それを書き留めてください。後でこのガイドのテンプレートでLOCKBUCKETを置き換える必要があります。
(Resticは、同時に1つのクライアントのみがバックアップまたはリストアを行うことを確認するためにロックを使用します。ロック情報のために別のバケットが必要な理由は、resticがロックを追加および削除できる必要があるためであり、したがって削除を許可するバケットが必要です。)
1.3 ユーザーを作成する
最上部のアイコン行にあるIAMアイコンをクリックします。これで、アイデンティティとアクセス管理に入ります。左の列でUsersをクリックします。次に、赤いアイコンの+ Create userをクリックし、バックアップしたいサーバーのドメイン名など、論理的なユーザー名を選択します。たとえば、ユーザー名はsystem1.example.comにすることができます。ユーザー名を設定したら、それを書き留めて、後でこのガイドのテンプレートでUSERNAMEをあなたの値に置き換えられるようにします。
ダイアログのAccessセクションで、Programmatic (create API key)というチェックボックスをチェックします。次にNextをクリックします。ユーザーのためのグループを作成します。すべてのサーバーが1つのメインドメインの下にある場合、このメインドメインが適切なグループ名になる可能性があります。次にNextをクリックします。次のページ(ポリシー作成)では、単にNextをクリックします。最後に、Create userボタンをクリックします。
ダイアログウィンドウの下部にあるSecret Keyのテキストの右側にある小さなリンクShowをクリックします。ACCESS KEYとSECRET KEYの両方をテキストファイルに保存します。この情報は、バックアップするクライアントコンピュータからWasabiへのアクセスを構成する際に必要です。
1.4 ポリシーを作成する
作成したユーザーが2つのバケットにアクセスできるようにするために、アクセスポリシーを作成する必要があります。
Wasabiウェブインターフェースの左列でPoliciesをクリックします。次に、赤いボタンCreate Policyをクリックします。ポリシー名には、バックアップしたいコンピュータのドメイン名を選択できます。たとえばsystem1.example.comなどです。ポリシー名を左上のフィールドに書き込みます。
以下は、実際のポリシーのベースとして使用するテンプレートです。このテンプレートをテキストエディタにコピーし、テキストファイル内のDATABUCKETの2つの出現を最初のバケットに与えた名前に置き換え、LOCKBUCKETの2つの出現を2番目のバケットに選んだ名前に置き換えます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::*DATABUCKET*",
"arn:aws:s3:::*DATABUCKET*/*",
"arn:aws:s3:::*LOCKBUCKET*",
"arn:aws:s3:::*LOCKBUCKET*/*"
]
}
]
}テキストエディタから作成したポリシーをコピーし、Wasabiウェブページのダイアログウィンドウの大きなメインフィールドに貼り付けます。次にSaveをクリックします。
1.5 ポリシーを適用する
ポリシーは、ユーザーに適用する必要があります。左側のUsersをクリックし、作成したユーザーをクリックします。次に、灰色の水平メニューの右側にあるPermissionsタブをクリックします。次に、ポリシー作成時に選択したポリシー名の最初の文字をテキストフィールドの下に入力し始めます。ポリシー名をクリックします。これで、ポリシーがユーザーに適用されました。
1.6 データバケットを不変(追加専用)に設定する
セキュリティ上の理由から、クライアント(バックアップが作成されるコンピュータ)から既に作成されたバックアップを上書きすることが不可能であることを望みます。これを達成するために、Wasabiの不変機能を使用します。WasabiのウェブインターフェースでStorageをクリックします(上部バーにあります)。次に、DATABUCKET(おそらくrestic-dataで終わるもの)をクリックします。白い歯車をクリックしてSettingsを開きます(右上にあります)。次に、白い上部バーでComplianceをクリックします。Compliance Modeの右側にあるスライダーをクリックしてこのモードを有効にします。Delete After Retentionを有効にすることもできますが、Retention Timeに大きな値を設定する必要があります。これは、クライアントが削除を試みた後、各ファイルが保持される最小時間です。たとえば、ここに100年を設定します。(このフィールドを空白にして無限の保持時間にすることはできないようです。)これは、データが100年間安全であり、その期間中は削除または変更できないことを意味します。設定を保存するにはSaveを押します。
1.7 ロックフォルダを作成する
WasabiのウェブインターフェースでStorageをクリックします(上部バーにあります)。次に、LOCKBUCKET(restic-locksで終わるもの)をクリックします。
次に、Create folderという緑のボタンを押します。フォルダ名をlocksにして、resticのロックファイルに後で使用できるようにします。
これで、Wasabiウェブインターフェースでの構成が完了しました。次のセクションでは、バックアップしたいコンピュータのターミナルで作業を開始します。
2 rcloneをインストールおよび構成する
2.1 まず、既存のシステムを介してバックアップを作成する
バックアップを取得するコンピュータにアクセスする時が来ました。
このコンピュータのバックアップを既存のシステムで取得することを忘れないでください!また、続行する前にバックアップが機能することをテストリストアを通じて確認してください。何かが期待通りに機能しない場合、機能する状態に戻ることが重要です。
2.2 rcloneをインストールする
以下に示すすべての行は、ターミナルに入力してEnterを押す必要があります。
バックアップを作成するコンピュータのターミナルに接続します。たとえば、SSHを介して接続します。次に、rootになるためにこのコマンドを発行します:
su -Enterを押し、rootパスワードを入力します。新しいプログラムをDebianリポジトリからインストールするためにrootアクセスが必要です。
次に、rcloneをインストールします:
apt install rclone2.3 rcloneをWasabiに接続するように構成する
次に、rcloneを構成するために、このコマンドを入力します:
rclone config次に、次のように入力します:
nここで、構成の名前を選択する時が来ました。名前には(ドット)は許可されていませんが、(ダッシュ)は許可されています。rclone構成に名前を付けるために、このテンプレートを使用しますが、最初にyourdomain-comを自分のドメイン名に置き換え、ドメイン名の(ドット)を(ハイフン)に置き換えます:
wasabi-yourdomain-com-restic
rclone構成に付けた名前を保存してください。後でプレースホルダーRCLONECONFIGをその名前に置き換えます。
次に、4を押してAmazon S3 Compliant Storage Providersを選択し、Enterを押します。
次に、7を押してWasabi Object Storageを選択し、Enterを押します。
次に、1を押してEnter AWS credentials in the next stepを選択し、Enterを押します。
以前にファイルに保存したACCESS KEYをコピーして貼り付け、Enterを押します。
次に、同じファイルに保存したSECRET KEYをコピーして貼り付け、Enterを押します。
バケットのリージョンを入力します。リージョンは、Wasabiウェブインターフェースの上部行でStorageをクリックすると見つけることができます。たとえば、次のリージョンをヨーロッパ用に入力し、Enterを押します:
eu-central-1
S3 APIのエンドポイントには、バケットがEUリージョンにある場合、次のように入力します:
s3.eu-central-1.wasabisys.comバケットが米国にある場合は、このドキュメントでエンドポイントの名前を見つけてください:
Location constraintは空白のままにしてEnterを押します。
Owner gets FULL_CONTROLのために1を押してEnterを押します。
Edit advanced configのためにyを押してEnterを押します。
chunk sizeのデフォルト値のためにEnterを押します。
disable checksumのデフォルト値のためにEnterを押します。
session tokenのデフォルト値のためにEnterを押します。
Upload concurrencyには16を入力してEnterを押します。
force_path_styleのデフォルト値のためにEnterを押します。
v2_authのデフォルト値のためにEnterを押し、Enterを押します。
Yes this is OKのためにyを押してEnterを押します。
quit configのためにqを押します。
これで、rcloneの構成が完了しました。
2.4 rcloneがWasabiで機能することをテストする
次に、次のコマンドでテストファイルを作成します:
echo test >> /tmp/test.txt
次のコマンドでテストファイルを転送します。ただし、最初にRCLONECONFIGをあなたの値に、またDATABUCKETをこのパラメータの値に変更する必要があります。すべてが1行にあります:
rclone -v sync /tmp/test.txt RCLONECONFIG:DATABUCKET/すべてが正常に機能すれば、DATABUCKETのWasabiウェブインターフェースにtest.txtファイルが表示されるはずです。ファイルが表示されるまでに約1分かかることがあることに注意してください。また、restic-locksで終わる別のバケットで転送をテストしてください:
rclone -v sync /tmp/test.txt RCLONECONFIG:LOCKBUCKET/再度Wasabiウェブインターフェースを確認し、LOCKBUCKETにあるテキストファイルを確認してください。
2.5 systemdを介してresticにrcloneを提供するように設定する
Rcloneには、クラウドストレージスペース(この場合はWasabi)を使用し、resticに互換性のある方法で提供するための組み込み機能があります。この方法でrcloneを実行するのは、rclone serve resticというコマンドを介して行われ、サーバープロセスとして機能します。このサーバープロセスが2つ必要です:1つはほとんどすべてのためのメインのもので、もう1つはresticロックファイルのみを扱うものです。
まず、resticユーザーを作成します:
adduser resticrootユーザーからresticユーザーにrclone構成をコピーします:
su restic
mkdir -p /home/restic/.config/rclone
exit
cp -a /root/.config/rclone/rclone.conf /home/restic/.config/rclone/
chown restic.restic /home/restic/.config/rclone/rclone.confsystemd制御ファイルを作成します。たとえば、nanoエディタを使用して:
nano /etc/systemd/system/restic-data.serviceファイルには以下のデータが含まれている必要があります。前述のように、RCLONECONFIGの値とDATABUCKETの値を設定に合わせて変更する必要があります。
[Unit]
Description=Rclone serve restic data on wasabi
After=network.target
[Service]
Type=simple
User=restic
Group=restic
ExecStart=/usr/bin/rclone serve restic *RCLONECONFIG*:*DATABUCKET* --addr=127.0.0.1:8001 --append-only --retries 10 --transfers 20 --s3-upload-concurrency 8 --s3-chunk-size 16M
Restart=always
RestartSec=5
StartLimitInterval=0
[Install]
WantedBy=multi-user.target ファイルを保存します。これは、rcloneがWasabiクラウドストレージバケットに対してresticインターフェースを提供するためのものです。作成したsystemdサービスは次回の起動時に自動的に開始されますが、まずは次のコマンドで有効にする必要があります:
systemctl daemon-reload
systemctl enable restic-data
systemctl start restic-data次に、サービスが開始されたことを確認します:
systemctl status restic-dataすべてが正常に動作していれば、Active: active (running)が表示されるはずです。ステータス表示を終了するにはqを押します。
これで、ポート8001でrclone serve resticサービスがインストールされ、追加専用のバケットに接続され、バックアップが保存されます。
次に、ポート8002でresticロックシステム用の別のサービスが必要です。このサービスは、読み書き可能な2番目のバケットに接続されます。したがって、少しの変更を加えて、先ほど行った手順をもう一度繰り返します。
systemd制御ファイルを作成します:
nano /etc/systemd/system/restic-locks.serviceファイルには以下のデータが含まれている必要があります。ExecStart=で始まる行は、以下の3行に分割された1行の長い行です。RCLONECONFIGの値とLOCKBUCKETの値を設定に合わせて変更してください。
[Unit]
Description=Rclone serve restic locks on wasabi
After=network.target
[Service]
Type=simple
User=restic
Group=restic
ExecStart=/usr/bin/rclone serve restic *RCLONECONFIG*:*LOCKBUCKET* --addr=127.0.0.1:8002
Restart=always
RestartSec=5
StartLimitInterval=0
[Install]
WantedBy=multi-user.target ファイルを保存し、次のコマンドで有効にします:
systemctl daemon-reload
systemctl enable restic-locks
systemctl start restic-locksサービスが開始されたことを確認します:
systemctl status restic-locksすべてが正常に動作していれば、Active: active (running)が表示されるはずです。
qを押して終了します。
これで、ポート8001でメインサービスの追加専用モードのrclone serve resticシステムdサービスと、ポート8002で読み書きモードのロックサービスの両方が作成されました。
3 tinyproxyを準備する
tinyproxyは、resticに提示される統一されたフロントエンドとして2つのサービスを融合させます。バックアップしたいコンピュータのrootターミナルにインストールされます:
apt install tinyproxy次に、tinyproxy構成ファイルのバックアップを作成します:
cp -a /etc/tinyproxy/tinyproxy.conf /etc/tinyproxy/tinyproxy.conf.bakファイルがここに見つからない場合、/etc/tinyproxy.confに見つかることがよくあります。
次に、構成ファイルを編集します:
nano /etc/tinyproxy/tinyproxy.confこれから詳細に説明するいくつかの変更を行う必要があります。まず、プリセットのポート番号をコメントアウトし、新しいポート番号を設定します:
#Port 8888
Port 8000次に、localhostからの接続のみを許可することが重要です。したがって、Listen行を追加します:
#Listen 192.168.0.1
Listen 127.0.0.13つ目に、タイムアウト値を1時間に変更します:
#Timeout 600
Timeout 36004つ目に、tinyproxyを2つのrclone serve restic systemdサービスに接続します。以下に示す順序で記述する必要があります:一般的なルールが最初で、特定のルールが最後です。tinyproxyでは、最後のルールが常に勝つためです。
ReversePath "/" "http://127.0.0.1:8001/"
ReversePath "/locks" "http://127.0.0.1:8002/locks"最後に、tinyproxyを逆専用モードでのみ動作させます:
#ReverseOnly Yes
ReverseOnly Yesこれで、必要なすべての編集が完了しました。構成ファイルを保存してください。nanoでは、Ctrl+Oを押して保存し、Ctrl+Xを押してnanoを終了し、ターミナルに戻ります。
tinyproxyを有効にするために、次に再起動します:
systemctl stop tinyproxy
systemctl start tinyproxy最後に、tinyproxyが正しく実行されていることを確認します:
systemctl status tinyproxyqを押して終了します。これで、tinyproxyはresticによって使用するために構成されました。次のセクションでは、restic自体を設定します。
4 resticバックアッププログラムを設定する
最後に、構成の最終ステップを実行します。resticバックアッププログラムを設定します。まず、resticをインストールします:
apt install restic次に、resticの環境変数を初期化する必要があります。まず、ターミナルに次のように入力してresticリポジトリの場所を指定します:
export RESTIC_REPOSITORY='rest:http://127.0.0.1:8000/'バックアップ用の強力なパスフレーズを決定してください。パスフレーズは、安全な場所に保存することが重要です。バックアップにアクセスするためには、これが必要です。バックアップは完全に暗号化されています。以下のPASSPHRASEを、選択したパスワードに置き換え、次のコマンドをターミナルに入力します:
export RESTIC_PASSWORD='PASSPHRASE'
次に、resticリポジトリを作成します:
restic initresticが正常に機能することをテストしましょう。すでにRESTIC_PASSWORD環境変数にパスワードを保存しているので、スナップショットをリストするためにリポジトリにアクセスできます:
restic snapshotsすべてが正常に機能すれば、バックアップをまだ作成していないため、空のリスト(0 snapshots)が表示されるはずです。
これで、バックアップの保存のためにすべてが準備され、バックアップとリストアの最終ステップに進むことができます。
5 バックアップと部分的なリストアの両方をテストする
このチュートリアルの最後のステップでは、システムの完全バックアップを行い、その後部分的なリストアをテストします。この目的のために、2つのシェルスクリプト(1つはバックアップ用、もう1つはリストア用)を作成します。
5.1 バックアップスクリプトを準備する
まず、cronで適切な間隔(たとえば、1日1回)で実行できるバックアップスクリプトが必要です。バックアップスクリプトは、rootのみがアクセスできるファイルとして作成し、次にnanoで編集できます:
touch /usr/local/bin/backup-restic.sh
chown root.root /usr/local/bin/backup-restic.sh
chmod 700 /usr/local/bin/backup-restic.sh
nano /usr/local/bin/backup-restic.sh以下は、バックアップスクリプトの内容の例であり、PASSPHRASEを前に選択したパスフレーズに変更する必要があります。
#!/bin/sh
export RESTIC_REPOSITORY='rest:http://127.0.0.1:8000/'
export RESTIC_PASSWORD='*PASSPHRASE*'
restic backup / --exclude=/dev --exclude=/proc --exclude=/sys --exclude=/run --exclude=/tmp --exclude=/mnt --exclude=/root/.cache上記の除外に注意してください。バックアップから除外されるディレクトリを変更したい場合があります。
5.2 バックアップスクリプトを実行する
ファイルを保存し、ターミナルを介して実行します:
/usr/local/bin/backup-restic.sh
数秒後、resticがファイルをトラバースし、バックアップが完了した割合の推定値が表示されるのを確認できます。ETAは、最終化までの残り時間の大まかな推定値です。最初のバックアップはかなり時間がかかりますが、その後のバックアップは、前回のバックアップ以降に変更または作成されたファイルのみを転送する必要があるため、迅速です。
バックアップが定期的に実行されるように、crontabに行を追加します。最初に/etc/crontabを次のように編集します:
nano /etc/crontab次に、バックアップのスケジュールを追加します。たとえば、バックアップを毎日午前2時に実行する場合、次の行を/etc/crontabに追加します:
00 02 * * * root /usr/local/bin/backup-restic.sh(cronはmm:hh形式で動作することに注意してください。つまり、時間の前の分です。)
5.3 リストアが機能することをテストする
バックアップシステムは、リストアが正常に機能することをテストするまで完全ではありません。resticのファイルシステムをマウントして、最新のバックアップをブラウズします。ターミナルに次のように入力し、PASSPHRASEを前に選択したresticパスフレーズに変更します:
mkdir /mnt/restic
export RESTIC_REPOSITORY='rest:http://127.0.0.1:8000/'
export RESTIC_PASSWORD='PASSPHRASE'
restic mount /mnt/restic &
cd /mnt/restic
cd snapshots
cd latest
lsこれで、最後のスナップショット(最後に作成されたバックアップ)を見ることができます。diffを使用して、ファイルが正しくバックアップされているかどうかを確認できます。たとえば、/etc/fstabの場合:
diff /mnt/restic/snapshots/latest/etc/fstab /etc/fstabdiffから出力が得られない場合、2つのファイルは同一であり、そのファイルのバックアップが正常に機能したことを意味します。逆に、最後のバックアップ以降にファイルを変更した場合、どの行が異なるかが表示されます。
最後に、resticのファイルシステムマウントをアンマウントします:
cd ~
umount /mnt/restic/5.4 最後の注意事項
おめでとうございます。すべてがうまくいった場合、追加の堅牢な機能を持つ二次バックアップシステムのセットアップを達成しました:
バックアップシステムはオフサイトであり、バックアップが作成されるコンピュータに発生する可能性のある事故からデータを保護します。
また、追加専用であり、バックアップが作成されるコンピュータ上のウイルスや事故が以前に作成されたバックアップを上書きすることは決してできません。バックアップを削除する唯一の方法は、Wasabiウェブインターフェースにログインすることです。したがって、Wasabiウェブインターフェースへのログインデータを保護する必要があります。できれば、より高いセキュリティのために2FA(二要素認証)を有効にすることができます。
cronジョブを有効にすると、バックアップシステムは自動になります。ただし、バックアップが正常に機能することを確認するために、定期的にリストアをテストすることを常に忘れないでください。
多くの他のオンラインクラウドストレージサービスと比較して、Wasabiを使用することには、競争力のある価格での迅速な転送という利点があります。
このシステムは、最初のバックアップシステムが何らかの理由で失敗した場合の追加の保険として、二次バックアップに適しています。最後に、重要な利点は、必要なサイズにスケールすることです - 単にGBストレージごとに支払うだけで(ただし、常に最低1TBの支払いが必要です)、実質的に最大ストレージスペースの閾値はありません。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。