ファイルのバックアップ/ミラーリングをする (rsync)

対象プラットフォーム: FreeBSD 7.x / FreeBSD 6.x


はじめに

PCに保存したデータは、HDDの障害などでいとも簡単に失われてしまうことが多く、日ごろからのバックアップは非常に重要です。
ファイルのバックアップについては、多数のユーティリティが提供されていますが、UNIX環境では「rsync」と呼ばれる非常に強力なバックアップツールが利用可能です。

このページでは、この「rsync」の利用方法について説明します。

「rsync」のインストール

「rsync」はデフォルトでシステムにインストールされていませんので、別途システムにインストールする必要があります。

インストールはportsを利用して行います。
portsの取得および展開方法については、「最新のportsを取得して展開する」を参照してください。

portsの展開が完了した後、下記手順で「rsync」をmakeし、インストールします。

「rsync」のインストール
$ /usr/ports/net/rsync
$ make config-recursive
$ make install clean

利用方法

次に、rsyncを使った簡単なバックアップの方法について説明します。

ローカルでのミラーリング

まずはじめに、同一マシン内でのファイルのミラーリングを試してみます。
rsyncは転送元と転送先の差分を計算し、ファイルの変更部分および増分のみを転送するため、2回目以降のバックアップはより高速に実行されます。

ローカルでのミラーリング
$ rsync -av --delete /usr/ports /home/work/

上記の例では、「/usr/ports」の内容を「/home/work/」下に作成された「ports」ディレクトリ下にミラーリングします。
「--delete」の指定によって、転送元に存在しないファイルはすべて削除されますので注意してください。

SSH経由でのリモートホストからのミラーリング

次に、SSH経由でリモートホストに接続し、そこに存在するファイルをローカルにミラーリングしてみます。

SSH経由でのリモートホストからのミラーリング
$ rsync -av --delete -e "ssh -p 2222" hogehoge@192.168.16.1:/usr/ports /home/work/

上記の例では、IPアドレスが「192.168.16.1」のホストの「2222」番ポートにSSHで接続し、ユーザ「hogehoge」としてログインを試みます。
パスワードの入力後、接続先のホストの「/usr/ports」の内容を、ローカルの「/home/work/」下に作成された「ports」ディレクトリ下にミラーリングします。

このとき注意しなくてはいけないのは、リモートホストのファイルはユーザ「hogehoge」によってアクセスされるため、「hogehoge」がアクセスする権限のないファイルについてはミラーリングされない点です。

そういった意味では、いまいち使い勝手がよくないかもしれません。

「rsyncd」を利用した高度な利用方法

ここまで、rsyncをスタンドアロンで利用する方法について説明してきましたが、rsyncの真骨頂はrsyncをサーバとして動作させたときに発揮されます。
ここでは、rsyncをサーバとして動作させて利用する方法について説明します。

「/usr/local/etc/rsyncd.conf」の設定

まずはじめに、rsyncをサーバとして動作させた際の設定ファイルとなる「rsyncd.conf」を編集します。
FreeBSDにおいて、rsyncをportsから構築すると、この設定ファイルは「/usr/local/etc/rsyncd.conf」に格納されますので、このファイルを以下のように編集します。

「/usr/local/etc/rsyncd.conf」の設定
pid file = /var/run/rsyncd.pid
uid = root
gid = wheel
max connections = 4
syslog facility = local5

[ports]
path = /usr/ports
comment = ports directory
read only = yes

上記はrsyncを動作させるのに必要な最低限の設定です。
設定ファイルのフォーマットは、sambaの設定ファイルである「smb.conf」に非常に良く似ているので、分かりやすいと思います。

「uid = root」および「gid = wheel」は、バックアップするファイルを読みに行く際にどのユーザ権限で処理を行うかの設定です。
また、「[ports]」の箇所はモジュールと呼ばれ、「path = /usr/ports」で設定されたディレクトリを呼び出すためにシンボルとなる部分になります。
上記の設定では、このディレクトリに対し「read only = yes」の設定によって、rsyncクライアントからの読み込みのみを許可しています。

「inetd.conf」の設定

rsyncはそれ単独でデーモンとして起動させることもできますが、通常はinetdやtcpserver経由で利用することが多いようです。

ここでは、inetd経由でrsyncを起動させるようにします。
「/etc/inetd.conf」に以下の記述を追加してください。

「inetd.conf」の設定
rsync stream tcp nowait root /usr/local/bin/rsync rsync --daemon

設定完了後、以下のようにしてinetdを再起動させてください。

inetdの再起動
$ /etc/rc.d/inetd restart

rsyncクライアントからの利用方法

上記の設定によって、rsyncはクライアントからTCP 873番ポートにアクセスがあると、inetd経由で起動されます。
クライアントのマシンで以下のようにすることにより、rsyncd経由でファイルをミラーリングすることが出来ます。

rsyncクライアントからの利用方法
$ rsync -av --delete 192.168.16.1::ports /work

上記の例では、rsyncdが動作しているIPアドレス「192.168.16.1」のサーバに対し、「ports」のモジュール名で指定されたディレクトリの内容を、ローカルの「/work」以下のディレクトリにミラーリングします。

コピー元/コピー先のどちらでrsyncdを動かすか?

一般的に、バックアップするサーバが能動的に動作してコピーするケースが多く、こういったケースではコピー元のマシンにおいてrsyncdを動作させることになりますが、その逆も可能です。

ケースによって使い分けてください。


あなたの探し物は見つかりましたか?
まさにこれだ
参考になった
ちょっと違う
これじゃない

何かメッセージがあればお願いします

このメッセージを非公開にする

ご注意

・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。


まだ評価がありません

表示できるメッセージはありません。


目次に戻る
image