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 を使ってリアルタイムなサーバー間ファイル同期を実現する | レンタルサーバー・自宅サーバー設定・構築のヒント
コメント