手元にないファイルをリモートホストにコピーしたい場合はどうしたらよいだろうか。何も心配はいらない。コマンドにリモートホストとユーザーの情報を追加するだけでよい。例えば、先ほどのディレクトリをリモートホストにコピーしたければ、次のようにする。
rsync -av --delete /home/user/dir/ user@remote.host.com:dir/
転送速度やコピーすべき残りファイル数を表示するには、次のように--progressオプションを追加する。
rsync --progress -av --delete /home/user/dir/ user@remote.host.com:dir/
rsyncによって接続が行われるたびにパスワードを訊かれたくなければ、パスワードではなくSSH鍵を使ってログインするようにrsyncを設定すればよい。そのためには、「ssh-keygen -t dsa」を使ってローカルマシンでSSH鍵を生成し、パスワードの入力を求められたらEnterキーを押す。SSH鍵が生成されたら、「ssh-copy-id -i .ssh/id_dsa.pub user@remote.host.com」を使って公開鍵をリモートホストにコピーする。
では、rsyncを使ってコピーしたファイルの一部を元に戻すにはどうすればよいか。次のコマンド構文を使えばよい。
rsync -avz remote.host.com:/home/user/dir/ /local/path/
この例では、-zオプションにより、データは圧縮された状態で転送される。コピー中のファイルがローカルホスト上に存在する場合、rsyncはそのファイルに対しては何も行わない。リモートホストにファイルをコピーするときと同じだ。
同期させたいディレクトリがはっきりしていて、すべての同期に必要なコマンドが分かっているなら、それらをシンプルなスクリプトにまとめるのは容易だ。以下に簡単な例を示す。
rsync --progress -avz --delete /home/user/bin/ user@remote.host.com:bin/
rsync --progress -avz --delete /home/user/local/data/ user@remote.host.com:local/data/
rsync --progress -avz --delete /home/user/.tomboy/ user@remote.host.com:/.tomboy/
--progressオプションは、rsyncを対話的に実行するために使っているが、その必要がなければ削除して構わない。
rsyncのmanページを見ただけでは、きっと頭が混乱してしまうだろう。だが、こうして少しでもrsyncの使い方を実践しておけば、rsync処理の設定を行って、いつハードディスクが故障してもすぐにデータにアクセスできるように準備しておくことができるはずだ。
Copyright © 2010 OSDN Corporation, All Rights Reserved.