特集
» 2007年07月19日 15時59分 公開

Command Technica:rsyncを使った熟練者レベルのバックアップ (2/3)

[Joe-'Zonker'-Brockmeier,Open Tech Press]
SourceForge.JP Magazine

rsyncの使い方

 rsyncの基本的な文法はかなりシンプルだ。単に「rsync [options] source destination」とすれば、「source」で指定したファイル(複数可)が「destination」で指定した場所にコピーされる。

 例えば、ホームディレクトリの下にあるファイルをUSBストレージデバイスにコピーしたければ、「rsync -a /home/user/dir/ /media/disk/dir/」とすればよい。ちなみに、rsyncは“/home/usr/dir/”と“/home/usr/dir”を区別する。最後のスラッシュがない場合、rsyncはそのディレクトリも含めて全体をコピーする。スラッシュがある場合、ディレクトリの中身をコピーするが、ディレクトリそのものは作られない。例えば、/var/wwwを別のマシンか何かにミラーリングするなど、rsyncを使ってディレクトリ構造を複製しようとする場合は、最後のスラッシュを除く必要があるわけだ。

 上の例では、アーカイブオプション(-a)を指定している。これは、実際には幾つかのrsyncオプションを結合したもので、再帰コピーとシンボリックリンクコピーの各オプションを含み、グループと所有者の情報を保存する。普通は、アーカイブのコピーに適したオプションだ。ただし、ハードリンクは保存されないので、それらも保存したい場合はハードリンクオプション(-H)を追加する必要がある。

 もう1つ、ほとんどの場合に必要になりそうなオプションが詳細情報の出力(-v)で、これを使うとrsyncによって実行中の処理について多くの情報が表示される。このオプションは2つまたは3つ重ねることができる。つまり、-vとするよりも-vvとする方が表示される情報は多く、-vvvとすればrsyncの処理に関するすべての情報が表示される。

 rsyncでは、オプションを何も指定しなくても隠しファイル(ファイル名が“.”で始まるもの)のコピーが行われる。隠しファイルを除外したければ、--exclude=".*/"というオプションを使えばよい。また、--excludeオプションを使ってVimのスワップファイル(.swp)や自動バックアップファイル(.bak)など一部のプログラムによって作成されたファイルをコピーの対象外にすることもできる。

ローカルコピーの実行

 USBドライブまたはFireWireドライブがあれば、ホームディレクトリのデータをそうした外部ドライブにコピーしたいと考えるだろう。そのためのよい方法が、重要なデータを1つのトップレベルディレクトリにまとめておき、次のようなコマンドを使ってそのディレクトリを外部ドライブのバックアップディレクトリにコピーすることだ。


rsync -av /home/usr/dir/ /media/disk/backup/

 rsyncを最後に実行した後に削除したローカルファイルが、外部システムからも削除されるようにしたければ、次のように、--deleteオプションを追加する必要がある。


rsync -av --delete /home/user/dir/ /media/disk/backup

 ただし、--deleteオプションの使用にはくれぐれも注意すること。そのつもりがなくても大量のファイルを消してしまう恐れがある。実際、rsyncの使い方に慣れていても、いきなり実際にファイルのコピーや同期化を行うのではなく、--dry-runオプションを使って転送内容の確認を行うとよいだろう。rsyncによる転送を開始してしまってから、コマンドのどこかに間違いがあってデータが破壊される危険があると分かった場合は、すぐに[Ctrl]+[C]キーを押して転送を中止すること。一部は失われるだろうが、残りのファイルは救えるかもしれない。

Copyright © 2010 OSDN Corporation, All Rights Reserved.

注目のテーマ