- 16 Linux
- 7 MySQL
- 5 javascript
- 3 jQuery
- 1 画像
- 6 Google Chorme
- 4 xampp
- 1 css
- 1 PHP
- 3 Poderosa
- 1 LINE API
- 3 Windows
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