news013.jpg

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

Linuxなどを利用する上で、「これはどうやったら実現できるのだろう」と思うことは数知れない。本連載では、ユーザーがひんぱんに遭遇するであろう問題と、その解決方法を解説する。上級者には新たな発見を、初心者には上級者への道の手引きとなるだろう。


 ファイルやディレクトリをバックアップ/同期するためのツールは幾つも存在していますが、rsyncはとりわけ大きな人気を誇っているといってよいでしょう。変更分を検出して差分のみを転送することで、ネットワーク経由でも効率的にバックアップ/同期が行える点や、sshなどのリモートシェル経由での利用が可能な点など、機能の洗練度はさすがに登場から10年以上たっているだけのことはあります。バックアップやミラーリングなどの用途であれば、基本的にはコピー元とコピー先でわずかな違いしか発生しないはずで、ファイルの相違部分だけを転送するrsyncは効率的に機能します。

 そんなrsyncですが、ファイル転送アルゴリズムなどに改良が加えられたバージョン3.0.2が先月リリースされました。今回は、はじめてrsyncに触れる方のために押さえておきたい基本事項を紹介します。

rsyncの構文

 rsyncに限らず、コマンドラインで動作するユーティリティは、知らない方にとってまるで呪文(じゅもん)ような存在です。しかし、基本的な構文を押さえてしまえばさほど難しいものではありません。rsyncであれば、次のようにrsyncというコマンドの後、コピー元、コピー先の順で指定するのが基本形で、後は必要に応じてオプションを付加していくことになります。

rsync [オプション] コピー元 コピー先


押さえておきたいオプション

 多くのコマンドラインユーティリティを難しくみせているのは、主にオプションの存在でしょう。例に漏れず、rsyncにも非常に多くのオプションが用意されており、それらを使えばrsyncはさらに強力なツールと化します。しかし、最初からすべてのオプションを覚える必要はありません。実際には、幾つかのオプションを覚えておけば、ほとんどの場合でことは足ります。以下の表は、最低限覚えておくとよいオプションです。基本的にオプションは「-avn」のように続けて指定できますが、--deleteや--existingのように、いわゆるロングオプションの場合は続けて記述することはできません。

オプション(かっこ内はロングオプション) 機能
-a 「-rlptgoD」と指定したのと同様の効果。元のパーミッションやグループなどを保持したまま同期できるので、基本的に付加しておくのがよい。アーカイブモードとも呼ばれる
-v 処理中の経過ファイル名を表示する
-e [シェル名] リモートシェルを指定する。デフォルトでsshが利用されるため、rshなどを使う特別な必要がなければ最近では用いない
-n(--dry-run) 実行時の動作だけを表示。テストに使用するとよい
-r 指定したディレクトリ下の各ディレクトリも再帰的にバックアップする
-u 追加されたファイルだけをコピーする
-z データを圧縮する
--existing 更新されたファイルだけをコピーし、追加されたファイルは無視する
--delete コピー元で削除されたファイルは、コピー先でも削除する。-aオプションと同時に指定することでコピー元とコピー先を同期できることになる
--exclude=PATTERN パターン一致するファイルを除外する(--exclude 'パターン'と書いてもよい)
--exclude-from=FILE ファイルに記述されたパターンと一致するファイルを除外する
--include=PATTERN パターン一致するファイルを除外しない
--include-from=FILE ファイルに記述されたパターンと一致するファイルを除外しない
--stats rsyncアルゴリズムの転送効率を表示する
-h(--help) ヘルプを表示する

 特に覚えておくべきオプションの1つが「-a」で表現されるアーカイブオプションです。このオプションは、「-rlptgoD」と指定した場合と同じ効果を発揮します。一般的には、デフォルトでこのオプションを指定しておくとよいでしょう。ただし、ハードリンクを維持するための「-H」オプションのように、「-a」ではカバーできないが、より高度なバックアップを行う上で有用なオプションは幾つか存在します。今回はこれらのオプションは紹介しませんが、ほぼすべてのニーズを満たすだけのオプションが用意されていることは覚えておくとよいでしょう。

rsyncケーススタディ――コピー元のディレクトリ名には注意

 では、実際に幾つかのケースを例にとってrsyncを試してみましょう。まず、ローカルマシンのホームディレクトリ以下にあるディレクトリ(ここでは~/dir1/)以下を、外付けのHDD(ここでは/media/disk/)に作成したbackupディレクトリにバックアップしてみます。この場合、コマンドは次のようになります(オプションとして-avを付加しています)。

$ rsync -av ~/dir1/ /media/disk/backup/


 ついミスを犯しやすい点として、コピー元のディレクトリ名を「dir1」と指定するか、「dir1/」とスラッシュ(/)を追加するかで挙動が変わる点が挙げられます。例えば、以下のように指定すると、前者はdir1ディレクトリの中身と、そのディレクトリ自体がコピーされますが、後者はdir1ディレクトリの中身はコピーされますが、ディレクトリはコピーされません。

$ rsync -av ~/dir1 /media/disk/backup/

$ rsync -av ~/dir1/ /media/disk/backup/


 まとめると、

  • そのディレクトリも含めてコピーしたい場合:「/」なし
  • そのディレクトリ以下のツリーをコピーしたい場合:「/」あり

ということになります。なお、こうした末尾のスラッシュが与える影響を考えなければならないのは、コピー元の指定のみで、コピー先の指定では考慮する必要はありません。

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