rsyncでレプリケーションしてみる
Modified: 18 July 2002
rsync(rcpやscpも同じですが)は、2つのPC内のデータを同期するプログラムです。
ここでは、SSH を使って転送は暗号化して行います。
両方のPCに同じユーザ、同じパスワードを持つアカウントが必要です。また、転送先のデフォルトディレクトリは、そのユーザのホームディレクトリです。
RedHatLinux7.3 に同梱されており、デフォルトでインストールされています。
scpによる基本テスト (7 July 2002)
rsyncを実行してみる (18 July 2002)
関連リンクサイト (7 July 2002)
scpとは
scpとは、sshを使ってファイルコピーをするコマンドです。
rcpは、生のデータが流れますが、scpは、データが暗号化されてコピーされます。RedHatLinux7.3 では、標準でインストールされているので、特別な設定は必要ありません。
RSAキーの作成
RSAキーは、「RSA暗号キーを作成する方法」を参照して作成してください。
idetifier は、秘密鍵ですので、クライアント側(接続元のPC)にコピーします。
idetifier.pub は、公開鍵ですので、サーバー側(接続先のPC)にコピーします。
scpを実行してみる
$ scp -oProtocol=1 test.txt 192.168.0.95:
Enter passphrase for RSA key '/home/tomo/.ssh/identity': ******
test.txt 100% |*****************************| 5 00:00
$
"-oProtocol=1"は、フリーウエア版を使っている人には必須のオプションです。
rsyncを(1ファイルだけ)実行してみます
"192.168.0.94" から、"192.168.0.95" に、1ファイル("test.txt")だけ同期コピーします。成功したら以下ようになります。
$ rsync -auvzb -e "ssh -oProtocol=1" test.txt 192.168.0.95:
Enter passphrase for RSA key '/home/tomo/.ssh/identity':*****
building file list ... done
test.txt
wrote 115 bytes read 36 bytes 23.23 bytes/sec
total size is 5 speedup is 0.03
$オプションの意味は、以下です。
- -a archiveの意、ファイルの属性情報をそのまま転送する
- -u updateの意、日付を比較し新しければ上書きする
- -v verboseの意、実行の様子を表示する
- -z compressの意、データを圧縮して転送する
- -b backupの意、更新元のファイルには、~を付加してリネームする
sshを使う場合は、オプションの"-e"を付加して、そのsshのコマンドを書きます。フリーのSSHを使うには、SSH1 を使いますので、"-oProtocol" を指定します。
転送元は、カレントディレクトリですが、転送先のデフォルトディレクトリは、ホームディレクトリです。
つまり、上記の "test.txt" は、送信元のカレントディレクトリのファイルです。
送信先の "192.168.0.95" のコピー先は、送信先の同じユーザアカウントのホームディレクトリです。
rsyncをデイレクトリで実行してみます
"192.168.0.94" から、"192.168.0.95" に、1ディレクトリ("www")だけコピーします。成功したら以下のようになります。
$ rsync -auvzb -e "ssh -oProtocol=1" www 192.168.0.95:
Enter passphrase for RSA key '/home/tomo/.ssh/identity':*****
building file list ... done
:
:
:
:
wrote 11302746 bytes read 64868 bytes 75033.76 bytes/sec
total size is 15090010 speedup is 1.33
$再度実行してみます。
2回目は、"u"オプションにより、なにも転送されませんでした。つまり、更新されたら更新されたファイルだけがコピーされます。
$ rsync -auvzb -e "ssh -oProtocol=1" www 192.168.0.95:
Enter passphrase for RSA key '/home/tomo/.ssh/identity':*****
building file list ... done
wrote 67867 bytes read 20 bytes 9051.60 bytes/sec
total size is 15090010 speedup is 222.28
$
rsyncの本家のページ
RedHatLinuxのrpmは、以下からダウンロードできます。
http://rsync.samba.org/ftp/rsync/binaries/redhat/
私は、"rsync-2.4.6-1.i386.rpm" がダウンロードできました。