Backup by rsync (+ssh)

2000.12.8 updated

Linux/UNIX 上のデーターを(別の Linux/UNIX マシンに)バックアップしたり、2つのマシンのあるディレクトリどうしの内容を同期するのに、どうしているでしょうか?私の場合、以前は NFS でマウントして、cp -a (コピー)したりしていたのですが、環境が変わってから NFS を利用できなくなってからは、rsync を使うようになりました。

この rsync によるバックアップというのは、使うまでは「設定その他が必要で面倒そう...」と思っていたのですが、実際にやってみると手動でバックアップ・同期するだけなら設定も必要なく、あっさり使えました。

また、ssh と併用することでポートフォワーディング先のマシンやインターネットの先にあるマシンともバックアップ・同期が取れますので、便利なことこの上ないのです。scp でコピーするよりも高速ですしね(rsync はデフォルトでは rsh を利用します)。

というわけで、手抜き大好きユーザーのための rsync + ssh 利用バックアップ方法を簡単に書いておきます。

利用するための環境

バックアップ元のマシン、バックアップ先のマシンともに、

必要があります。

最近の Linux などの FreeUNIX 環境ならば、rsync は最初からインストールされているか、パッケージが用意されているでしょう。Kondara MNU/Linux の場合は普通にインストールすれば最初からインストールされていることが多いでしょうし、インストールされていない場合には、Binary CD (Install CD) に含まれています。Vine/Linux の場合は、オプショナルパッケージ集である VinePlus にパッケージがあります。

ssh に関しては、最近は OpenSSH (+ OpenSSL) が利用されることが多いようです。Kondara 1.1/1.2/2000 の場合には NonFree 扱いですので、商用版CDや雑誌添付CDには含まれておらず、FTP サイトからダウンロードする必要があります。Vine/Linux の場合には VinePlus に含まれています。OpenSSH をインストールするには、OpenSSL を一緒に(または事前に)インストールする必要があります。

これらをバックアップ元、バックアップ先のマシンの両方にインストールし、その後少なくともバックアップ元からバックアップ先のマシンに ssh でログインできる環境になっていることが必要です(ssh を利用しない場合は rsh でログインできる必要がある)。

バックアップ方法

バックアップ元のマシンから

rsync -avz -e ssh (バックアップ元ディレクトリ) (バックアップ先マシン名):(バックアップ先ディレクトリ)

を実行するだけです。例えば、バックアップ元の /home/test 以下の内容をバックアップ先のマシン filesrv の /home/backup 以下にバックアップするときは、

rsync -avz -e ssh /home/test/ filesrv:/home/backup/

とします。ssh を利用せず、rsh で行う場合には -e ssh は不要です。もちろん、バックアップ先ディレクトリに書き込める権限が必要となります。

コマンド入力後、パスフレーズまたはパスワードを聞かれるので、それに答えた後にバックアップが始まります。バックアップするファイル数が多いとバックアップ開始まで少々時間がかかりますが、バックアップ速度は単純に scp するよりはるかに高速です。

当然のことながら、2回目以降の実行時にはファイルのタイムスタンプを比較して更新されたファイル、追加されたファイルのみバックアップされます。

この方法では、2回目以降の実行時にバックアップ元で更新されたファイル、追加されたファイルだけがバックアップ先にコピーされますが、削除されたファイルはバックアップ元でそのままになります。バックアップ元で削除されたファイルは、バックアップ先でも削除したい場合には

rsync -avz -e ssh --delete (バックアップ元ディレクトリ) (バックアップ先マシン名):(バックアップ先ディレクトリ)

と、--delete オプションを付加します。これでバックアップ元で削除されたファイルは、バックアップ時にバックアップ先でも削除されますので、バックアップ元とバックアップ先が完全に同期されます。

rsync の主要なオプション

独断と偏見で、よく利用するようなオプションを以下に挙げておきます。その他豊富なオプションについては、man rsync で参照のこと。

これらのオプションを利用すれば、だいたい思うようにバックアップすることができるでしょう。通常は、a オプションに v, z, --delete, --exclude を利用すれば事足りるのではないかと思います(--exclude は *~ や *.bak を指定することで、エディタなどが作った予備バックアップファイルが除外される)。

定期的なバックアップ、同期

rsync を --deamon オプションをつけて起動することで、rsync サーバーとして利用可能になります。この場合、/etc/rsyncd.conf に利用するための設定を書くことになります。

ただ、頻繁に同期を必要としないような利用法、ちょっとした個人的なバックアップや同期なら手動でやるか、cron でやらせた方がお手軽だと個人的には思います。

 

 

[ Go Linux Memo ]