私は自宅に3台のコンピュータを持っているので、3台のコンピュータ間で/home/
フォルダツリーを同期させたいと思います。
3台のコンピュータのいずれかで変更/追加/削除されたファイル/フォルダ(非表示のものを除く)は、他の2台でも更新されます。
これを行うにはrsync
で十分ですか?そしてどうやって?
これは潜在的にこの問題を解決することができるリストのものです、それぞれがあなたが異なった方法で作らなければならないトレードオフのバランスをとるのであなたはあなた自身の選択をしそしてあなた自身のために物事を試す必要があります:
nison - 他の人が言ったように、これは手動で実行されますが、非常に速く、信頼でき、そして効果的です。両方のマシンが同期している必要があります。それはあなたがほとんど避けられない衝突に対処することを可能にし、削除を正しく追跡し伝播することを可能にするためにNiceユーザーインターフェースを持っています。グラフィカルなアプリケーション/パッケージはunison-gtkと呼ばれています。
OwnCloud - クラウドストレージはあなた自身のサーバー上で動作します。そのままにするには機械が必要です。妥当な量のセットアップが必要です。サーバー上で完全なApache 2 WebサーバーとSqlLiteまたはMySQLデータベースを実行します。デスクトップクライアントを使用したDropboxと同様に機能しますが、サーバーはあなたの管理下にあります。編集:OwnCloudは最近、プロジェクトの運営方法にいくつかの変更を加え、 NextCloud を装った新しい完全オープンソース(つまり、クローズドソースの 'enterprise'版はありません)を持っています。詳細については、オリジナルのOwnCloud開発者との youtubeインタビュー )。
SparkleShare - ファイルの同期を保つためにgitを使用します。ホームページによると:多くの小さなファイルには適していますが、音楽や写真集などの大きなファイルには適していません。
Seafile - ローカルマシンにインストールできるサーバーコンポーネントを提供します。 Seafileは変更を追跡するためにデータモデル gitと同様 を使います。デスクトップ、タブレット、スマートフォン用の同期クライアントを提供します。セットアップについて説明しているブログ記事は http://openswitch.org/blog/2013/07/18/installation-and-configuring-seafile-on-ubuntu-12-dot-04/ にあります。
Osync - "... bashで書かれた、rsyncをベースにした双方向のファイル同期ツール。sshトンネルを介してローカルまたはリモートのディレクトリで動作します。主にcronタスクとして起動することを目的としています。ウェブサイト)
PowerFolder - JavaベースのGPL v2プロジェクト。メインのWebサイトでは商品が提供されているため、提供された.jarファイルの使い方はわかりません。
Rsync - 速くて効果的で何十年も前から使われてきましたが、履歴が残らないので、ファイルが新規か削除されるかを決める方向を選ぶ必要があります。 gwRsync などのグラフィカルツールが利用可能です。
Lsyncd - フォルダ/ファイルを監視してrsyncレプリケーションを起動します。
dvcs-autosync - pythonで書かれていて、gitを使ってマシン間の変更を保存し共有し、XMPPを使って変更を伝えます。
git-annex - gitに基づいてファイルをシャントするためのコマンドラインツール。ここに実例となるチュートリアルがあります: http://git-annex.branchable.com/walkthrough/
Tonido - フリーウェア。他のデバイスとファイルを共有するデスクトップアプリを提供します。市販のクラウド製品とTonidoPlugプラグコンピューターも提供します。
BitTorrent Sync (フリーウェア) - BitTorrentに基づくピアツーピアのファイル同期。オープンソースではなく、LAN内にデータを保持するために信頼していないため、使用することはありませんので、これについてはあまり知りません。より良い情報/実際の経験を持ってこの回答を編集してください。
SyncThing - BitTorrent同期に代わるオープンソースとして開発されました。信頼できないピアなど、BitTorrent同期の高度な機能の一部が現在欠けています。活発に開発中です。
Dropbox、ubuntu one、googleドライブ、Apple iCloudなどの商用のホスティングサービスは、すべて手軽に安くて便利ですが、すべてのデータで企業を信頼する必要があり、かなり高速のインターネット接続が必要です。
Git / Subversion - ソース管理システムを直接使用します。完全に手動で、これらのシステムに精通している一部のユーザーにとっては、プログラミングツールとしてそれらを使用することから、少し複雑ではあるが一般的なアプローチになる可能性があります。
CloudFS - ファイルシステム全体を同期させ、クラスタテクノロジをベースにします
NFSマウント - 基本的にあなたの家は1台のマシン上にあり、あなたはネットワークを介してそれにアクセスします。あなたが持っているラップトップには良くありません。より多くの情報: http://www.linuxjournal.com/article/488
あなたの決定を下す際に考慮すべき要素:
中央サーバー - 他のマシンと同期させるためには、マシンを常にオンにしておく必要があります(少なくとも同期をとる必要がある場合)。これは、既存のマシンの1つ、またはNASなどの別のマシンになります。増加した電力料金に気をつけろ。
自動/手動/スケジュール - マシン上で何かが変更された場合の競合を解決しなくても済むようにするには、変更を監視してすぐに同期するプログラムをすべてのマシンに用意するのが最善の方法です。バージョン手動プロセスでは、常に同期を実行することを忘れないでください。
リモートアクセス - あなたはあなたのLAN(別名自宅)から離れて同期したいですか、これがセキュリティに与える影響について考えてください。
セキュリティ - あなたのデータはあなたのネットワークを暗号化したままにしておくか、しないか、マシン間の転送はどれほど安全ですか。誰かが移動中にあなたのデータをキャプチャし、その後暗号化に欠陥があることが判明した場合はどうなりますか?誰があなたのデータを保持するサーバーを管理していますか?データは暗号化されていますか?あなたはどんな第三者を信頼できますか?リモートアクセスするためにルータに穴を開ける必要がありますか。 「削除された」ファイルと関連するメタデータは、同期化されたデバイスと中央サーバーでどれだけの期間持続しますか。暗号化ストレージと非暗号化ストレージを同期していますか?
大きなフォルダを移動する - 私が試したすべての解決策は、ファイルやフォルダを移動/名前変更するときに同期がこれを理解せず、新しいフォルダとしてアップロードしてから古いコピーを削除するという問題を抱えています。これに対処することができる上記の解決策をマークすることによって手助けしてください(私はgitベースの解決策はそれが使用するコンテンツベースのアドレッシングのためにこれに悩まされないので疑います使用しないでください)。
ディスク容量
バックアップ - 同期はバックアップされません。誤って重要なファイルを削除すると、上記の多くが他のすべてのコピーを愉快に削除するでしょう。すべてのデジタルエッグを1つのデジタルバスケットに入れるとどうなるかをよく説明するために、 ハックされたことについてのMat Honanの記事 を読むことをお勧めします。
ホームフォルダ全体を同期するのではなく、Documents/
、Pictures/
などのように同期する特定のフォルダを選択することをお勧めします。これにより、すべてを自動的に同期することによる速度、パフォーマンス、ディスク容量の問題に対処する必要がなくなります。また、除外リストを管理する必要がなくなります。
私が個人的に私のために働く何かを試みそして見つけ続けるように私は有用な情報でこの答えを最新に保ち、試みるつもりです。他のすべての回答からの情報を1つの完全な回答にまとめました。
参考文献:
ハッキング/ all /
Unison が良い候補かもしれません。
Unisonは、UnixとWindows用のファイル同期ツールです。 ファイルとディレクトリのコレクションの2つのレプリカを異なるホスト(または同じホスト上の異なるディスク)に格納し、別々に変更してから、各レプリカの変更内容を新しいホストに反映することによって最新の状態にすることができます。その他
それはすでに双方向の同期を行います。下記のアップデートを参照してください。
私はrsyncができないことはほとんどないことを学びました、そしてそれはたぶん同等かより良い解決策を提供することができます、しかしあなたはその解決策のためにrsyncの専門家が現れるのを待つ必要があります。
更新:はい、Unisonは2台以上のマシンを同期できます。彼らの ユーザーマニュアルから :
Unisonを使用して複数のマシンを同期させる
Unisonはレプリカのペアを同期させるために設計されています。ただし、これを使用して、複数のペアごとの同期を実行することで、より大きなグループのマシンの同期を維持することができます。これを行う必要がある場合、設定を行うための最も信頼性の高い方法は、1台のマシンを「ハブ」、残りを「スポーク」として、各スポークマシンを同期させて、マシンを「スタートポロジ」に編成することです。ハブだけで。スター型トポロジの大きな利点は、同期するホストのペアごとに別々のアーカイブがUnisonによって維持されるという事実から生じる「偽の衝突」を混同する可能性を排除することです。
Subversionやgitのようなバージョン管理システムにあなたのファイルを置いてはどうですか?
私は自分の家全体をバージョン管理するのではなく、いくつかの重要なものを含むほんの一握りのサブディレクトリを作成します。しかし、私はgitに変換することを考えています。それはこのタイプの仕事にはより良いように思われるからです。 ( クイック検索は正しい方向にあなたを送ろうとしています )。
がんばろう
更新:gitの良い副作用は、そのコンピュータ用のブランチがあればいいからです(そしてgitではそれによって得られます)。デフォルト)。だから、あなたはすべてのコンピュータにまったく同じファイルを持つ必要はなく、それらは似通っているだけでよく、あなたがすべての異なるコンピュータに欲しいものを持つ共通の "main"ブランチを持っている必要があります。
これを行おうとしたときの主な問題は、変更をマージし、削除を伝播し、競合を解決する方法を決定することです。これは完全に自動化された方法ではなかなかできません。特に複数の人が3台のコンピューターを使用している場合は特にそうです。
ユーザーを分けると、物事はずっと簡単になります。 1人のユーザーが同時に2つの場所にいることはできず(したがって競合が発生するため)、rsyncジョブをログイン時に実行して "変更を取得"し、ログアウトして "変更をプッシュ"することができます。マスターになるでしょう...だからこの細分性のレベルでは全体の/ home /ではなく毎回/ home/myuserを同期することになるでしょう。追加の改良点(人々がログアウトしていない場合)は、短期間の非アクティブ状態の後にPushスクリプトを実行します。
他にも解決策はたくさんありますが、私の知る限り、この問題を魔法のように解決するものはありません。最初のステップは、おそらくあなたがどのようにマシンを使うのかを考えて、あなたのユーザーの行動に合うように同期ポリシーを考え出すことです。
私はあなたがNFSを共通のホームフォルダにマウントすることによってあなたが望むものをより良く達成できると思います。この記事をチェックしてください http://www.linuxjournal.com/article/4880
チェックアウト lsyncd
Lsyncdはローカルディレクトリツリーのイベントモニタインタフェース(inotifyまたはfsevents)を監視します。それは数秒間イベントを集約して結合し、それから変更を同期させるために1つ以上のプロセスを生み出します。デフォルトではこれはrsyncです。 Lsyncdは、新しいファイルシステムやブロックデバイスを必要とせず、比較的インストールが簡単で、ローカルファイルシステムのパフォーマンスを妨げることのない、軽量のライブミラーソリューションです。
Rsync + sshは、移動先をネットワーク経由で再送信するのではなく、SSHを使用してファイルとディレクトリの移動をターゲット上で直接実行する高度なアクション構成です。
よりきめの細かいカスタマイズは設定ファイルを通して行うことができます。カスタムスクリプトの設定は、シェルスクリプトからLua言語で書かれたコードまでのカスケードレイヤで一から書くこともできます。シェルスクリプトからLua言語で書かれたコードまでの層。
これは完全に解決策を提供するわけではありませんが、それはあなたに出発点を与えるでしょう:
ファイルを同期するためにcronジョブを頻繁に設定します。私は次のようなコマンドを使います。
rsync -alhz --stats --progress --exclude-from '/etc/rsync_backup_excludes.conf' / -e ssh [email protected]:/path/to/home/
これはrsyncを使用して必要な変更をコピーするだけで、コマンドが実行されるたびにすべてを再コピーすることはしません。
--statsと--progressはオプションであり、おそらくあなたのスクリプトから除外されるべきです。
私のrsync_backup_excludes.confファイルの内容は次のとおりです。
dev/*
proc/*
lost+found/*
mnt/*
sys/*
1台のコンピュータから他の2台に/home
をマウントします。自動マウントはこれにはかなりうまくいきます。
Dropboxを見てみてください http://www.getdropbox.com/ クロスプラットフォームWin/Linux/Mac
PowerFolder - ファイルの同期、フォルダの同期、リモートストレージ、バックアップ、およびプライベートファイルの共有。自宅と会社のPCを同期させたり、休日の写真を共有したり、ドキュメントをまとめて作業したりします。 PowerFolderの安全なピアツーピア技術は、インターネットまたはLAN上で機能します。
dvcs-autosync を試してください。
これはgitに基づいており、XMPPを使用してファイルの変更を接続されたクライアントに通知し、iノード変更を介してファイル変更イベントに反応します。そのため、ファイルの変更直後に常に通知されます。競合が発生した場合は、gitの実証済みの方法に依存します。
私はしばらく前からSSH公開鍵を介したDropboxの代替品としてそれを使用してきましたが、それは実際に仕事をしています。
設定を同期したい場合 - 上記のツールはまったく役に立ちません。設定は変更されることが多く、多くのログファイルが競合するためマージできません。
私の判断は単純で、ばかげています:)私はマスターワークステーションを持っています、そして "〜"からのすべてのファイルはちょうど2番目の "スレーブ"のものにコピーされます。私は私が何かを修正する必要があると気づいた瞬間 - 私はそれをマスター上で行い、そしてスレーブは同期でこれらの変更をキャッチします。
また、これらのマシンではいくつかのbashスクリプトが異なって実行されるはずなので、私は自分の/etc/bash.bashrcを編集しました。
輸出OOHOST =マスター
これで、スクリプトはどのホストにサービスを提供しているかを認識します。
Ubuntu One があなたが探しているものかもしれません。残念ながらそれはまだベータ段階であり、私はそれを経験したことがないので、それがあなたのためにうまくいくかどうか私にはわかりません。
あなたはosyncのような同期スクリプトを使うことができます。それは削除されたファイルを伝播し、変更されたファイルだけを更新することができます。 http://www.netpower.fr/osync osyncはrsyncベースですが、ローカルフォルダ間またはsshを介したリモートフォルダ間の多くの同期シナリオを処理できます。
私はMac用に SyncTwoFolders を、そしてPC用に Syncback を使用します。私の自宅での3台のMac(ノート型パソコンを含む)、そして職場での私のPC用の2台目。どちらのプログラムにもさまざまなバックアップと同期のオプションがあり、プリセットが設定されたらこれを簡単に行えます。やさしい!私はLinuxとUbuntuに利用可能な同様のソフトウェアの他のバージョンがあると確信しています。
私が検討することになる回避策:
ドロップボックス。
主な欠点:それは合理的な量のデータに対して自由ではありません。そうでなければそれは完璧に動作します
NASサーバー。あなたのファイルをNASサーバーに置くと、最近手頃な値段で手に入るようになり(150ドルかそこらから)、良いファイルはあまりエネルギーを消費しません。これまで同期の問題はありません。
主な欠点:ローカルコピーより遅い