玄箱HGでdebianサーバを立ち上げてもう2年ほど使ってあれこれいじってますが、hdd故障を2回体験しました。幸いバックアップがあって戻したんですがそれでも結構大変な作業です。予備の準備はしてるんで、その予備からrsyncを使って簡単にバックアップできるようしてみました。
server1 現用 server2予備という構成でserver2からserver1のデータをシンクロするようにします。いろいろ方法はあるんですが、rsyncが実績もあって簡単そうなんで設定してみました。
私の玄箱の構成はhda3を/dataとしてmountしていますので/dataを丸ごと予備の玄箱の/dataをシンクロする設定です。
cronでrsyncを実行する場合sshで実行した場合、パスワードを聞かれてはまずいのでローカルホスト認証./shostsを使う設定にしてます。いつもお世話になっているパソコンおやじさんのWebサイトを参考にさせていただきました。URLは下記です。
http://www.aconus.com/~oyaji/backup/rsync.htm
まずrsyncのインストール
serever1 server2
#apt-get install ssh rsync
server1ではsshdを実行する設定にします。この設定はパスワード入力なしでserver1にログインするための設定で、server2からコマンド入力してパスワードも入力する場合はPermitRootLogin yesに設定してrootでログインを許可する設定だけであとはデフォルトの設定でokです。
server1のsshd_d.config
#vi /etc/ssh/sshd_config
# Package generated configuration file
# See the sshd(8) manpage for details
# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 1,2
# HostKeys for protocol version 1
HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes
# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 768
# Logging
SyslogFacility AUTH
LogLevel INFO
# Authentication:
LoginGraceTime 600
PermitRootLogin yes
StrictModes yes
RSAAuthentication no
PubkeyAuthentication no
#AuthorizedKeysFile %h/.ssh/authorized_keys
# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts no
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
server2からsshでrsyncを実行するのでserver2ではssh_configを設定します。
#vi /etc/ssh/ssh_config
# This is the ssh client system-wide configuration file. See
# ssh_config(5) for more information. This file provides defaults for
# users, and the values can be changed in per-user configuration files
# or on the command line.
# RSAバージョン1での認証は不許可
RSAAuthentication no
# 公開鍵による認証を不許可
PubkeyAuthentication no
# rhosts認証は不許可
RhostsAuthentication no
# SSH1 プロトコル認証は不許可
RhostsRSAAuthentication no
# hostbased認証を許可(SSH2 プロトコル)
HostbasedAuthentication yes
# パスワード認証は不許可
PasswordAuthentication no
# 認証の優先順位指定(Keyboad入力は不要)
preferredAuthentications hostbased,publickey,password
# Configuration data is parsed as follows:
これが設定すればserver1でsshdをstopしてstartする。
この場合restartでは設定が反映されない場合があります。実はこれに少しはまった。
ps aux | grep sshでsshdが動いてないのを確認してstartします。
server1に認証なしで入れるよう./shostにserver2を設定
#vi /root/.shosts
server2 root
server2からsshで認証なしでログインできるか確認
#ssh server1
最初のログインではログインを許可したホストのホスト鍵を登録するのでyesと答えます。
server2から手動でバックアップできるかどうか確認してみる
#rsync -avz -e ssh server1:/data/ /data/
うまくバックアップできるようだったら server2のcrontabに設定して定期的に実行するようにします。バックアップ元で削除されたファイルは、バックアップ先でも削除したい場合には--deleteオプションをつけますが、怖いオプションですから気をつけてください。server1とserver2を間違えるとたいへんなことになります。
でもってserver2のcrontabに登録
#crontab -e
0 2 * * 0 rsync -az -e ssh --delete server1:/data/ /data/ > /dev/null 2>&1
これで日曜日の午前2時に/dataのクローンが作成されます。
うちではserver2は常時は電源を切っていますので立ち上げたとき自動的に/dataのクローニングを実行するようinit.dに登録しました。時々気がついたときにバックアップ機の電源を入れれば自動的にバックアップを実行してくれます。
なお当然ですがserver1とserver2の/etc/hostsにはそれぞれのIPアドレスを記述しておいてください。
最近のコメント