2010年 05月 25日
Rsync で SUSE Linux 間でバックアップ
Web translate in English
※ 初出
ここでは SUSE Linux Enterprise Server (sles11)を rsync でパスワードなしでバックアップする方法について説明します。syslog サーバなど、あればいいけど容量を食うシステムの場合など便利です。
rsync は --daemon オプションで起動する方法もありますが、パスワードをシークレットファイルにしなければならないということもあり、cron で自動実行させる方法を検討しました。
この文書を作成するにあたり、次の文書が役に立ちました。
SSH (Secure Shell) Tricks II
rsyncとsshで別のマシンにバックアップ
ここでは、バックアップ元サーバーを myserver バックアップ先を backupserver とします。また、ここでは全て root で作業することを前提として説明します。
-ポイント-
1) 送信側で公開鍵を作り、受信側のリストに追加します。
2) 受信側で ssh の設定を変更し、鍵交換による接続を許可します。
3) 送信側で ssh でパスワードなしで受信側に接続できることを確認します。
-公開鍵の作成-
バックアップ元のコンソールから次のコマンドを実行します。
myserver:~ # ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):[ENTER]
/root/.ssh/id_rsa already exists.[すでにあれば上書きします]
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):[空欄のままENTER]
Enter same passphrase again:[空欄のままENTER]
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
d0:34:5a:c5:ff:93:32:98:4f:df:7a:3a:a4:51:8a:3e root@myserver
The key's randomart image is:
+--[ RSA 2048]----+
| +o. |
| = .. |
| o . . |
| . . . |
| S + + . |
| + * = |
| . o B o |
| E o o o|
| . o= |
+-----------------+
myserver:~ # cd .ssh
myserver:~/.ssh # ls
autherized_keys id_rsa id_rsa.pub known_hosts
<---- /root/.ssh に公開鍵が作成されていることを確認します。
この id_rsa.pub を id_rsa.pub.myserver などの名前に変更し、 scp や usb メモリ、ネットワークの公開フォルダなどを通しbackupserverの /root/.ssh にコピーします。
-受け側の公開鍵の登録-
受け側(backupserver)の /root/.ssh の認証キーリストを一応バックアップします。
backupserver:~/.ssh # cp authorized_keys authorized_keys.old
認証キーリストに送信側の公開鍵を追加します。
backupserver:~/.ssh # cat id_rsa.pub.myserver >> authorized_keys
-sshd の設定とリスタート-
受け側の/etc/sshd/sshd_config を編集します。編集前に一応バックアップを取ってください。
backupserver:/etc/ssh # cp sshd_config sshd_config.old
backupserver:/etc/ssh # vi か gedit で sshd_config を編集します
次の例はコメントを抜いたところだけを示します。特に下線部分が重要なようです。
※操作は YaST でもできます。
-編集前-
backupserver:/etc/ssh # cat sshd_config
Host *
ForwardX11Trusted yes
Protocol 2
SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
SendEnv LC_IDENTIFICATION LC_ALL
-編集後-
backupserver:/etc/ssh # cat sshd_config
Host *
Protocol 2
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
PermitRootLogin yes
UsePAM no
X11Forwarding yes
Subsystem sftp /usr/lib64/ssh/sftp-server
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL
※ sshのセッション開始が遅い場合、特に ユーザ名とパスワードを送ってからのレスポンスが異常に遅い場合
UseDNS no
の行を加えてください。どうもIPアドレスから DNS に延々と逆引きをするため、タイムアウトを待っているようです。DNSにホスト名が登録されている場合や hosts が設定されていれば問題ないようです。
-sshdを再起動します-
backupserver:/etc/ssh # /etc/init.d/sshd restart
Shutting down SSH daemon done
Starting SSH daemon done
万が一動かない場合は sshd_config や authorized.keys を戻してください。
-ログイン確認-
送信側(myserver)からパスワードなしで backupserver にssh ログインできることを確認します-
myserver:~/.ssh # ssh backupserver
Last login: Mon May 24 14:15:16 2010
backupserver:~ #
同じく putty などの ssh クライアントからはパスワードを要求してログインできることを確認します。
backupserver からログイン
login as: root
root@backupserver's password:xxxxxxxx
Last login: Mon May 24 15:59:52 2010 from 192.168.1.10
backupserver:~ #
syslog サーバ(myserver) から rsync を使ってパスワードなしで backupserver にコピーできることを確認します。
myserver:~/Documents # ls
NewDocuments.ott NewSpreadsheets.ots <---- ファイルがある
myserver:~/Documents # rsync -avz -e ssh * backupserver:/tmp <--- コピーしてみる
sending incremental file list
NewDocuments.ott
NewSpreadsheets.ots
sent 9928 bytes received 50 bytes 376.53 bytes/sec <--- パスワードなしでコピーされた
total size is 13334 speedup is 1.34
myserver:~/Documents #
-cronによる自動実行-
次のテキストファイルを /sbin/syslogcopy.sh という名前で作成します。 backup-xxxx は必要に応じて変更してください。
/usr/bin/rsync -avz -e ssh /backup-from-pash/* root@backupserver:/backup-to-path/
実行フラグ(x) を root に与えます。
# chmod 700 /sbin/syslogcopy.sh
毎朝7時に実行するよう crontab に次の1行を追加します。
# crontab -e
0 7 * * * /sbin/syslogcopy.sh
セキュリティ上「不適切だね」というご意見があればコメントお待ちします。
-keyword-
Novell Suse Linux Enterprise Server 11, SLES11, rsync, ssh, backup, バックアップ, パスワードなし, nopassword, slow ssh login, windows, contos, ubuntu, xen, virtulization, 仮想化
visit MySite