自宅に3台のコンピューターがあり、3台/home/
間でフォルダーツリーを同期させたいと考えています。
3つのコンピューターのいずれかで変更/追加/削除されたファイル/フォルダー(非表示のものを除く)は、他の2つのコンピューターで更新されます。
でrsync
、これを行うのに十分な?そしてどうやって?
自宅に3台のコンピューターがあり、3台/home/
間でフォルダーツリーを同期させたいと考えています。
3つのコンピューターのいずれかで変更/追加/削除されたファイル/フォルダー(非表示のものを除く)は、他の2つのコンピューターで更新されます。
でrsync
、これを行うのに十分な?そしてどうやって?
回答:
この問題を潜在的に解決できる可能性のあるものを以下にリストします。それぞれが異なるトレードオフのバランスを取っているため、独自の選択を行い、自分で試してみる必要があります。
Unison-他の人が述べたように、これは手動で実行されますが、非常に高速で、信頼性が高く、効果的です。両方のマシンが同期している必要があります。ほぼ避けられない競合に対処できるようにする優れたユーザーインターフェイスがあり、削除を正しく追跡および伝達します。グラフィカルアプリ/パッケージはunison-gtkと呼ばれます。
OwnCloud-独自のサーバーで実行されるクラウドストレージ。そのままにしておくにはマシンが必要です。適切な量のセットアップが必要です。サーバー上で完全なApache 2 WebサーバーとSqlLiteまたはMySQLデータベースを実行します。デスクトップクライアントを使用するDropboxと同様に機能しますが、サーバーは管理下にあります。編集:OwnCloudは最近、プロジェクトが実行される方法でいくつかの変更を経て、今を装って新しい、完全にオープンソース(すなわち無クローズドソースの「企業」版を)持っていNextCloud、(この参照ユーチューブインタビュー元OwnCloudの開発者との詳細については)。
SparkleShare -gitを使用してファイルの同期を維持します。ホームページによると、多くの小さなファイルには適していますが、音楽や写真のコレクションなどの大きなファイルには適していません。
Seafile-ローカルマシンにインストールできるサーバーコンポーネントを提供します。Seafileは、変更を追跡するためにgitと同様のデータモデルを使用します。デスクトップ、タブレット、スマートフォン用の同期クライアントを提供します。セットアップについて説明するブログ投稿は、http://openswitch.org/blog/2013/07/18/installing-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 Syncの代替としてオープンソースとして開発されました。現在、信頼できないピアなど、BitTorrent Syncの高度な機能の一部が欠けています。活発に開発中です。
dropbox、ubuntu one、google drive、apple iCloudなどの商用ホスト型サービスは、すべて迅速かつ安価で便利ですが、すべてのデータで会社を信頼する必要があり、適度に高速なインターネット接続が必要です。
Git / subversion-ソース管理システムを直接使用します。完全に手動で、これらのシステムをプログラミングツールとして使用することで、これらのシステムに精通している一部のユーザーにとって、少し複雑ですが一般的なアプローチになります。
CloudFS-ファイルシステム全体を同期、クラスター技術ベース
NFSマウント-基本的にあなたの家は1台のマシン上にあり、ネットワーク経由でアクセスします。持ち歩くラップトップには適していません。詳細:http : //www.linuxjournal.com/article/4880
決定を下す際に考慮すべき要素:
中央サーバー-一部のソリューションでは、他のマシンと同期するために常に(または少なくとも同期する必要がある場合に)マシンがオンになっている必要があります。これは、既存のマシンの1つでも、NASなどの別のマシンでもかまいません。電力料金の増加に注意してください。
自動/手動/スケジュール-マシン上で何かが変更された場合に競合を解決する必要がないようにする最良の方法は、変更をすぐに監視して同期するプログラムをすべてのマシンに配置することです。バージョン。手動プロセスでは、常に同期を実行することを忘れないでください。
リモートアクセス-LAN(自宅)から離れて同期しますか?これのセキュリティへの影響について考えてください。
セキュリティ-データはネットワークを暗号化したままにするかどうか、マシン間の転送はどれほど安全か。誰かが移動中にデータをキャプチャし、後で暗号化に欠陥があることが判明した場合はどうなりますか?データを保持するサーバーを誰が制御しますか?データは暗号化されていますか?サードパーティを信頼できますか?リモートアクセスを行うために、ルーターに穴を開ける必要がありますか。「削除された」ファイルおよび関連するメタデータは、同期されたデバイス上および中央サーバー上でどれくらいの期間保持されますか。暗号化されたストレージと暗号化されていないストレージを同期していますか?
大きなフォルダーを移動する-私が試したすべてのソリューションには、ファイルまたはフォルダーを移動/名前変更すると、同期がこれを理解せず、新しいものとしてもう一度アップロードしてから古いコピーを削除するという問題があります。これに対処できる上記のソリューションをマークすることで助けてください(gitは、使用しているコンテンツベースのアドレス指定のためにgitがこれに苦しんでいないので、gitベースのソリューションが行うと思いますが、それらを使用していません)。
ディスク容量
バックアップ-同期はバックアップではありません。重要なファイルを誤って削除すると、上記の多くが他のすべてのコピーを楽に削除してしまいます。言うまでもなく、すべてのデジタル卵を1つのデジタルバスケットに入れると何が起こるかを説明するために、Mat Honanのハッキングに関する記事を読むことをお勧めします。
私は、全体のホームフォルダを同期するが、代わりのような同期する特定のフォルダを選んでないことをお勧めしますDocuments/
、Pictures/
これは自動的にすべてを同期化の速度/パフォーマンス/ディスク容量の問題に対処することを余儀なくされているの痛みを避けることができますなど。また、除外リストを維持する必要がなくなります。
私が個人的に役立つものを探し続けているので、有用な情報でこの答えを最新のものにしようとします。他のすべての回答からの情報を1つの完全な回答に集約しました。
参照:
ハッキング/すべて/
ユニゾンは良い候補かもしれません:
Unisonは、UnixおよびWindows用のファイル同期ツールです。ファイルとディレクトリのコレクションの2つのレプリカを異なるホスト(または同じホスト上の異なるディスク)に保存し、別々に変更してから、各レプリカの変更を他のレプリカに伝播して最新の状態にすることができます。
すでに双方向の同期を行っています。以下の更新を参照してください。
rsyncができないことは非常に少ないことを学びました。おそらく、同等以上のソリューションを提供できる可能性がありますが、rsyncの専門家がそのソリューションを見つけるのを待つ必要があります。
更新:はい、Unisonは3台以上のマシンを同期できます。ユーザーマニュアルから:
ユニゾンを使用すると、3つ以上のマシン同期する
ユニゾンは、レプリカのペアを同期させるために設計されています。ただし、これを使用して、複数のペアワイズ同期を実行することにより、マシンのより大きなグループの同期を維持することができます。これを行う必要がある場合、最も信頼性の高いセットアップ方法は、マシンを「スタートポロジ」に編成し、1台のマシンを「ハブ」、残りを「スポーク」として、各スポークマシンを同期することです。ハブのみ。スタートポロジの大きな利点は、同期するホストのペアごとに個別のアーカイブがUnisonによって保持されるという事実から生じる混乱を招く「偽の競合」の可能性を排除することです。
SubVersionやgitなどのバージョン管理システムにファイルを配置する方法はありますか?
私はホームディレクトリ全体をバージョン管理するのではなく、いくつかの重要なものを含むほんの一握りのサブディレクトリのみを管理します。しかし、私はgitへの変換を考えています。なぜなら、このタイプの仕事にとっては良いようだからです。(クイック検索は正しい方向にあなたを送ります)。
幸運を
更新:gitの素晴らしい副作用は、コンピューター専用のブランチが必要なため、コンピューター固有のファイルを簡単に作成できることです(gitではデフォルトで取得されます)。したがって、すべてのコンピューターでまったく同じファイルを使用する必要はありません。それらは類似している必要があり、すべての異なるコンピューターで必要なものを含む共通の「メイン」ブランチが必要です。
これを行う際の主な問題は、変更をマージする方法、削除を伝播する方法、および競合を解決する方法を決定することです。特に複数の人が3台のコンピューターをセットアップしている場合、これを完全に自動化された方法で行うのは困難です。
ユーザーを分離すると、物事がずっと簡単になります。1人のユーザーが一度に2つの場所にいることはできないため(競合が発生するため)、ログイン時に実行して「変更を取得」し、ログアウトして「変更をプッシュ」するようにrsyncジョブをセットアップできます。マスターになるので、このレベルの粒度では、/ home /全体ではなく、毎回/ home / myuserを同期します。追加された改良(ログアウトしていない人の場合)は、短い非アクティブ期間の後にプッシュスクリプトを実行します。
他にも多くの潜在的な解決策がありますが、私が知っている限り、この問題を魔法のように解決するものはありません。最初のステップは、おそらくマシンの使用方法を考え、ユーザーの動作に合わせて同期ポリシーを作成することです。
共通のホームフォルダーをNFSマウントすることで、より良いものを実現できると思います。この記事をご覧くださいhttp://www.linuxjournal.com/article/4880
これは完全に解決策を提供するわけではありませんが、出発点となります:
ファイルをrsyncするために、時々cronジョブをセットアップします。次のようなコマンドを使用します。
rsync -alhz --stats --progress --exclude-from '/etc/rsync_backup_excludes.conf' / -e ssh user@10.10.0.1:/path/to/home/
これはrsyncを使用して必要な変更のみをコピーし、コマンドが実行されるたびにすべてを再コピーするのではありません。
--statsおよび--progressはオプションであり、おそらくスクリプトから除外する必要があります
rsync_backup_excludes.confファイルの内容は次のとおりです。
dev/*
proc/*
lost+found/*
mnt/*
sys/*
lsyncdをご覧ください
Lsyncdは、ローカルディレクトリツリーイベントモニターインターフェイス(inotifyまたはfsevents)を監視します。数秒間イベントを集約および結合し、1つ(または複数)のプロセスを生成して、変更を同期します。デフォルトでは、これはrsyncです。したがって、Lsyncdは、新しいファイルシステムまたはブロックデバイスを必要とせず、インストールが比較的簡単で、ローカルファイルシステムのパフォーマンスを妨げることのない、軽量のライブミラーソリューションです。
Rsync + sshは高度なアクション構成であり、SSHを使用して、移動先をネットワーク経由で再送信するのではなく、ターゲット上でファイルとディレクトリの移動を直接実行します。
設定ファイルを使用して、きめ細かいカスタマイズを実現できます。カスタムアクションの設定は、シェルスクリプトからLua言語で記述されたコードに至るカスケードレイヤーでゼロから作成することもできます。シェルスクリプトからLua言語で記述されたコードに及ぶレイヤー。
dropboxをご覧くださいhttp://www.getdropbox.com/ Cross platform Win / Linux / Mac
Ubuntu Oneはあなたが探しているものかもしれません。残念ながら、まだベータ段階であり、私はそれを経験していないので、それがあなたのために働くかどうかはわかりません。
構成も同期したい場合-上記のツールはまったく役に立ちません。構成は頻繁に変更され、多くのログファイルが競合してマージできないようになります。
私の決断は簡単で、愚かです:)マスターワークステーションがあり、「〜」のすべてのファイルが2番目の「スレーブ」にコピーされます。何かを変更する必要があることに気付いた瞬間-マスターでそれを行い、スレーブは同期でこれらの変更をキャッチします。
また、一部のbashスクリプトはこれらのマシン上で異なる動作をするはずなので、/ etc / bash.bashrcを編集しました。
OOHOST = Masterをエクスポート
これで、スクリプトはサービスを提供しているホストを認識します;)
dvcs-autosyncを試してください。
これはgitに基づいており、XMPPを使用して、接続されたクライアントにファイルの変更を通知し、iノードの変更を介してファイル変更イベントに反応します。そのため、ファイルの変更直後に常に通知され、競合が発生した場合は、実績のあるgitの方法に依存します。
私はしばらくの間、SSH公開鍵を介してDropboxの代替としてそれを使用してきましたが、実際に仕事をしています。
PowerFolder-ファイルの同期、フォルダーの同期、リモートストレージ、バックアップ、プライベートファイル共有。自宅とオフィスのPCを同期したり、休日の写真を共有したり、ドキュメントで共同作業したりします。PowerFolderの安全なピアツーピア技術は、インターネットまたはLANで機能します。
私が検討する回避策:
ドロップボックス。
主な欠点:合理的な量のデータが無料ではありません。それ以外の場合は完璧に動作します
NASサーバー。NASサーバーにファイルを置くと、最近手頃な価格になり(150ドルから)、優れたファイルはあまりエネルギーを消費しません。同期の問題はありません。
主な欠点:ローカルコピーよりも遅い
私はMac用のSyncTwoFoldersとPC 用のSyncbackを使用しています-最初は自宅の3台のMac (ラップトップを含む)用で、2台目は職場のPC用です。両方のプログラムには、さまざまなバックアップと同期のオプションがあり、プリセットがセットアップされると、これが簡単になります。簡単!LinuxおよびUbuntuで利用可能な同様のソフトウェアの他のバージョンがあると確信しています。
削除されたファイルを伝播し、変更されたファイルのみを更新できるosyncのような同期スクリプトを使用できます。 http://www.netpower.fr/osync osyncはrsyncベースですが、sshを介したローカルフォルダーまたはリモートフォルダー間の多くの同期シナリオを処理できます。