2003-08-09 3歩

λ 自動rsync専用のssh設定

送信側でrsyncで送信先マシン専用の鍵ファイルを作成する。パスフレーズはなし。 sudo ssh-keygen -b 2048 -t rsa -N '' -f /root/.ssh/id_rsa-backup.hoge.org

/root/.ssh/config に以下のエントリを追加する。

Host backup.hoge.org
  IdentityFile /root/.ssh/id_rsa-backup.hoge.org
  Port 222

受信(サーバ)側はJailであると望ましい。/etc/ssh/sshd_config で

Port 222
PermitRootLogin forced-commands-only

とする。 /root/.ssh/authorized_keys に上記で作った鍵ファイルのうち公開鍵側をオプション付きで登録する。

command="rsync --server -tvlogDtpr --delete . /home/backup/src.hoge.org/",no-pty,no-port-forwarding ssh-rsa AAAA....

commandオプションに指定するのは、送信側が実行するrsyncコマンドを元にして

  • --server オプションを追加
  • その他のオプションは --exclude, --include 以外そのまま
  • srcディレクトリは .
  • destディレクトリは ホスト部分を除去したもの

となる。

転送しないディレクトリ・ファイルを記述した RsyncExclude を作って rsync -tvlogDtpr --delete --exclude-from=RsyncExclude / backup.hoge.org:/home/backup/src.hoge.org/ を定期的に実行するようにすれば完了。

RsyncExcludeは結構長くなってしまった。

/alt
/dev
/bin
/sbin
/modules
/modules.old
/kernel.*
/stand
# /home
/home/ncvs
/home/tmp
/proc
/tmp
# /usr
/usr/X11R6
/usr/bin
/usr/compat
/usr/etc
/usr/games
/usr/home
/usr/include
/usr/info
/usr/lib
/usr/libdata
/usr/libexec
/usr/man
/usr/obj
/usr/ports
/usr/sbin
/usr/share
/usr/src
/usr/tmp
# /usr/local
/usr/local/apache.bak
/usr/local/bin
/usr/local/dcc
/usr/local/include
/usr/local/info
/usr/local/lib
/usr/local/libdata
/usr/local/libexec
/usr/local/man
/usr/local/sbin
/usr/local/share
/usr/local/www
# /var
/var/local/etc/**/ok
/var/local/etc/**/control
/var/local/service/**/ok
/var/local/service/**/control
/var/qmail/queue
/var/run/log
/var/tmp
/var2

rsync でディレクトリの同期を取るも参考になる。

[]