複数のコンピュータ間でホームフォルダを同期するにはどうすればよいですか?

複数のコンピュータ間でホームフォルダを同期するにはどうすればよいですか?

/home/自宅に 3 台のコンピュータがあり、 3 台のコンピュータ間でフォルダ ツリーを同期したいと考えています
。3 台のコンピュータのうち 1 台で変更、追加、削除されたファイル/フォルダ (非表示のものは除く) は、他の 2 台のコンピュータでも更新されます。

rsyncこれを実行するには十分ですか? また、どのように実行しますか?

答え1

この問題を解決できる可能性のあるもののリストを以下に示します。それぞれが異なるトレードオフのバランスをとる必要があるため、自分で選択して試してみる必要があります。

  • ユニゾン- 他の人が言っているように、これは手動で実行されますが、非常に高速で、信頼性が高く、効果的です。同期された両方のマシンが同時にオンになっている必要があります。ほぼ避けられない競合に対処できるように、優れたユーザー インターフェイスがあり、削除を正しく追跡して伝達します。グラフィカル アプリ/パッケージは unison-gtk と呼ばれます。

  • クラウド- クラウドストレージは自分のサーバー上で実行されます。オンにしておくマシンが必要です。それなりのセットアップが必要です。サーバー上で完全なApache 2ウェブサーバーとSqlLiteまたはMySQLデータベースを実行します。デスクトップクライアントのDropboxと同様に機能しますが、サーバーはあなたの管理下にあります。編集:OwnCloudは最近プロジェクトの運営方法にいくつかの変更を加え、現在は完全にオープンソース(つまり、クローズドソースの「エンタープライズ」エディションではない)の新しいバージョンを装っています。ネクストクラウド、(こちらを参照ユーチューブインタビュー詳細については、元の OwnCloud 開発者にお問い合わせください。

  • スパークルシェア- ファイルの同期を保つために git を使用します。ホームページによると、多数の小さなファイルには適していますが、音楽や写真コレクションなどの大量の大きなファイルには適していません。

  • シーファイル- ローカルマシンにインストールできるサーバーコンポーネントを提供します。Seafileはデータモデルを使用しますgitに似ている変更を追跡するためのものです。デスクトップ、タブレット、スマートフォン用の同期クライアントを提供します。セットアップについて説明したブログ投稿は、http://openswitch.org/blog/2013/07/18/installing-and-configuring-seafile-on-ubuntu-12-dot-04/

  • オシンク- 「... bash で書かれ、rsync をベースにした双方向ファイル同期ツールです。SSH トンネル経由でローカル ディレクトリやリモート ディレクトリで動作します。主に cron タスクとして起動することを目的としています」(Web サイトからのテキスト)

  • パワーフォルダ- Java ベースの GPL v2 プロジェクト。メイン Web サイトでは商用製品が推奨されているため、提供されている .jar ファイルの使用方法は明確ではありません。

  • 同期- 高速かつ効果的で、何十年も前から存在していますが、履歴は保存されないため、ファイルが新規か削除済みかを判断するには方向を選択する必要があります。次のようなグラフィカルツールが利用可能です。gwRsync

  • Lsyncd- フォルダ/ファイルを監視してrsyncレプリケーションをトリガーします

  • dvcs 自動同期- Python で記述されており、マシン間で変更を保存および共有するために Git を使用し、変更を通信するために XMPP を使用します。

  • git-annex- Git をベースにした、ファイルを移動するためのコマンドライン ツール。ここに説明的なウォークスルーがあります:http://git-annex.branchable.com/walkthrough/

  • トニド- フリーウェア。他のデバイスとファイルを共有するデスクトップ アプリを提供します。商用クラウド サービスと TonidoPlug プラグ コンピューターも提供します。

  • BitTorrent 同期(フリーウェア) - BitTorrent に基づくピアツーピアのファイル同期。オープンソースではないため使用せず、LAN 内でデータを保持するのに信頼できないため、これについてはあまり知りません。この回答を、よりよい情報や実際の経験で自由に編集してください。

  • シンクシング- BitTorrent Sync のオープンソース代替として開発されました。現在、信頼できないピアなど、BitTorrent Sync の高度な機能の一部が欠けています。現在、積極的に開発中です。

  • Dropbox、Ubuntu One、Google Drive、Apple iCloud などの商用ホスト サービスは、いずれも高速で安価、便利ですが、すべてのデータを企業に信頼して預ける必要があり、かなり高速なインターネット接続が必要です。

  • ギット/転覆- ソース コントロール システムを直接使用します。完全に手動で、少し複雑ですが、プログラミング ツールとして使用しているため、これらのシステムに慣れている一部のユーザーには人気のアプローチです。

  • クラウドFS- ファイルシステム全体を同期、クラスタ技術ベース

  • NFS マウント - 基本的に、自宅のマシンは 1 台あり、ネットワーク経由でアクセスします。持ち歩くラップトップには適していません。詳細:http://www.linuxjournal.com/article/4880


決定する際に考慮すべき要素:

  • 中央サーバー - 一部のソリューションでは、他のマシンと同期するために、マシンを常にオンにしておく必要があります (または少なくとも同期が必要なときはオンにしておく必要があります)。これは、既存のマシンの 1 つ、または NAS などの別のマシンである可能性があります。電気代が増加することに注意してください。

  • 自動 / 手動 / スケジュール - 複数のマシンで何かが変更された場合に競合を解決する必要を回避する最善の方法は、変更を監視してすぐに同期するプログラムを各マシンに用意することです。これにより、複数のバージョンが作成される可能性が減ります。手動プロセスでは、常に同期を実行することを忘れてはなりません。

  • リモート アクセス - LAN (自宅など) から離れた場所で同期する場合は、セキュリティへの影響を考慮してください。

  • セキュリティ - データはネットワークから暗号化されて送信されますか、それとも送信されないまま送信されますか。マシン間の転送はどの程度安全ですか。移動中に誰かがデータをキャプチャし、後で暗号化に欠陥があることが判明したらどうしますか。データを保存するサーバーは誰が管理していますか。データは暗号化されていますか。第三者を信頼できますか。リモート アクセスを取得するには、ルーターに穴を開ける必要がありますか。同期されたデバイスと中央サーバーに「削除された」ファイルと関連メタデータがどのくらいの期間残りますか。暗号化されたストレージと暗号化されていないストレージの間で同期していますか。

  • 大きなフォルダーの移動 - 私が試した解決策にはすべて、ファイルまたはフォルダーを移動または名前変更すると、同期がこれを認識せず、すべてを新規として再度アップロードしてから古いコピーを削除するという問題があります。

  • ディスク容量

  • バックアップ - 同期はバックアップではありません。重要なファイルを誤って削除すると、上記の多くは他のコピーをすべて削除します。読むことをお勧めします。マット・ホナンのハッキングに関する記事いわば、すべてのデジタル卵を 1 つのデジタルバスケットに入れると何が起こるかをよく説明しています。


ホーム フォルダ全体を同期するのではなく、 などの特定のフォルダを選択して同期することをお勧めしますDocuments/Pictures/これにより、すべてを自動的に同期する際の速度、パフォーマンス、ディスク容量の問題に対処する手間が省けます。また、除外リストを維持する必要もありません。

個人的に自分にとって有効な方法を見つけようと努力を続けながら、この回答を役立つ情報で最新の状態に維持するよう努めます。他のすべての回答からの情報を 1 つの完全な回答に集約しました。

参考文献:

  • LinuxFormat - 2014 年 2 月 LXF180 p31、「ホスト型ストレージのまとめ」

ハッキング/すべて/

答え2

ユニゾン良い候補かもしれません:

Unison は、Unix および Windows 用のファイル同期ツールです。これにより、ファイルとディレクトリのコレクションの 2 つのレプリカを異なるホスト (または同じホスト上の異なるディスク) に保存し、個別に変更してから、各レプリカの変更を他のレプリカに伝播することで最新の状態にすることができます。

すでに双方向同期を行っています。下記のアップデートを参照してください。

rsync でできないことはほとんどなく、おそらく同等かそれ以上のソリューションを提供できるだろうということを学びましたが、そのソリューションについては rsync の専門家が現れるのを待つ必要があります。

アップデート:はい、Unisonは2台以上のマシンを同期できます。ユーザーマニュアル:

Unison を使用して 2 台以上のマシンを同期する

Unison はレプリカのペアを同期するように設計されています。ただし、複数のペア同期を実行することで、より大きなマシンのグループを同期させることができます。

これを実行する必要があるときは、最も信頼性の高い設定方法は、マシンを「スター トポロジ」に編成し、1 台のマシンを「ハブ」、残りのマシンを「スポーク」として指定し、各スポーク マシンがハブとのみ同期するようにすることです。スター トポロジの大きな利点は、同期するホストのペアごとに Unison によって個別のアーカイブが維持されるという事実から生じる「疑わしい競合」の可能性を排除できることです。

答え3

SubVersion や git などのバージョン管理システムにファイルを置いてみてはいかがでしょうか?

私はホームディレクトリ全体をバージョン管理しているのではなく、いくつかの重要なものを含むサブディレクトリのみを管理しています。しかし、この種の作業には Git の方が適していると思われるため、Git への移行を考えています。(ちょっと検索すれば正しい方向にたどり着くでしょう)。

幸運を


アップデート: git の優れた副作用は、そのコンピューター用のブランチがあればよいため、コンピューター固有のファイルを簡単に作成できることです (git ではデフォルトでブランチが作成されます)。したがって、すべてのコンピューターにまったく同じファイルを用意する必要はなく、類似したファイルを用意し、すべての異なるコンピューターに必要なものを共通の「メイン」ブランチに用意するだけで済みます。

答え4

共通のホームフォルダをNFSマウントすることで、より望ましい結果が得られると思います。この記事をご覧ください。http://www.linuxjournal.com/article/4880

関連情報