SSHを使って自動rsyncバックアップを設定する方法 - TechRepublic

SSHを使って自動rsyncバックアップを設定する方法 - TechRepublic

Linuxには、シンプルで自動化されたネットワークバックアップを作成するために必要なツールがすべて揃っています。さらに、セットアップも非常に簡単で、ネットワークが稼働している限り、バックアップの必要がなくなるまで確実に機能します。

この魔法はどうやって起こるのでしょうか?簡単ですよ、友よ。やり方をお見せしましょう。

参照: データ バックアップ ポリシー (Tech Pro Research)

必要なもの

まず第一に、この作業はLinuxから、そしてLinuxへ行うことになります。Linuxであれば、どのディストリビューションを使用していても構いません。ソースマシンとターゲットマシンの両方にopenssh-serverがインストールされている必要があります。どちらかのマシンにopenssh-serverをインストールする必要がある場合は、GUIパッケージマネージャーからインストールするか、コマンドラインからインストールを実行してください。

たとえば、Ubuntu にインストールするには次のコマンドが必要です。

sudo apt-get で openssh-server をインストールします

SSHキーも生成する必要があります。これは重要です。パスワードレスのSSHキーを生成するからです。確かにセキュリティ上の問題になる可能性もありますが、これは安全なネットワーク上で使用されていることを前提としています。ネットワーク(またはソースとターゲット)が安全でない場合は、パスワードレスのバックアップのようなオプションを検討すべきではないでしょう。ただし、あるマシンから別のマシンへの自動rysncバックアップが必要な場合は、以下の手順で実行できます。

SSHキーを生成する

最初のステップは、パスワードなしのSSHキーを生成することです。以下の手順に従ってください。

  1. ターミナルウィンドウを開きます。
  2. ssh-keygen -t rsaコマンドを発行します
  3. 保存場所の入力を求められた場合は、キーボードの Enter キーを押します。
  4. パスワードの入力を求められた場合は、キーボードの Enter キーを押します。
  5. パスワードの確認を求められた場合は、キーボードの Enter キーを押します。

上記の手順により、SSHキーペアが生成されます。~/.sshを確認すると、以下の名前の2つのキーが見つかります(キー生成時にデフォルトを選択した場合)。

  • id_rsa
  • id_rsa.pub

公開鍵のコピー

次に、id_rsa.pub キーをソースからターゲットにコピーする必要があります。これは ssh を使って行います。手順は以下のとおりです。

  1. ターミナルウィンドウを開きます。
  2. コマンドssh-copy-id -i ~/.ssh/id_rsa.pub USERNAME@REMOTE_HOST_IPを発行します( USERNAMEはリモート ホスト上のユーザー名、REMOTE_HOST_IPはリモート ホストの IP アドレスです)。
  3. プロンプトが表示されたら、リモート ホストのパスワードを入力します。

SSH キーはターゲット上の必要な場所に自動的にコピーされ、バックアップ スクリプトを作成する準備が整います。

バックアップスクリプト

このプロセスのために、非常にシンプルなバックアップスクリプトを作成します。バックアップ元フォルダは~/TEST、ターゲット上のバックアップ場所は~/BACKUPS/と仮定します。必要に応じて変更してください。シンプルなスクリプトは以下のようになります。

#!/bin/sh
rsync -e 'ssh -p 22' -avzp /home/USER1/TEST REMOTE_HOST_IP:/home/USER2/BACKUPS

  • USER1はソースマシン上のユーザー名です
  • TESTはバックアップするディレクトリです
  • REMOTE_HOST_IPはターゲットマシンの実際のIPアドレスです
  • USER2はターゲットマシン上のユーザー名です
  • BACKUPSはバックアップを保存するディレクトリです

そのファイルをrsync_scriptという名前で保存し、コマンドchmod +x rsync_scriptを使用して実行権限を付与します。

自動化プロセスを設定する前に、 ./rsync_scriptコマンドでスクリプトをテストしてください。エラーなく完了し、ターゲットマシン上にバックアップディレクトリが見つかるはずです。

バックアップの自動化

cronを使ってスクリプトのバックアップを自動化します。これを非常に簡単にするには、rsync_scriptを以下のいずれかのディレクトリにドロップします。

  • /etc/cron.hourly (1時間ごとの実行用)
  • /etc/cron.daily (毎日実行用)
  • /etc/cron.weekly (週次実行用)
  • /etc/cron.monthly (月次実行用)

バックアップ スクリプトを特定の時間に実行する必要がある場合は、 crontab -eコマンドを発行して次のような行を追加し、cron ジョブを手動で作成する必要があります。

00 00 * * * /usr/local/rsync_script

上記のcrontabエントリは、rsync_scriptを/usr/local/に移動し、毎日午前0時にスクリプトを実行することを前提としています。cronファイルを保存すると(通常は[Ctrl]+[x]を押します)、次回午前0時にスクリプトが実行されます。

シンプルに

ssh 経由で rsync を使用してバックアップするこの方法は非常に簡単ですが、これをさらに複雑にしたり、ssh 経由で複数のバックアップを実行するスクリプトを作成したりすることもできます。

注意:これはパスワード不要のバックアップシステムです。セキュリティが確保されていないネットワークやシステムを扱っている場合は、他のシステムを検討することをお勧めします。それ以外の場合は、これはあるマシンから別のマシンにデータをバックアップするための非常に迅速かつ簡単なソリューションです。

Tagged: