■rsyncを利用したデータ同期
シェルアカウント無しでサーバのコンテンツを同期更新するための手段の一つ。サーバ側はchrootで運用でき任意のディレクトリをトラバースされることもなくftpなどでアカウント発行して運用を行うよりも安心。rsyncはssh経由で暗号化も可能だが、ここでは割愛。
1)サーバ側の設定
rsyncをデーモンとして起動するための設定ファイルを作成する。
[code]# vi /etc/rsyncd.conf
uid = root
gid = wheel
use chroot = yes
max connections = 4
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
dont compress = *.gz *.tgz *.zip *.pdf *.sit *.sitx *.lzh *.bz2 *.jpg *.gif *.png
[hostdata01]
comment = hostdata 01
hosts allow = xxx.xxx.xxx.xxx/32
hosts deny = *
path = /var/www/host01/
auth users = user01
secrets file = /etc/rsyncd.secrets
read only = no
[hostdata02]
comment = hostdata 02
hosts allow = xxx.xxx.xxx.xxx/32
hosts deny = *
path = /var/www/host02/
auth users = user02
secrets file = /etc/rsyncd.secrets
read only = no
[/code]
認証のためのパスワードファイルを作成する。
[code]# vi /etc/rsyncd.secrets
user01:password01
user02:password02[/code]
パーミッションを変更する
[code]# chmod 0600 /etc/rsyncd.secrets[/code]
デーモンモードで起動する(できるだけportは変更しておく)
[code]# rsync –daemon –config=/etc/rsyncd.conf –port=10873 [/code]
iptablesの設定を変更する
[code]# vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 10873 -j ACCEPT[/code]
iptablesを再起動する
[code]# service iptables restart[/code]
2)クライアント側の設定
[code]# rsync –port=10873 -avz ./hostcontens/ rsync://user01@serveraddress/hostdata01/[/code]
これでhostcontents以下の内容がサーバの/var/www/host02/に同期される。
差分更新になるので一度目は時間がかかるが2回目以降は短時間で完了する。