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

» 2007年07月19日 15時59分 公開
[Joe-'Zonker'-Brockmeier,Open Tech Press]
SourceForge.JP Magazine
前のページへ 1|2|3       

リモートコピーの実行

 手元にないファイルをリモートホストにコピーしたい場合はどうしたらよいだろうか。何も心配はいらない。コマンドにリモートホストとユーザーの情報を追加するだけでよい。例えば、先ほどのディレクトリをリモートホストにコピーしたければ、次のようにする。


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処理の設定を行って、いつハードディスクが故障してもすぐにデータにアクセスできるように準備しておくことができるはずだ。

前のページへ 1|2|3       

Copyright © 2010 OSDN Corporation, All Rights Reserved.

注目のテーマ