rsyncによるバックアップ
rsyncによるバックアップ

rsyncによるバックアップ

rsyncの構文は

rsync [オプション] コピー元 コピー先

である。
主なオプションは以下の通り

オプション 説明
-a オプションを「-rlptgoD」と指定するのと同じ。
基本的にこのオプションを利用する。
-D デバイスファイルを保持したままコピーする
-e シェル リモートシェルを指定する。
デフォルトはSSH。
-g グループ情報を保持したままコピーする
-H ハード・リンクをそのままコピーする
-l シンボリック・リンクをそのままコピーする
-n(--dry-run) 実際に処理は行わず、動作だけ表示。
-o オーナ情報を保持したままコピーする。
-p パーミッションを保持したままコピーする。
-q 転送情報を表示しない。
-r ディレクトリ以下の各ディレクトリを再帰的にコピーする。
-t タイムスタンプを保持したままコピーする。
-u 追加されたファイルのみコピーする。
-v 処理中のファイル名を表示する。
-z データを圧縮して転送する。
--delete コピー元で削除されたファイルは、コピー先でも削除する。
このオプションを指定しない場合、コピー元で削除されたファイルはコピー先に残る。
--existing 更新されたファイルのみをコピーし、追加されたファイルは無視する。
--exclude=パターン パターンに一致するファイルをコピーしない。
--exclude-from=ファイル名 ファイル名に記述されたパターンと一致するファイルをコピーしない。
--include=パターン パターンに一致するファイルをコピーする。
--include-from=ファイル名 パターンに一致するファイルをコピーする。
--stats rsyncアルゴリズムの転送効率を表示する。
-h ヘルプの表示。

「/home」以下のディレクトリを外付けハードディスクにバックアップする場合。
なお、外付けハードディスクを「/mnt/backup」にマウントし、「/mnt/backup/home」以下にバックアップするものとする。

Unix# rsync -avz --delete /home/ /mnt/backup/home/

コピー元のディレクトリ名の最後の「/」を付加するかどうかで挙動が変わる。
「/」を付加すると、ディレクトリ配下がバックアップされるが、付加しない場合、ディレクトリを含めてバックアップされる。
上記の例だと

Unix# rsync -avz --delete /home/ /mnt/backup/home/
 <= 「/mnt/backup/home/」以下に「/home」以下がバックアップされる
Unix# rsync -avz --delete /home /mnt/backup/home/
 <= 「/mnt/backup/home/home/」以下に「/home」以下がバックアップされる
rsync+SSHによるバックアップ

バックアップ対象のマシンとは別のバックアップ用のマシンを用意し、バックアップ機へSSHによる接続を行い、バックアップを行う。
この時、自動でバックアップを行うようにする為、パスフレーズ無しでログイン出来るようにする。
また、バックアップ対象のファイルによっては読み取りにroot権限が必要な為、rootによるログインを許可し、鍵認証のみを許可する。
なお、SSHの基本的な設定は完了しているものとする。

バックアップ元マシンでの設定

rootになり、キーペアを作成する。
この時、パスフレーズを空にして作成する。

Unix# ssh-keygen -t rsa <= SSH2で公開鍵・秘密鍵を作成
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <= 空Enter 
Created directory '/root/.ssh'.
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:
cc:8e:b4:8b:88:f0:4e:28:ce:80:67:48:5a:de:36:9c root@Unix.crimson-snow.net

作成された「/root/.ssh/id_rsa.pub」をバックアップ機にコピーする。
コピー方法はフロッピー等の外部媒体を用いたりする。

バックアップ先マシンでの設定

バックアップ機からコピーした公開鍵を公開鍵群に追加する。

Unix# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys <= 公開鍵の追加
Unix# rm /root/.ssh/id_rsa.pub <= 元のファイルを削除

SSHサーバの設定を変更し、rootでのログインを可能とする。
ここでは主に設定する部分のみ記述しているので、その他は環境に合わせて設定すること。

Unix# vi /etc/ssh/sshd_config <= 設定ファイルの編集
PasswordAuthentication no <= パスワードでのログインを禁止(鍵方式のみ許可)
PermitRootLogin yes <= rootでのログインを許可する


Unix# /etc/init.d/sshd restart <= SSHサーバの再起動

一度、バックアップ元マシンからバックアップ先マシンへSSHでログインし、パスフレーズ無しでログインできる事を確認する。
なお、バックアップ先マシンのIPアドレスを「192.168.0.3」としている。

Unix# ssh root@192.168.0.3 <= バックアップ先マシンへSSHでログイン

rsync+SSHによるバックアップ

バックアップ先マシンでrootになり、rsyncコマンドを実行する。
ここではバックアップ先マシンのIPアドレスを「192.168.0.3」とし、バックアップディレクトリを「/home」、 バックアップ先ディレクトリを「/home/backup_home」としてバックアップする場合。

Unix# rsync -avz --delete /home/ 192.168.0.3:/home/backup_home/

バックアップの自動実行

cronに登録して自動実行する。

▲ページのトップへ