news013.jpg

Command Technica:はじめてrsyncを使う方が知っておきたい6つのルール (2/2)


前のページへ 1|2       

リモートホストへのバックアップ/同期

 次のケースは、ローカルマシンのホームディレクトリ以下にあるディレクトリ(ここでは~/dir1/)以下をリモートホスト(ここではxxx.backup.com)に転送する場合です。まずはコマンドから紹介しましょう。

  • sshを用いる場合

$ rsync -av ~/dir1 xxx.backup.com:dir/

  • sshを用いない場合(rshで通信する場合)

$ rsync -ave rsh ~/dir1 xxx.backup.com:dir/


 冒頭に説明した「rsync [オプション] コピー元 コピー先」という構文から少し変化している点が2点あることにお気づきになったと思います。1つは、転送方式としてrshを用いている点です。rsyncでは、リモートシェル(デフォルトではssh)経由でリモートホストと通信できます。以前はrshがデフォルトでしたので、セキュリティ上認証や転送を暗号化したいというニーズから「-e ssh」オプションを付加してsshを用いていましたが、デフォルトでsshが利用されるようになったことで、今後、特別な理由がなければ「-e」オプションの利用機会も減っていくことでしょう。もちろんsshを用いるのであれば、リモートホスト側ではsshサーバを起動し、sshで外部からログインできるようにしておく必要があるのはいうまでもありません。

初出時、デフォルトではrshであるとしていましたが、デフォルトはsshに変更されています。おわびして訂正します。

 もう1点は、コピー先の部分が「リモートホスト名:バックアップ先のディレクトリ」となっている点です。「リモートホスト名:」の部分がないと、ローカルだと解釈されてしまうことは想像がつきますね。ここはそれほど難しくはないでしょう。

 ただし、上記の方法では、リモートホストにもローカルマシンと同じアカウントが存在していることを前提としています。仮にローカルマシンでuser1というユーザー名で作業しているとするなら、リモートホストにもuser1というアカウントがないと上記のコマンドは期待通りには動作しないでしょう。

 そこで、リモートホストに存在するアカウント(ここではbackupuser)でログインするために、「リモートホスト名:バックアップ先のディレクトリ」の部分を「リモートホストに存在するアカウント@リモートホスト名:バックアップ先のディレクトリ」と変えて実行してみます。

$ rsync -av ~/dir1 backupuser@xxx.backup.com:dir/


 これでようやく、あなたのターミナルには、backupuserのパスワードを尋ねるプロンプトが返ってくるはずです。あとはパスワードを入力すれば、転送がはじまるのを確認できるでしょう。また、ログインのたびにパスワードを入力するのが面倒な方は、sshの公開鍵認証を用いてログインするとよいでしょう。その方法については、「rsyncを使った熟練者レベルのバックアップ」で確認できますのでここでは割愛します。

 rsyncに限らず、バックアップ/同期が失敗すると、大きな損失を被る場合もあります。自分の設定に自信がない場合や失敗が許されないような場合は、「--dry-run」オプションを付けて実行することで、rsyncコマンドのテストが行えますので、まずはこれで試してから本番に移るのがよいでしょう。

バックアップ対象の除外

 バックアップなどを行う際、「このファイル形式はバックアップ対象から除外したい」と思うことは多々あると思います。例えば、スワップファイル(.swp)や自動バックアップファイル(.bak)などです。

 指定した条件にマッチするファイルをコピー対象から除外する(または除外しない)ためのオプションとして、「--filter」や、その簡易版といえる「--exclude」「--include」が用意されています。例えば、.tmpファイルを除外したい場合、「--exclude='*.tmp'」と指定します。さらに、除外対象をテキストファイルとして記述しておき、「--exclude-from」「--include-from」といったオプションを使って読み込ませるのもよいでしょう。また、除外対象をファイル形式ではなく、ディレクトリで指定することも可能です。ただし、その場合、パターンが「/」で終っていなければならないので注意してください。例えば、上記のコマンド例で、*.tmpにマッチするすべてのファイルを除外するようにするなら、以下のようになります。

