linux – 複数のコンピュータ間でホームフォルダを同期させるには?

home-folder linux rsync sync ubuntu

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

rsyncで十分なのか、どうやって?

  128  community wiki  None


ベストアンサー

ここでは、潜在的にこの問題を解決することができるリストのものは、それぞれが異なるようにあなた自身の選択を行い、自分自身のために物事を試してみる必要がありますので、あなたがしなければならないトレードオフのバランスを取っています

  • Unison – 他の人が述べているように、これは手動で実行されますが、非常に高速で信頼性が高く、効果的です。両方のマシンが同時に同期している必要があります。これは、ほとんど避けられないコンフリクトに対処できるようにするための素晴らしいユーザーインターフェイスを持っており、削除を正確に追跡して伝搬します。グラフィカルなアプリ/パッケージは unison-gtk と呼ばれています

  • OwnCloud – クラウドストレージは、独自のサーバー上で実行されます。置いておくマシンが必要になります。適度な量のセットアップが必要です。完全なApache 2ウェブサーバとSqlLiteまたはMySQLデータベースをサーバ上で実行します。デスクトップクライアントのDropboxと似たような動作をしますが、サーバーはあなたのコントロール下にあります。 編集 : OwnCloudは最近、プロジェクトの運営方法にいくつかの変更があり、NextCloud, (詳細については、Youtubeインタビューの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 プロジェクト。メインのウェブサイトでは商用製品をプッシュしているので、提供されている .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(別名自宅)から離れて同期したい場合は、このセキュリティ上の影響について考えてみましょう

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

  • 大きなフォルダの移動 – 私が試した解決策はすべて、ファイルやフォルダを移動したり、名前を変更したりすると、シンクがこれを理解せず、新しいものとして再度アップロードして、古いコピーを削除してしまうという問題があります

  • Disk capacity

  • バックアップ – 同期はバックアップではありません。間違って重要なファイルを削除し、上記の多くは陽気にあなたの他のすべてのコピーを削除します。いわばデジタルバスケットにデジタルの卵をすべて入れた場合に何が起こるかについては、ハッキングされていることについてのMat Honanの作品を読むことをお勧めします


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

私は個人的に何かを試してみて、自分に合ったものを見つけ続けているので、有益な情報でこの回答を最新の状態に維持しようと思います。私は他のすべての回答からの情報を1つの完全な回答に集約しました

References:

  • LinuxFormat – 2014年2月 LXF180 p31, “Hosted Storage Roundup”

hacking/all/

101  community wiki  2020-05-14


ユニゾンがいいかもしれない

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

すでに2ウェイシンクができています。下記のアップデートを参照してください

rsync でできないことは非常に少なく、おそらく同等かそれ以上の解決策を提供できることを学びましたが、その解決策のためには rsync の専門家が現れるのを待たなければなりません

更新: はい、Unison は 2 台以上のマシンを同期することができます。ユーザーマニュアル から

2 台以上のマシンを同期させるための Unison の使用 Unison は、レプリカのペアを同期させるために設計されています。しかし、複数のペアごとに同期を行うことで、より大きなマシンのグループを同期させておくために使用することも可能です

これを行う必要がある場合、最も信頼性の高い設定方法は、マシンを「スタートポロジー」に整理することです。スター型トポロジーの大きな利点は、同期するホストのペアごとに別のアーカイブがUnisonによって管理されているという事実から生じる混乱した「スプリアスコンフリクト」の可能性を排除できることです

27  community wiki  2015-10-07


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

私は自分のホームディレクトリ全体をバージョン管理しているわけではなく、重要なものを含むほんの一握りのサブディレクトリだけをバージョン管理しています。しかし、この種の作業にはgitの方が適しているようなので、gitに変換しようかと考えています。(クイック検索すると正しい方向に行きそうです)

Good luck


更新: git のいいところは、コンピュータ固有のファイルを簡単に作成できることです。つまり、すべてのコンピュータにまったく同じファイルを用意する必要はなく、似たようなファイルを用意して、すべてのコンピュータに共通の “メイン” ブランチを用意すればいいのです

19  community wiki  2009-09-02


これをしようとしたときの主な問題は、変更をマージしたり、削除を伝搬させたり、競合を解決する方法を決めることです。これは完全に自動化された方法で行うのは難しく、特に複数の人が3台のコンピュータを使用している場合には難しいです

ユーザーを分離すれば、物事はずっとシンプルになります。一人のユーザーが同時に二つの場所にいることはできないので (そのため競合が発生します)、ログイン時に rsync ジョブを設定して「変更を取得」し、ログアウト時に「変更をプッシュ」するために実行するようにします…マスターとなるコンピュータの一つに…このレベルの粒度では /home/全体ではなく /home/myuser を毎回同期させることになります。(人々がログアウトしない場合のために) さらに洗練された方法としては、しばらく操作が行われていない場合にプッシュスクリプトを実行するという方法があります

他にも解決策はたくさんありますが、私の知る限り、この問題を魔法のように解決するものはありません。最初のステップは、マシンをどのように使うかを考え、ユーザーの行動に合わせて同期ポリシーを考えることでしょう

6  community wiki  2009-08-29


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

5  community wiki  2010-06-11


これで完全に解決するわけではありませんが、スタートを切ることができます

頻繁にcronジョブを設定してファイルをrsyncします。以下のようなコマンドを使います

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/*

4  community wiki  2009-08-28


lsyncdをチェックしてみてください

Lsyncd はローカルディレクトリツリーのイベントモニタインターフェイス (inotify または fsevents) を監視します。数秒間イベントを集約して結合し、変更を同期させるために 1 つ (または複数) のプロセスを生成します。デフォルトでは、これは rsync です。Lsyncd はこのようにして、新しいファイルシステムやブロックデバイスを必要とせず、ローカルファイルシステムのパフォーマンスを妨げない、比較的簡単にインストールできる軽量なライブミラーソリューションです

Rsync+ssh は、移動先を有線で再送信するのではなく、SSH を使ってターゲット上で直接ファイルやディレクトリの移動を行う高度なアクション設定です

細かいカスタマイズはコンフィグファイルで実現できます。カスタムアクションの設定は、シェルスクリプトからLua言語で書かれたコードに至るまで、カスケード型のレイヤーでスクラッチから記述することも可能です

4  community wiki  2012-07-10


dropbox http://www.getdropbox.com/ クロスプラットフォームのWin / Linux / Macを見てみましょう

2  community wiki  2009-08-28


1台のコンピュータから他の2台のコンピュータに/homeをマウントします。これには Automount がよく効きます

2  community wiki  2011-08-25


Ubuntu Oneはあなたが探しているものかもしれません。残念ながらまだベータ版の段階で、私は経験がないので、あなたに合うかどうかはわかりません

1  community wiki  2009-08-29


設定を同期させたい場合は、上記のツールは全く無力です:設定は頻繁に変更され、多くのログファイルはコンフリクトを起こしてマージできません。 私の決断は単純で愚かなものです。)私はマスターワークステーションを持っていて、”~” からのすべてのファイルを 2 番目の “スレーブ” にコピーしています。何かを修正する必要があると気づいたときには、マスターで修正を行い、スレーブは同期時に変更をキャッチしています。 また、いくつかの bash スクリプトはこれらのマシンでは異なる動作をするはずなので、/etc/bash.bashrc を編集しました

export OOHOST=Master

これで、スクリプトはどのホストにサービスを提供しているかを知ることができるようになりました。)

1  community wiki  2009-08-29


dvcs-autosync を試してみてください

これはgitをベースにしており、接続しているクライアントにファイルの変更を通知するためにXMPPを使用し、inodeの変更を介してファイルの変更イベントに反応します。そのため、ファイルの変更後すぐに常に通知を受けることができ、衝突があった場合はgitの実績のある方法に依存します

私は、SSH公開鍵を介してDropboxの代替としてしばらくの間使用してきましたが、それは本当に仕事をしてくれます

1  community wiki  2012-03-22


PowerFolder – ファイルの同期、同期フォルダ、リモートストレージ、バックアップ、プライベートファイル共有。自宅とオフィスのPCを同期したり、休日の写真を共有したり、ドキュメントを一緒に作業したり。PowerFolderの安全なピアツーピア技術は、インターネットまたはLAN上で動作します

0  community wiki  2009-08-28


私が考える回避策

  • Dropboxです。 主な欠点:それは任意の合理的な量のデータのために無料ではありません。それ以外は完璧にIMHOで動作します

  • NASサーバー。NASサーバーにファイルを置いて、彼らは最近合理的に手頃な価格になりました(150ドルかそこらから)、良いものは、多くのエネルギーを消費しません。同期の問題もありません。 主な欠点:ローカルコピーよりも遅い

0  community wiki  2011-03-02


私は SyncTwoFolders for Mac と Syncback for PC を使用しています – 最初のものは自宅の 3 台の mac (ラップトップを含む) 用、2 番目は職場の PC 用です。どちらのプログラムにも様々なバックアップと同期オプションがあり、事前に設定しておけば簡単です。簡単に簡単に!私は、LinuxとUbuntuで利用可能な同様のソフトウェアの他のバージョンがあると確信しています

0  community wiki  2012-11-28


osync のような同期スクリプトを使うと、削除されたファイルを伝搬させ、変更されたファイルだけを更新することができます。http://www.netpower.fr/osync osync は rsync ベースですが、ssh 経由でローカルフォルダやリモートフォルダ間の多くの同期シナリオを扱うことができます

0  community wiki  2013-08-18


タイトルとURLをコピーしました