第47章 ファイルの同期

目次

47.1. 使用可能なデータ同期ソフトウェア
47.2. プログラムを選択する場合の決定要因
47.3. Unisonの概要
47.4. CVSの概要
47.5. subversionの概要
47.6. rsyncの概要
47.7. mailsyncの概要

概要

今日、多くの人々が複数のコンピュータを使用しています。自宅に1台、職場に1台またはそれ以上、外出時にラップトップやPDAを携帯することも珍しくありません。これらすべてのコンピュータには、多くのファイルが必要です。どのコンピュータでも作業して、ファイルを変更した後は、すべてのコンピュータで最新バージョンを使用したいと考えるでしょう。

47.1. 使用可能なデータ同期ソフトウェア

データの同期は、高速ネットワークで固定接続されているコンピュータ間ではまったく問題なく実現できます。この場合、NFSなどのネットワークファイルシステムを使用し、ファイルをサーバに保存して、すべてのホストがネットワーク経由で同じデータにアクセスすればよいわけです。ところがこの方法は、ネットワーク接続が低速な場合、または固定でない場合には不可能です。ラップトップをもって外出しているとき、必要なファイルをローカルハードディスクにコピーする必要があります。しかし、そうすると今度は、変更したファイルを同期させる必要があります。1台のコンピュータでファイルを変更したときは、必ず他のすべてのコンピュータでファイルを更新しなければなりません。たまにコピーする程度なら、手動でscpまたはrsyncを使用してコピーすればよいでしょう。しかし、ファイルが多い場合、手順が複雑になるだけでなく、新しいファイルを古いファイルで上書きしてしまうといった間違いを防ぐために細心の注意が必要になります。

[Warning]データ損失の危険

データを同期システムで管理する前に、使用するプログラムをよく理解し、機能をテストしておく必要があります。重要なファイルのバックアップは不可欠です。

このように手動によるデータの同期は、時間がかかる上に間違いが起こりやすい作業ですが、この作業を自動化するためのさまざまな方法を採用したプログラムを使用することで手動による作業は行わずにすみます。ここでの説明は、このようなプログラムの仕組みと使用法について、一般的な理解を図ることを目的としています。実際に使用する場合は、プログラムのマニュアルを参照してください。

47.1.1. Unison

Unisonは、ネットワークファイルシステムではありません。ファイルは単にローカルで保存、編集されます。プログラムUnisonは、手動で実行してファイルを同期させます。同期を初めて実行すると、2台のホスト上にデータベースが作成され、チェックサム、タイムスタンプ、および選択したファイルへのアクセス許可が保存されます。次に実行すると、Unisonはどのファイルが変更されたかを認識でき、ホスト間の伝送を提案します。通常、すべての提案は了承できます。

47.1.2. CVS

CVSは、多くの場合プログラムソースのバージョン管理に使用されるプログラムで、複数のコンピュータでファイルのコピーを保存する機能を持っています。したがって、データ同期にも適しています。CVSはサーバ上に一元的なレポジトリを設定し、ファイルおよびファイルの変更内容を保存します。ローカルに実行された変更はレポジトリにコミットされ、更新によって他のコンピュータに取得されます。両方の処理はユーザによって実行される必要があります。

CVSは、複数のコンピュータで変更が行われた場合、非常に優れたエラー回復力を発揮します。変更内容がマージされ、同じ行が変更された場合は、競合がレポートされます。競合が生じても、データベースは一貫した状態のままです。競合はクライアントホストで解決するためにのみ表示されます。

47.1.3. subversion

進化を遂げた」CVSとは異なり、subversionは一貫して設計されたプロジェクトです。 subversionは、技術面を改良したCVSの後継バージョンとして開発されました。

subversionは、従来のタイプに比べてさまざまな面で改良されています。このような経緯があるため、CVSで維持されるのはファイルのみで、ディレクトリは対象外です。subversionではディレクトリも同様にバージョン履歴をもつため、ファイルと同じようにコピーしたり、名前を変更することができます。また、すべてのファイルとすべてのディレクトリにメタデータを追加できます。このメタデータはバージョニング機能により完全に維持できます。CVSとは異なり、subversionではWebDAV (Web-based Distributed Authoring and Versioning)のような専用プロトコルを介した透過型ネットワークアクセスがサポートされます。WebDAVでは、HTTPプロトコルの機能を拡張して、リモートWebサーバ上のファイルへの書き込みアクセスを共同して行うことを可能にしています。

subversionは既存のソフトウェアパッケージとの組み合わせを念頭に置いて作られています。そのため、Apacheウェブサーバおよび拡張WebDAVは常にsubversionと組み合わせて実行されます。

47.1.4. mailsync

これまでに説明した同期ツールとは異なり、mailsyncはメールボックス間の電子メールの同期だけを実行します。プロシージャは、ローカルのメールボックスファイルとIMAPサーバのメールボックスの両方に適用されます。

電子メールのヘッダに記載されているメッセージIDに基づいて、個々のメッセージを同期させるか、削除します。同期は個別のメールボックス間およびメールボックスの階層間で実行できます。

47.1.5. rsync

バージョン管理は不要であっても、低速ネットワーク接続を使用して大きなディレクトリ構造を同期させる必要がある場合は、ツールrsyncの適切に開発されたメカニズムを使用して、ファイル内の変更箇所のみを送信できます。この処理では、テキストファイルのみでなくバイナリファイルも対象となります。ファイル間の差分を検出するために、rsyncはファイルをブロック単位で分割してチェックサムを計算します。

変更内容の検出処理は高コストを伴います。rsyncの使用量に合わせて、同期対象となるシステムの規模を調整する必要があります。特に、RAMが重要です。