rsync+sshでバックアップを設定します。世の中には何百万もするようなバックアップソフトがいろんなメーカーから発売されておりますがLinuxを前提としたバックアップであれば私的にはrsyncが最も優れていると思います。属性などのパーミッションなどの情報も合わせてバックアップすることが可能でありスクリプトなどを自作すれば幾らでも融通のきくバックアップシステムが構築可能だからです。
また、lsyncと組み合わせることでリアルタイムミラーリングなども構築可能です。ここでは以下のような前提で話を進めます。
・ホストA 192.168.1.1 ( バックアップサーバ )
・ホストB 192.168.1.2 ( バックアップクライアント )
・rsyncはssh経由で通信を行う
まず、バックアップサーバにrsyncをインストールしておき、rsyncコマンドが使える状態にしておきます。
# yum install rsync # rpm -qa | grep rsync rsync-3.0.6-9.el6.x86_64 |
■sshの設定
ssh経由でrsyncバックアップを行いますのでsshの設定が必要です。この作業はバックアップサーバ側で設定を行います。rootで下記の コマンドで公開鍵と秘密鍵を作成します。
# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): [そのままEnter] 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: 4c:50:79:5f:3a:84:5e:a8:2f:88:71:65:c4:3b:70:ed root@www.unix-power.net |
公開鍵は/root/.ssh/id_rsa.pubで秘密鍵は/root/.ssh/id_rsaに保存されます。このうち公開鍵をバックアップクライアントにscp経由でコピーします。
# scp /root/.ssh/id_rsa.pub user@192.168.1.2:/home/user/ user@192.168.1.2's password: [userのpassword入力] id_rsa.pub 100% 411 0.4KB/s 00:00 |
/home/user以下にバックアップクライアントの公開鍵がコピーされました。これを/root/.ssh/authorized_keyに以下のコマンドで追記します。
# cat id_rsa.pub >> /root/.ssh/authorized_keys # chmod 600 /root/.ssh/authorized_keys |
rootでsshログインを行いますので以下の設定をバックアップクライアント側で確認しておきます。
# vi /etc/ssh/sshd_config PermitRootLogin yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys |
バックアップサーバからバックアップクライアントにパスワードなしでsshログインできるか確認します。
# ssh root@192.168.1.2 Last login: Mon Jan 7 14:16:08 2013 from 192.168.1.1 |
上記の動作確認がとれればOKです。
■バックアップの実施
バックアップはバックアップサーバからバックアップクライアントに接続してデータを引き抜くという動きになります。以下のコマンドはバックアップサーバで実施し、ssh経由でバックアップクライアントからデータを引っ張ります。
# rsync -avz -e ssh 192.168.1.2:/home/ /home/user |
上のコマンドでバックアップクライアントの/home配下にあるファイルとフォルダがバックアップサーバ上の/home/user以下 に丸ごとコピーされます。rsyncコマンドで使用されるオプションには以下のものがあります。
rsnyc のオプション一覧 | |
-v | バックアップ時にバックアップしているファイル名を表示する |
-r | 指定したディレクトリ以下の各ディレクトリも再帰的にバックアップする |
-l | シンボリック・リンクをそのままにバックアップする (シンボリック・リンク先の内容をコピーせずにリンクのままコピー) |
-H | ハード・リンクをそのままにバックアップする |
-p | パーミッション属性を保存したままバックアップする |
-o | 所有者属性を保存したままバックアップ(root のみ可能) |
-g | グループ属性を保存したままバックアップ |
-t | タイムスタンプを保存したままバックアップ |
-D | デバイスファイルを保存したままバックアップ(root のみ可能) |
-z | データーを圧縮して転送する |
-u | 追加されたファイルだけバックアップする |
–delete | バックアップ元で削除されたファイルはバックアップ先でも削除する |
-e ssh | SSHの使用 |
–password-file | パスワードファイルの指定 |
–existing |
更新されたファイルだけをバックアップし、追加されたファイルは バックアップしない |
-a | 上記のオプションのうち rlptgoD を指定する |