$ rsync -av --exclude '*.tmp' ~/dir1 backupuser@xxx.backup.com:dir/


コピーではなく、同期を実現する「--delete」オプション

 rsyncのデフォルトでは、rsyncを最後に実行した後にコピー元でファイルやディレクトリが削除されても、次回rsyncを実行した際、コピー先でも同じようにそれらのファイルやディレクトリが削除されるようにはなっていません。しかし、コピー元とコピー先を完全に同期させたいというケースもあるでしょう。そうした場合は「--delete」オプションを使用します。このオプションを使用することで、rsyncを最後に実行した後に削除されたコピー元のファイルは、コピー先からも削除されます。

$ rsync -av --exclude '*.tmp' --delete ~/dir1 backupuser@xxx.backup.com:dir/


コピー元とコピー先を入れ替えれば復元に

 すぐ上に示したコマンドは、最初に紹介したものと比べるとかなり長くなっていますが、読み解いてみると、それほど難しいと感じないのではないでしょうか。基本的な構文さえ押さえてしまえば、あとはオプションの意味を逐次確認するだけで、高度なバックアップがコマンドラインからできてしまいます。

 ここまでの解説であなたは、ローカル/リモートを問わず、任意の場所にファイルを転送するための力を手に入れたことになります。では、rsyncを使ってバックアップしたファイルの一部を元に戻すにはどうすればよいのでしょう。はい。簡単ですね。最初の構文、「rsync [オプション] コピー元 コピー先」で、コピー元とコピー先の記述を入れ替えるだけです。上記のコマンド例を利用して話を進めるなら、次のようなコマンドになるでしょう。

$ rsync -av backupuser@xxx.backup.com:dir/ ~/dir1


 今回は基本部分だけを解説しましたが、これだけでも簡単なバックアップ/同期は自分で行えてしまいます。次回は、ハードリンクを使った高度な差分バックアップなど、さらに高度なバックアップ/同期のためのTipsを紹介しましょう。

前のページへ 1|2       

Copyright© 2010 ITmedia, Inc. All Rights Reserved.




キャリアアップ



エンタープライズ・ピックアップ

news004.jpg 世界で勝つ 強い日本企業のつくり方:利用契約の検討――グローバルクラウドで失敗しないために(前編)
2010年以降、クラウドサービスの利用がさらに加速する。サービスを利用する企業はプロバイダーのデータセンターに預けた自社情報を保護するために、法的な要素を理解しておかなければならない。企業が注意を払うべき法的な検討事項を整理する。

news001.jpg IT投資の新方程式:「Twitter使ってます」――現役MS社員が“社員力”を語る(前編)
マイクロソフトが掲げるプロモーションメッセージ「社員にチカラを。ITで企業力を。(以下、BIEB)」からは、ITで社員の生産性を向上することが業績の拡大につながる、といったニュアンスを感じる。そこで気になるのが「じゃあ、マイクロソフトの社員自身はどうなのよ?」ということ。3人の現役MS社員により実態が明らかになる……?

news010.jpg 産業構造を変えるか:「住宅クラウド」の衝撃
住宅都市工学研究所が進める「住宅クラウド」は、クラウドが企業のIT領域にとどまらず、ビジネスのやり方自体を変える可能性を示している。

news010.jpg オルタナティブな生き方 栗原進さん:ネットでリアルを楽しくしたい
SE出身の企業広報マンでありながら、趣味は落語で憧れの人はインディ・ジョーンズとアナログ全開の栗原さんに、ブログを書く理由やネットからはじまるコミュニケーションについて伺った。

news001.jpg 最強最速アルゴリズマー養成講座:トップクラスだけが知る「このアルゴリズムがすごい」――「探索」基礎最速マスター
プログラミングにおける重要な概念である「探索」を最速でマスターするために、今回は少し応用となる探索手法などを紹介しながら、その実践力を育成します。問題をグラフとして表現し、効率よく探索する方法をぜひ日常に生かしてみましょう。