Linux、Mac間で相互に必要なファイルのバックアップを取ることにしました。
バックアップツールはrsyncを使います。rsyncは変更のあったファイルだけコピーする、ネットワーク越しのバックアップに適したツールでLinux(CentOS 5.2)、Mac(OS X 10.5.6)とも、標準で入ってます。
作業としてはこんな感じです。
今回はrootユーザでバックアップを実行しますが、rootでのsshログインを許可するのはセキュリティ上好ましくありません。
簡単なアクセス制限をかけます。
- パスワードでのログインを禁止(公開鍵使用のみ許可)
- 公開鍵に対してログイン元ホストを限定
アクセス制限の方法についてはPAMを使う、forced-commands-onlyで他のコマンドを実行できないようにする、専用の一般ユーザで実行する、など他にもいろいろ考えられます。要求されるセキュリティレベルに応じて判断、設定してください。
それでは実際の手順です。今回の環境ではLinuxのホスト名が「cent」、Macのホスト名が「mini」で相互にホスト名の解決ができるようにしています。
SSH設定
Linux側のほうだけのせます。Macでも同じことをやります。
設定をミスるとログインできなくなる恐れがありますので慎重に、動作確認とりつつ行ってください。
まずは鍵作って通信先のauthorized_keysに登録します。パスワードなしのsshログインができるようになります。
ログイン先に.sshがない場合はログイン先でもssh-keygenを実行するかmkdir、chmod 700で作ってください。
[root@cent ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: ... [root@cent ~]# cat .ssh/id_rsa.pub | ssh mini 'cat >> .ssh/authorized_keys'
パスワードでのsshログインを禁止します。
[root@cent ~]# vi /etc/ssh/sshd_config ... PermitRootLogin without-password ... [root@cent ~]# /etc/init.d/sshd reload
ログイン先のauthorized_keysにfrom="ログインホスト"を追記してログインホストを限定します。IPアドレスでもかまいません。
[root@cent ~]# ssh mini mini:~ root# vi .ssh/authorized_keys from="cent" ssh-rsa AAA<略>UCQ== root@cent
バックアップ対象のパターンリスト
このへんを参考にバックアップ対象、除外対象をリストしたファイルを作りましょう。
Linux
[root@cent ~]# cat ~/rsync.list # tmpディレクトリ、tmpファイルは除外 - tmp/ - *.tmp # /etc,/root,/home,/var/www以下を全てバックアップ + /etc/ + /etc/** + /root/ + /root/** + /home/ + /home/** + /var/ + /var/www + /var/www/** # 上記以外は全て除外 - *
Mac
- tmp/ - *.tmp + /private/ + /private/var/ + /private/var/root/ + /private/var/root/** + /Users/ + /Users/** - *
cronで1日おきに実行する
保存ディレクトリは/var/rsync/<ホスト名>にします。
Linux
[root@cent ~]# crontab -e 30 3 * * * /usr/bin/rsync --archive --delete --ignore-errors --whole-file --exclude-from=~/rsync.list / mini:/var/rsync/cent
Mac
mini:~ root# crontab -e 0 4 * * * /usr/bin/rsync --archive --delete --ignore-errors --whole-file --exclude-from=~/rsync.list / cent:/var/rsync/mini
ちゃんと動いてるかどうかは明日確認します。おやすみなさい・・・