Tips記事
» 2001年10月10日 00時00分 UPDATE

rsync+SSHで2つのディレクトリ間を同期させる

[木田佳克,ITmedia]

 Linuxでバックアップを行うにはいろいろな手段がある。ここでは,ネットワーク,ローカルを問わず比較的「高速」に対象ディレクトリの同期(バックアップ)ができる「rsync」コマンドを利用する方法を紹介しよう。手動コマンドで幾つものバランシングサーバにアップデートする場合などにも利用されている。

 rsyncは,標準でrshコマンドを利用する。前述のように,ローカル,リモート先を問わず利用できるのが特徴であり,ftpやscpなどに比べ同期させることに機能追求されている。

 ここでは,インターネットを介しSSHの暗号化を行って同期させるための手段を挙げよう。あらかじめ,rsyncとSSH(OpenSSHなど)がインストールされていることが前提である。

※ 次のように表示されればrsync+SSHで同期可能
$ which rsync
/usr/bin/rsync
$ which ssh
/usr/local/bin/ssh

 一般的な使用例は次の通りだ。パラメータ「-avz」,「-e ssh」,「--delete」は次のような意味となる。

$ rsync -avz -e ssh --delete /home/test/ filesrv:/home/sync/

■rsyncのおもなパラメータ
-a
以下のパラメータで「rlptgoD」を組で指定したのと同じ。元のパーミッションやグループなどを保持したまま同期できるので,基本的に付加しておくのがよい
-v
同期(バックアップ)時に経過ファイル名を表示する
-z
データ圧縮をする
-e ssh

SSHを利用してログインする。指定しないとrshが利用される

-r
指定したディレクトリ下の各ディレクトリも再帰的にバックアップする
-l
シンボリックリンクも「そのまま」リンクとして同期させる(リンク先内容までは同期させない)
-H
ハードリンクをそのまま同期させる
-p
パーミッション属性を保存したまま同期させる
-o
所有者属性を保存したまま同期させる(root権限でのみ実行可能)
-g
グループ属性を保存したまま同期
-t
タイムスタンプを保存したまま同期
-D
デバイスファイルを保存したまま同期(root権限のみ実行可能)
-u
追加されたファイルだけを同期させる
--existing
更新ファイルだけを同期させて追加されたファイルは無視する
--delete
rsync実行元で削除されたファイルを同期先でも削除する
--exclude 'hogehoge'
「hogehoge」の任意文字列にパターンマッチするファイルはバックアップ対象外とする
--deamon
rsyncサーバとして動作する。/etc/rsync.confで設定された間隔で自動的に同期を行えるものの,cronでコマンド実行するのも実用的だろう

 パラメータに続く「/home/test/」は同期元のディレクトリ。「filesrv:/home/sync/」は,サーバ名「filesrv」の「/home/sync/」ディレクトリに同期ファイルを保存させることを意味する。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