rsync (ミラーリング)

個人所有のファイルは、なくしてしまうと取り返しがつきません。 ぜひぜひ、バックアップをしましょう。 ここでは、cp をより強力にした rsync というコマンドでの ミラーリングによるバックアップを紹介します。

用意するもの


インストール

ports の net/rsync を使っても構いません。

ソースからインストールする場合は、 展開して configure, make, make install でOKです。
% tar zxvf rsync-2.4.3.tar.gz
% cd rsync-2.4.3
% ./configure
% make
% su
Password:
# make install

rsync が /usr/local/bin にインストールされます。

トラブルシューティング

make したときに、
    syscall.o: In function `do_mktemp':
    syscall.o(.text+0x2ed): warning: mktemp() possibly used unsafely; consider using mkstemp()
という警告メッセージがでるかもしれません。 そのときは、 rsync のディレクトリ直下にある syscall.c の中の mktemp を mkstemp に書き直して make clean の後、make しなおします。 これは、テンポラルファイルの一意性を保証するための作業です。 ただし、これをやるとファイルの名前がちょっと変になるようです。

使い方

rsync ではリモートホスト間でのファイルの同期(ミラーリング)が できます。名前の通り、r 系コマンドなのですが、 ssh との共用もできるようです。
参考 URL:
http://funah02.eg.t.kanazawa-u.ac.jp/~sakai/computer/rsync.html

しかしここでは、ローカルマシンに2台のハードディスクがある、 もしくは違うパーティションにあるディレクトリに ミラーリングする方法を紹介します。
(バックアップは違うハードディスクで取ることをお勧めします)

/home を /home.bk にバックアップしたいとしましょう。 /home.bk はユーザに使われると面倒なので、 パーミッションを切っておきましょう。
# chmod 700 /home.bk

rsync の基本的な使い方は、次の通りです。
# rsync [options] /home/ /home.bk/
ここで、/home/ や /home.bk/ の 最後の / を忘れないようにして下さい。

主なオプションは次のようなものがあります。

  -a : ファイルの属性などの情報を保ってコピーする
  -c : checksum を使う
  -u : より新しければ、更新しない
  -z :   ファイルを圧縮しながら転送する
  --delete : 転送元のディレクトリにはないが、転送先のディレクトリにあるファイルを削除する
  --exclude: 転送元のディレクトリのうち、転送しないファイルを指定する
  

例えば、次のような感じです。
# rsync -az --delete --exclude lost+found /home/ /home.bk/

ネットワーク越しに、今いるホストから、リモートの hostA に ssh を通して接続する場合には、-e ssh をつけます。
# rsync -az -e ssh --delete --exclude lost+found /home/ hostA:/home.bk/

コマンドラインで試して、よければ crontab に 登録して自動的にミラーリングするようにしておきます。


FreeBSD の部屋


Apr. 1, 2000