web-dev-qa-db-ja.com

nfsマウントのローカルコピーをコンピューターに保存する

ホームネットワーク上にあるときは、すべてのホームディレクトリとその他のものをラップトップにマウントします。ラップトップがネットワークから離れているときに、nfsマウントのローカルコピーを保持する方法があるかどうか疑問に思いました。

ボーナスは、変更されたフォルダやファイルなどをマージする機能です。

6
user174084

オフラインキャッシュは1つですが、求めているものはもっと難しいものです。 2台のマシンが接続されていないときに、サーバーとクライアントの両方でファイルが変更された場合、誰かが保持するバージョンを決定するか、2つのバージョンをマージする必要があります。 2台のマシンが再接続するときにこの種のユーザー入力を要求することは、ファイルシステムモデルにうまく適合しません。

いくつかの NFSキャッシング機能 がありますが、ほとんどはアクセスを高速化するためにオンラインキャッシング用に設計されています。どちらかの側でファイルが変更されると、サーバーとクライアント間の通信が必要になるため、オフラインのシナリオには適していません。同じことが [〜#〜] afs [〜#〜] にも当てはまります。

切断された操作をサポートする使用可能な分散ファイルシステムを構築するための取り組みがあります。

  • Coda は、多くの高度な機能、特に切断された操作のサポートを備えた分散ファイルシステムです。これは比較的古いプロジェクトであり、適度に成熟しており、Linuxカーネルに統合されています。クライアントがオフラインの場合、その変更はキューに保存されます。クライアントが再接続すると、可能であればこれらの変更が統合され、Codaには、競合が発生したときにマージを支援するツールが付属しています。
  • Tsumufs は比較的新しいプロジェクトです。 NFSなどの既存の分散ファイルシステムの上に切断された操作を追加します。まだ本番環境に対応しているとは思いません。

私は、ファイルシステムがこの問題を解決するのに適切な場所であるとは確信していません。競合の処理は難しく、ユーザー入力が必要です。

ローテクソリューションの場合、双方向ファイルシンクロナイザーである nison をお勧めします。ファイルのローカルコピーをサーバーとラップトップの両方に保存します。ラップトップを接続した直後と切断する直前に、ユニゾンを実行して2つの側を同期させます。 Unisonは、競合があるかどうかを通知します(競合がない場合は、サイレントに動作します)。接続時と切断時に常に同期している限り、競合は発生しません。

より多くのサービスを提供するが、ある程度の学習が必要なソリューションは、いくつかの 分散バージョン管理 ソフトウェアを使用することです。各マシンにリポジトリを保持し、ファイルを変更するたびにコミットし、可能な限り変更をプッシュ/プルすることを忘れないでください。

ファイルを保持して同期したい場合は、ローカルコピーを作成し、rsyncを使用してNFSマウントとローカルコピーを同期します。

2
muffel