rsync を使用したバックアップ・ミラーリング

ALL
スポンサーリンク

rsync を使用したバックアップ・ミラーリングです。

sshを使う場合

ssh接続できる環境では特に設定は必要なく、セキュアにコピーが行えます。
ただし、転送速度は暗号化のオーバヘッド分劣ります。

コピー先
コピー元ホストからssh接続できることが必要です。
その他、必要な設定はありません。

コピー元
sshでリモートホストへ接続できることが必要です。

下記形式で rsync を実行すると、「コピー元ディレクトリ」を、「コピー先ホスト」の「コピー先ディレクトリ」へミラーリングします。

rsync -a --delete --progress -e ssh コピー元ディレクトリ コピー先ユーザ名@コピー先ホスト:コピー先ディレクトリ

例えば、次のようにします。

rsync -a --delete --progress -e ssh /home/ user001@test.example.com:/backup/home/

サーバに負担をかけずにバックグラウンドでコピー で紹介したように、–bwlimitオプションで転送速度を指定できます。
下記例では、秒間1000KBytes で転送します。

rsync -a --delete --bwlimit=1000 --progress -e ssh /home/ user001@test.example.com:/backup/home/

sshを使わない場合

sshを使う場合に比べて高速にコピーできますが、rsync用の設定が必要です。
またコピー経路の暗号化はされないので、LAN内の使用にとどめた方が良いです。

コピー先

rsync の接続を受け入れることが必要です。
ここでは、CentOS で xinetd を使用します。
以下でインストールします。

yum install xinetd

次に /etc/xinetd.d/rsync ファイルで、disable = の行を disable = no にします。

/etc/rsyncd.conf を作成します。
形式は次のようにします。

# Rsync logging Settings
transfer logging = yes
## Global Settings
uid = root
gid = root
[モジュール名1]
    path = コピー先ディレクトリ
    hosts allow = コピー元ホスト
    hosts deny = *
    read only = no
[モジュール名2]
    path = コピー先ディレクトリ
    hosts allow = コピー元ホスト
    hosts deny = *
    read only = no
 :

例えば、次のようにします。
xx.xx.xx.xx/yy は CIDR形式でのアドレス、zz.zz.zz.zz はIPアドレスです。

# Rsync logging Settings
transfer logging = yes
## Global Settings
uid = root
gid = root
[home]
    path = /home/
    hosts allow = xx.xx.xx.xx/yy
    hosts deny = *
    read only = no
[www]
    path = /var/www/
    hosts allow = zz.zz.zz.zz
    hosts deny = *
    read only = no

設定後、xinetd を起動します。

/etc/init.d/xinetd start

コピー元

下記形式で rsync を実行すると、「コピー元ディレクトリ」を、「コピー先ホスト」の/etc/rsyncd.confの「モジュール名」に記載のディレクトリへミラーリングします。

rsync -a --delete --progress コピー元ディレクトリ コピー先ホスト::モジュール名

例えば、次のようにします。x.x.x.x の箇所はコピー先IPアドレスにします。

rsync -a --delete --progress /home/ x.x.x.x::home
rsync -a --delete --progress /var/www/ x.x.x.x::www

サーバに負担をかけずにバックグラウンドでコピー で紹介したように、–bwlimitオプションで転送速度を指定できます。
下記例では、秒間1000KBytes で転送します。

rsync -a --delete --bwlimit=1000 --progress /var/www/ zz.zz.zz.zz::www

コピー先で SELinuxが有効になっていると、コピー元では、「rsync error: error starting client-server protocol (code 5) at main.c(xxxx) [receiver=yy.yy.yy]」のような出力、コピー先では「rsync: chroot /home/ failed: Permission denied (13)」がログに残って失敗します。

コピー先の /etc/sysconfig/selinux で下記のように SELINUX=disabled として、SELinuxを無効にすればコピーできます。

/etc/sysconfig/selinux

SELINUX=disabled

参考

rsync
rsync
UNIXの部屋 コマンド検索:rsync (*BSD/Linux)
lsyncd と rsync を使ってリアルタイムなサーバー間ファイル同期を実現する | レンタルサーバー・自宅サーバー設定・構築のヒント

コメント