このチュートリアルでは、メインサーバーと呼ばれるサーバーにデータをバックアップする方法を示します。 、ここではバックアップサーバーという名前の別のホストに 、無料のソフトウェアバックアッププログラム Borg 。バックアップサーバーは、通常の使用ではメインサーバーが新しいデータのみを追加でき、古いバックアップを削除または変更できないように構成されます。この追加専用機能は、バックアップが別の場所にある別のサーバーに保存されるという事実と相まって、たとえば自然事故やメインサーバーに対するハッカーの攻撃によるデータ損失からバックアップを保護します。
このガイドに従うための前提条件は、 Debian Stretchを使用することです。 (9)または Debian Buster (10)2台のサーバーを使用できます。1台はメインサーバー そこからバックアップが取得され、別のバックアップサーバー バックアップアーカイブが保存される場所。最適な保護のために、これら2つのサーバーは別々の場所に配置する必要があります。
このガイドは、最初のセクションのバックアップサーバーでの構成から始まります。 2番目のセクションでは、メインサーバーを構成してから、バックアップとテストリストアを実行し、古いバックアップアーカイブを手動で削除する方法を示します。
1バックアップサーバーを構成します
1.1 borgをインストールし、新しいborgbackupユーザーを作成します
バックアップサーバー(バックアップを保存するサーバー)で、次のコマンドを使用してルートターミナルにBorgをインストールします。
apt install borgbackup
次に、間もなく作成するborgユーザーのパスワードを選択します。 (ユーザーごとにパスワードを設定する必要がありますが、通常はSSHキーを使用してバックアップサーバーに接続するため、このパスワードはほとんど使用されません。)ランダムな64文字のパスワードを生成する場合は、このコマンドを使用します。 :
表示されたborgユーザーのパスワードをクリップボードにコピーし、サーバー自体以外の安全な場所に保存します。
次に、borgbackupユーザーを作成します:
adduser borgbackupパスワードについて質問があったら、前にコピーしたパスワードを貼り付け、Enterキーを押してから、もう一度パスワードを貼り付けてから、Enterキーを押します。他に何も入力せず、Enterキーを押して次の質問に答えてください。
1.2borgbackupユーザーのSSHキーを生成する
ここで、su:
を使用して新しいユーザーになる必要があります。su borgbackup
cd次に、ユーザーの新しいSSHキーペアを生成します。
ssh-keygen -t ed25519Enterキーを押すと、一連の質問が表示されます。回答を空のままにし、コマンドが終了するまでEnterキーを数回押し続けます。キーにパスフレーズを設定しないでください。その質問でもEnterキーを押してください。
1.3バックアップディレクトリを作成する
次に、バックアップを保存するディレクトリを作成します。このディレクトリは、ボーグの用語ではボーグリポジトリとして定義されています。 。ディレクトリを単にborgbackupと呼びますが、代わりにメインサーバーのホスト名にちなんで名前を付けることもできます。
cd
mkdir borgbackup
chmod go-rwx borgbackup
chmod u + rwx borgbackup2メインサーバーとバックアップサーバーへの接続方法を設定します
2.1ボーグのインストール
次に、バックアップサーバーでの作業から、代わりにメインサーバーでの作業に移行します。
メインサーバー(バックアップを取りたいサーバー)で、次のコマンドを使用してルートターミナルにBorgをインストールします。
apt install borgbackup後で、メインサーバー(現在のサーバー)の外部IPアドレスが必要になります。このIPアドレスをコピーして、すぐに利用できるようにしてください。メインサーバーの外部IPアドレスを覚えていない場合は、次のコマンドを実行して表示します。
wget -qO- http://ipecho.net/plain | xargs echo2.2メインサーバーにバックアップサーバーへのアクセスを許可する
メインサーバーで実行するコマンド
次に、メインサーバーからバックアップサーバーに接続できるように、SSHキー認証を準備します。まず、次のコマンドを使用して、メインサーバー上のrootユーザーの公開SSHキーを表示します。
cat〜/ .ssh / id_*。pubroot用のSSH公開鍵がある場合は、この鍵が表示されているはずです。キーをクリップボードにコピーします。後でバックアップサーバー上のファイルに貼り付ける必要があります。
キーが表示されない場合は、キーペアを生成する必要があります。たとえば、その場合は次のコマンドを実行します: ssh-keygen -t ed25519 続いてEnterキーを繰り返し押します。
次に、公開SSHキーを使用してメインサーバー(現在の場所)からのアクセスを許可するようにバックアップサーバーに指示する必要があります。これを行うには、このコマンドを入力しますが、最初に BACKUPHOSTNAMEを置き換えます バックアップサーバーのホスト名:
ssh-copy-id -i〜/ .ssh / id_*。pub[メール保護]バックアップホスト名バックアップサーバーに接続します
ここで、手順1.1で作成したborgbackupユーザーのパスワードを入力する必要があります。その後、パスワードなしでborgbackupユーザーとしてバックアップサーバーに直接アクセスできるようになります。次に、次のコマンドを入力して、これが可能であることをテストします。BACKUPHOSTNAMEをバックアップサーバーのホスト名に置き換えます。
ssh[メール保護]BACKUPHOSTNAMEバックアップサーバーで実行するコマンド
このキーを使用してメインサーバーのIPアドレスからのアクセスのみを制限することにより、セキュリティをさらに強化します。
バックアップサーバーにとどまり、次のコマンドを実行します:
nano〜/ .ssh / authorized_keysこれで、sshで始まる長い行が表示されるはずです。カーソルがファイルの先頭にあることを確認します。同じ行のsshキーの前に次のデータを追加しますが、最初に SERVERIPADDRESSを置き換えてください。 サーバーのIPアドレス(このセクションの冒頭で調べたもの):
from ="SERVERIPADDRESS"、command ="borg serve --append-only --restrict-to-path / home / borgbackup / borgbackup /"、no-pty、no-agent-forwarding、no-port-forwarding 、no-X11-forwarding、no-user-rc追加したセクションと、その後に続くsshで始まる既存のセクションの間にスペース文字があることを確認してください。次に、Ctrl + Oでファイルを保存し、Ctrl+Xで終了します。現在、バックアップサーバーへのアクセスを2つの方法で制限しています。まず、メインサーバーのIPアドレスのみがアクセスを許可されます。次に、-append-onlyオプションを使用すると、borgリポジトリにデータを追加することのみが許可されますが、削除や変更は許可されません。
バックアップサーバーから切断してメインサーバーに戻ります
次のコマンドを実行して、バックアップサーバーを終了し、メインサーバーに戻ります。
終了2.3ボーグリポジトリのパスワードを選択する
ボーグリポジトリは、バックアップが保存される場所です。これは、選択する必要があることがわかっているborgリポジトリのパスワードによって保護されています。新しいバックアップを実行し、古いバックアップにアクセスするには、パスワードが必要です。自分でパスワードを考え出すか(最適なセキュリティのために最低20文字を選択)、次のコマンドを使用して64文字の長さのパスワードをランダムに生成できます。
ボーグリポジトリのパスワードをクリップボードにマークしてCtrl+Cを押してコピーします。このパスワードがないとバックアップにアクセスできないため、borgリポジトリのパスワードを安全な場所に保存することが不可欠です。そのため、今すぐサーバー以外の場所、たとえば自分のコンピューターのパスワードマネージャー(KeePassなど)にボーグパスワードのコピーを保存してください。
2.4borgリポジトリを作成する
ボーグの用語では、バックアップが保存される場所は borgと呼ばれます。 リポジトリ 。これで、このリポジトリを作成する準備として、パスワードが環境変数として設定されます。 パスワードを置き換えます 実際のパスワードを使用して、メインサーバーのrootユーザーとして以下のコマンドを実行します。
export BORG_PASSPHRASE='パスワード 'この方法でborgリポジトリを作成しますが、最初に BACKUPHOSTNAMEを置き換えます。 バックアップサーバーのホスト名:
borg init -erepokey-blake2[メール保護]バックアップホスト名 :/ home / borgbackup / borgbackup /これで、バックアップにborgを使用する準備が整いました。これは、次のセクションのトピックになります。
3メインサーバーからのバックアップ
3.1バックアップを手動で実行する
次の例では、バックアップに関係のない特定のディレクトリを除いて、メインサーバーのシステム全体がバックアップされます。
続行する前に、メインサーバーにrootとしてログインしていることを確認してください。まず、このコマンドを使用して、borgリポジトリのパスワードの環境変数を設定します(replace PASSWORD 実際のボーグリポジトリのパスワードを使用して:
export BORG_PASSPHRASE='パスワード '次に、次のコマンドを実行して、システム全体のバックアップを実行します。必要に応じて、-excludeで始まるディレクトリの除外を調整してください。たとえば、-exclude=mntを追加して/mntディレクトリの除外を追加したい場合があります。除外パターンの最初のスラッシュは入力しないでください。 /mntの代わりにmntを記述します。 BACKUPHOSTNAMEも変更する必要があります バックアップサーバーの実際のホスト名に。 borgは通常、実行元のディレクトリからバックアップを開始するため、最初にcd/コマンドを実行する必要があります。
cd / &&borg create --stats --progress --compress lz4 [email protected] BACKUPHOSTNAME :/ home / borgbackup / borgbackup / ::`hostname`-`date +%Y-%m-%d-%H-%M-%S` ./ --exclude =dev --exclude =mnt / borgbackup- Exclusive =proc --exclude =run --exclude =root / .cache / --exclude =sys --exclude =tmp &&cd初めてバックアップを実行するときは、しばらく時間がかかります(バックアップするデータが大量にある場合は、最大で数時間かかります)。ステータス行が、バックアップでどのファイルborgが処理しているかを正確にすばやく更新するのがわかります。 2回目以降は、最後のバックアップ以降の変更のみが送信されるため、バックアップがはるかに高速になります。
3.2cronを使用したバックアップのスケジュール
もちろん、手動バックアップを実行することを忘れないでください。定期的に自動バックアップを実行することをお勧めします。これを実現するために、最初にバックアップジョブを実行するシェルスクリプトを作成し、次にメインサーバーのrootユーザーとしてnanoエディターで編集します。
touch /usr/local/bin/borgbackup.sh
chmod go-rwx /usr/local/bin/borgbackup.sh
chmod u + rwx /usr/local/bin/borgbackup.sh
nano /usr/local/bin/borgbackup.sh次の行を新しいシェルスクリプトに挿入します:
#!/ bin / sh
export BORG_PASSPHRASE='パスワード '
cd / &&borg create --stats --progress --compress lz4 [email protected] BACKUPHOSTNAME :/ home / borgbackup / borgbackup / ::`hostname`-`date +%Y-%m-%d-%H-%M-%S` ./ --exclude =dev --exclude =proc --exclude =run --exclude =root / .cache / --exclude =mnt / borgmount --exclude =sys --exclude =tmp &&cdパスワードを置き換える必要があります ボーグリポジトリのパスワードで、 BACKUPHOSTNAMEを置き換えます バックアップサーバーのホスト名を使用して、最後に除外パターンを必要に応じて調整します。--exclude=mntを追加して、/mntディレクトリをバックアップから除外することもできます。 Ctrl + Oを押してnanoエディターにファイルを保存し、Ctrl+Xで終了します。
次に、ターミナルからスクリプトを実行してスクリプトをテストします。
/usr/local/bin/borgbackup.sh毎晩02:00にバックアップをスケジュールするには、作成したバックアップシェルスクリプトを/ etc / crontabに追加します:
nano / etc / crontab次に、バックアップジョブを使用してcrontabに新しい行を追加します。
#Borg経由でバックアップサーバーにバックアップ
00 02 * * * root /usr/local/bin/borgbackup.sh4ファイルを復元します(メインサーバーにログインしている間)
4.1作成されたバックアップのリストを表示する
バックアップからデータを復元できることを確認するまで、機能しているバックアップシステムはありません。したがって、次のステップは、以前に作成したバックアップを確認することです。これは、メインサーバーのルートターミナルから実行されます。これを行うには、バックアップアーカイブを追加のファイルシステムとしてマウントしますが、最初に、メインサーバーでrootユーザーとしてシェルスクリプトを作成して作成したバックアップのリストを確認します。
touch /usr/local/bin/borglist.sh
chmod go-rwx /usr/local/bin/borglist.sh
chmod u + rwx /usr/local/bin/borglist.sh
nano /usr/local/bin/borglist.shPASSWORD を置き換えて、新しいシェルスクリプトに以下を挿入します ボーグリポジトリのパスワードとBACKUPHOSTNAME バックアップサーバーのホスト名:
#!/ bin / sh
export BORG_PASSPHRASE='パスワード '
borg list -v [email protected] BACKUPHOSTNAME :/ home / borgbackup / borgbackup /Ctrl+Oに続いてCtrl+Xを使用してファイルを保存します。次に、次の方法でシェルスクリプトを実行します。
/usr/local/bin/borglist.shこれで、作成されたバックアップのリストが表示されます。したがって、最初のバックアップが作成された場合は、リストに1つの項目が表示されます。次に、アーカイブ名をマークしてクリップボードにコピーします。アーカイブ名は最初の列にあります。アーカイブ名は、メインサーバーのホスト名と、それに続く日付と時刻で構成され、次の形式になります:mainhostname-2019-01-31-12-59-59。
3.4データの検証/復元
ここで、borgリポジトリ全体をFUSEファイルシステムマウントとしてマウントします。これは、バックアップされたすべてのファイルを含むborgリポジトリがファイルシステムになることを意味します。このファイルシステムは、lsやcdなどの通常のコマンドを介してトラバースおよび検査できます。
borgリポジトリを簡単にマウントできるようにするために、シェルスクリプトの形式でコマンドのショートカットを作成します。次の方法でシェルスクリプトを作成および編集します。
touch /usr/local/bin/borgmount.sh
chmod go-rwx /usr/local/bin/borgmount.sh
chmod u + rwx /usr/local/bin/borgmount.sh
nano /usr/local/bin/borgmount.sh次に、以下の行をシェルスクリプトに挿入しますが、最初にパスワードを変更してください。 以下でborgリポジトリのパスワードに変更し、 BACKUPHOSTNAME バックアップサーバーのホスト名へ:
#!/ bin / sh
mkdir -p / mnt / borgbackup
export BORG_PASSPHRASE='パスワード '
borg mount [email protected] BACKUPHOSTNAME :/ home / borgbackup / borgbackup / / mnt / borgbackupCtrl+Oに続いてCtrl+Xを使用してファイルを保存します。次に、次の方法でシェルスクリプトを実行します。
/usr/local/bin/borgmount.shこれで、borgリポジトリが/ mnt/borgbackupにマウントされます。これはcdとlsを使用して確認できます。
cd / mnt / borgbackup
lsこれで、バックアップが存在するディレクトリが表示されます。そのディレクトリにcdで移動し(DIRECTORYNAMEを、入力したlsコマンドの結果として表示されるディレクトリの名前に置き換えます)、lsを使用して内容を確認します。
cd DIRECTORYNAME
lsこれで、最後のアーカイブ(最後に作成されたバックアップ)を確認できるようになります。次のコマンドを使用して、ファイルが正しくバックアップされていることをdiffと比較できます(例:/ etc / fstab)。
diff etc / fstab / etc / fstabdiffから出力が得られない場合、2つのファイルは同一であり、そのファイルのバックアップは機能しています。一方、最後のバックアップ以降にファイルを変更した場合は、ファイル内のどの行が異なるかがわかります。
必要に応じて、cpコマンドを使用して/ mnt / borgbackupのサブディレクトリからファイルをコピーするだけで、バックアップからファイルを復元できます。あなたは今ターミナルにいます。
最後に、ボーグヒューズマウントをアンマウントするスクリプトを作成します。
次の方法でシェルスクリプトを作成および編集します。
touch /usr/local/bin/borgumount.sh
chmod go-rwx /usr/local/bin/borgumount.sh
chmod u + rwx /usr/local/bin/borgumount.sh
nano /usr/local/bin/borgumount.sh次に、以下の行をシェルスクリプトに挿入します。
#!/ bin / sh
cd〜
umount / mnt / borgbackup
rmdir / mnt / borgbackupCtrl+Oに続いてCtrl+Xを使用してファイルを保存します。次に、次の方法でシェルスクリプトを実行します。
/usr/local/bin/borgumount.shこれでボーグヒューズマウントがアンマウントされ、ターミナルの/root/ディレクトリに配置されました。
4古いバックアップを整理します(バックアップとメインサーバーの両方へのアクセスが必要です)
ここで、バックアップサーバーとメインサーバーを切り替える必要があります。まず、バックアップサーバー上のコマンドから始めます。
しばらくすると、バックアップのサイズが大きくなる可能性があります。セキュリティ上の理由から、メインサーバーが古いバックアップを自動的に削除することは許可されていません。ただし、バックアップサーバーのディスク容量を節約するために、必要に応じて古いバックアップアーカイブの削除を一時的に許可することができます。
この除去プロセスは、ボルグの用語で剪定するために呼び出されます。プルーニングプロセスはバックアップサーバーで開始され、一時的な読み取り/書き込みアクセスが許可されます。次に、メインサーバーに接続してプルーニングコマンドを発行します。最後に、バックアップサーバーに再度アクセスして読み取り/書き込みアクセスを無効にし、古いバックアップが再び削除または変更されないようにします。
4.1一時的な読み取り+書き込みアクセスを許可する(バックアップサーバーから実行)
これから、バックアップサーバーで作業します。
したがって、バックアップサーバーに接続し、rootとしてログインします。読み取り+書き込みアクセスを許可するには、バックアップサーバーでファイル/home/borgbackup/.ssh/authorized_keysを変更する必要があります。これらのコマンドを発行してborgbackupユーザーになり、ファイルのバックアップを取り、nanoでファイルを編集します。
su borgbackup
cd
cp -a〜/ .ssh / authorized_keys〜/ .ssh / authorized_keys.bak
nano〜/ .ssh / authorized_keysこれで、nanoエディターでfrom=で始まる長い行が表示されるはずです。 Ctrl +Kを押してからCtrl+Uを押し、もう一度Ctrl + Uを押して線を切り、2本の同じ線ができるようにします。キーボードのUpキーを2回押して、カーソルを最初の行に設定します。次に、#文字を入力して最初の行をコメントアウトします。次に、キーボードのDownキーを押して、2行目に移動します。ここでは、-append-onlyの最初の位置に立つまで、キーボードのRightキーを使用して右に移動する必要があります。次に、Delキーを繰り返し押して、オプション--append-onlyを削除します。ファイルはほぼ次のようになります。最初の行をコメント化しており、2行目から--append-onlyが削除されていることに注意してください。
#from ="SERVERIPADDRESS"、command ="borg serve --append-only --restrict-to-path / home / borgbackup / borgbackup /"、no-pty、no-agent-forwarding、no-port- forwarding、no-X11-forwarding、no-user-rc ssh ...(行は続きます)...
from ="SERVERIPADDRESS"、command ="borg serve --restrict-to-path / home / borgbackup / borgbackup / "、no-pty、no-agent-forwarding、no-port-forwarding、no-X11-forwarding、no-user-rc ssh ...(行は続きます)..Ctrl + Oでファイルを保存し、Ctrl+Xで終了します。これで、borgリポジトリへの読み取り+書き込みアクセスが有効になりました。
4.2古いバックアップのプルーニング(メインサーバーから実行)
次に、rootユーザーとして新しいターミナルウィンドウでメインサーバーに接続します。
次に、メインサーバーにスクリプトを作成して、古いバックアップを整理(つまり削除)します。次の方法で、メインサーバーでシェルスクリプトを作成および編集します。
touch /usr/local/bin/borgprune.sh
chmod go-rwx /usr/local/bin/borgprune.sh
chmod u + rwx /usr/local/bin/borgprune.sh
nano /usr/local/bin/borgprune.sh次に、以下の行をシェルスクリプトに挿入します。次に、パスワードを置き換えます ボーグリポジトリのパスワードとBACKUPHOSTNAME バックアップサーバーのホスト名を使用します。また、保持する古いバックアップの数を調整する必要があります。この例では、毎日7回のバックアップ、毎週4回のバックアップ、毎月12回のバックアップを保持しています。
#!/ bin / sh
export BORG_PASSPHRASE='パスワード '
borg prune --stats --progress [email protected] BACKUPHOSTNAME :/ home / borgbackup / borgbackup / --prefix `hostname`- --keep-daily =7 --keep-weekly =4 --keep-monthly =12Ctrl+OおよびCtrl+Xを押して、ファイルを保存して終了します。次に、メインサーバーで作成したプルーンスクリプトを実行します。
/usr/local/bin/borgprune.shこのコマンドにはしばらく時間がかかりますが(最大で数時間かかる場合があります)、100%に到達するまでの2回のパスで、コマンドの進行状況を確認できます。
4.3読み取り+書き込みアクセスを禁止する(バックアップサーバーから実行)
次に、バックアップサーバーでの作業に戻ります。
メインサーバーでpruneコマンドが終了したら、borgbackupユーザーとしてバックアップサーバーに接続し、/ home / borgbackup / .ssh/authorized_keysファイルを再度編集して読み取り+書き込みアクセスを禁止します。
バックアップサーバーで次のようにします:
su borgbackup
cd
nano〜/ .ssh / authorized_keysnanoエディターで、キーボードのDelキーを押して、最初の行の先頭にある#文字を削除します。次に、下キーを押して、2行目に新しい#文字を挿入します。この後、ファイルは多かれ少なかれ次のようになります。
from ="SERVERIPADDRESS"、command ="borg serve --append-only --restrict-to-path / home / borgbackup / borgbackup /"、no-pty、no-agent-forwarding、no-port-forwarding 、no-X11-forwarding、no-user-rc ssh ...(行は続きます)...
#from ="SERVERIPADDRESS"、command ="borg serve --restrict-to-path / home / borgbackup / borgbackup / "、no-pty、no-agent-forwarding、no-port-forwarding、no-X11-forwarding、no-user-rc ssh ...(行は続きます)..Ctrl + Oでファイルを保存し、Ctrl+Xで終了します。これで、borgリポジトリへの読み取り+書き込みアクセスが無効になりました。
これで、バックアップは通常のように追加のみで続行でき、バックアップサーバーに保存されているバックアップを目的としたメインサーバーからの削除の試行から保護されます。
4.4最後のコメント
これで、オフサイトで追加専用のバックアップシステムが作成されました。これは、バックアップが2つの方法で保護されることを意味します。まず、バックアップはメインサーバーから物理的に分離されているという意味で保護されています。次に、最後に、すでに作成されたバックアップは、メインサーバーからの変更の試みから保護されます(手動プルーニングによって明示的に変更することを決定した場合を除く)。
Linux