WEBサイト制作に関するTips

Linux » rsync :: 外部サーバーのデータを自サーバーにバックアップ

【手で叩く時】
rsync -avz --checksum -e ssh {account}@{host}:{path}

◆ポイント
-e ssh でSSHで接続(実行中にパスワードの入力を求められる)
--password-file を付けると「daemonでの実行時でしか使えません」と怒られる
(The --password-file option may only be used when accessing an rsync daemon.)


【cronやbashなどで実行するとき】
rsync -avz --checksum --password-file={passwd_file} {module_account}@{host}::{module_name}

◆ポイント
【外部サーバー側の作業】
/etc/rsync.conf と /etc/rsync.secrets を設置
/etc/rsync.secrets のパーミッションは0600に設定
rsync --daemon --config=/etc/rsync.conf を実行してデーモンを起動しておく
(&再起動時にも有効になるように /etc/rc.d/rc.local に rsync --daemon --config=/etc/rsync.conf を追記)

【操作サーバー側の作業】
-e ssh は外す
アカウントは /etc/rsync.conf の「auth users」で指定したrsync用のユーザー(useraddで設定するユーザーとは別)
:以降にはパスを記述するのではなく /etc/rsync.conf で定義した「::モジュール名」を記述
passwd_file のパーミッションを 0600 に設定しないと --password-fileが通らない

◆cronやbashなどで実行した時の動作確認
1>>rsync.log 2>>rsync.error_log を最後に付ければ実行ログとエラーログを確認できる

◆ハマりどころ1
daemon 実行時には -e ssh を外さないとパスワードを聞かれる

◆ハマりどころ2
/etc/rsync.secrets には {module_account}:{module_password} にを記述し、
それに対応させる passwd_file には {module_password} のみを記述する

== /etc/rsync.conf の記述例 ==

#
# Global options
#
uid = root
gid = root
use chroot = yes
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 127.0.0.1
hosts deny = *
dont compress = *.gz *.tgz *.zip *.pdf *.sit *.sitx *.lzh *.bz2 *.jpg *.gif *.png
#
# Module options
#
[backup]
comment = crontab backup
path = /var/spool/cron/
auth users = bak
secrets file = /etc/rsync.secrets
read only = no
2014-09-11 17:24:50