ファイルシステムウォッチャーを使用して2台のコンピューター間でフォルダーを同期し、ファイルが変更されるたびにすぐに複製されるようにする


20

私が持っています:

  • IP 203.0.113.0ポート1234でSSH経由で接続するLinuxサーバー

  • ホームコンピューター(ルーターの後ろ)、パブリックIP 198.51.100.17、DebianまたはWindows + Cygwinのいずれか

フォルダ持ってするのが最も簡単何/home/inprogress/ ビットのように、(両方の方向に)同期をrsyncしかし、ファイルシステムウォッチャーとファイルが変更されるたびに、それはすぐに他の側に複製され、その結果は、?(つまり、手動で同期プログラムを呼び出す必要はありません)

サーバーがヘッドレスであるため、コマンドライン/ GUIなしのソリューションを探しています。

Linux / Debian組み込みソリューションはありますか?


7
あなたは説明していsyncthingます。
クサラナナンダ

がありますがlsync、双方向同期に役立つかどうかはわかりません。
ウルリッヒ・シュワルツ

lsync、csync2、inotify + rsyncですが、ローカルネットワーク設定で使用することをお勧めします。
ルイFリベイロ

2
ファイルシステムレベルでは、これはOCFS2またはNBD上のRAID 1のように聞こえます
-roaima

3
一方向の同期は簡単です。双方向の同期は競合の解決を意味し(はい、ある時点で発生します)、これは今度は何らかのUIを意味します(GUIは必要ありません)。
jcaron

回答:


23

@Kusalanandaのコメントに続いて、私はついにこのユースケースのSyncthingをテストするために数時間を費やしました。両側の変更を自動的に検出し、複製は非常に高速です。

例:server.pyお気に入りのメモ帳ソフトウェアでローカルで作業している場合、CTRL + S(保存)を押します。数秒後、遠隔サーバーに自動的に複製されます(ポップアップダイアログなし)。

私が気づいたすばらしいことの1つは、Syncthingを使用してホームコンピューターとサーバーのIPを考慮する必要がないことです。各「デバイス」(コンピューター、サーバー、電話など)には一意のDeviceIDがあり、共有する場合別のデバイスのIDを使用すると、相互に接続する方法が自動的に検出されます。

行うには:

  • ホームコンピューター側(WindowsまたはLinux):

    通常のSyncthingブラウザー内設定ツールを使用します

  • VPS側:

    最初に、ポート転送を使用してVPSを接続します。

    ssh <user>@<VPS_IP> -L 8385:localhost:8384
    

    後者のオプションは、ポート8384でリッスンしているVPSのSyncthing Web設定ツールをホームコンピューターのポート8385にリダイレクトします。

    次に、これをVPSで実行します。

    wget https://github.com/syncthing/syncthing/releases/download/v0.14.52/syncthing-linux-amd64-v0.14.52.tar.gz 
    tar xvfz syncthing-linux-amd64-v0.14.52.tar.gz
    nohup syncthing-linux-amd64-v0.14.52/syncthing &
    

    次に、ホームコンピューターのブラウザーでhttp:// localhost:8385を開きます。これがVPSのSyncthing構成になります。


私が試した他の解決策:


私が今気づいたSyncthingの追加の利点:

  • あなたは減らすことができますfsWatcherDelaySしてconfig.xmlから102(つまり、あまり小さなテキストファイルのための1秒よりも、アップロードに+時間)が2秒後に、CTRL + Sを行った後に、それは他のコンピュータ上にあるので秒

  • 同じローカルネットワーク内にある2台のコンピューターを同期する場合(DeviceIDを相互に与えるだけで、ローカルIPアドレスを気にする必要はありません)、インターネット経由で転送する必要がないことが自動的に認識されますが、ローカルで対処します。これは素晴らしく、phone <--> computerWiFiを介して同じホームルーターに接続された両方の非常に高速な転送(4 MB /秒!)同期を可能にします... ... ADSL上でDropbox同期を使用すると100 KB /秒でスタックする!(私のADSLはアップロード時に100 KB / sに制限されています)


@sudodus友人は既に数週間前に私にそれを推薦しました、そして、私はコンピューター<->電話同期のためにそれを試みました、しかし、私はそれが開発サーバーに対してあまりうまくいくとは思いませんでした!コードを編集し、保存をクリックします。12 3が他のコンピューターにあります。
バスジ

1
+1。私はかなり長い間同じ問題を抱えており、rsync +いくつかのスクリプトを何年も使用し、ついに2か月前にsyncthing、csync、unison、および他のいくつかを試しました。任意の数のコンピューターで、また一部のコンピューターが永続的なネットワーク接続を持たない場合でも、うまく機能します。100%を推奨できます。
Guntram Blohmはモニカをサポートします

1
@GuntramBlohmでこれらすべての異なるソリューションをテストしたことは素晴らしいことです!あなたがフィードバック/ syncthing、rsync、csync、ユニゾンなどのそれぞれの賛否を比較するために答えを投稿するのに数分あれば、それは将来の参考のために非常に興味深いでしょう!
バスジ

16

ユニゾンが仕事をするように聞こえます。

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

競合の解決を多少容易にするオプションのGUIがありますが、テキストベースのユーザーインターフェイスを使用してすべてを実行することもできます。完全な無人操作のために競合を解決する方法を事前定義することもできます。

必要なときにいつでも同期をトリガーするファイル監視(fsmonitor)コンポーネントがあります。詳細については、マニュアルで「繰り返し監視」を検索してください。

Debianには適切なバージョン(2.48以降)がパッケージ化されているようです


ありがとう!ファイルウォッチャーfsmonitorはすぐにUnisonに含まれていますか、それともこのツールをインストールして手動でUnisonに接続する必要がありますか?
バスジ

1
@Basjこれは最近の十分なバージョンに含まれており、セットアップするのは本当に簡単です。マニュアルへのリンクを追加しました。
TooTea

過去に古いMacで使っていました。最小限の手間で機能します。ただし、サーバーシナリオに適しているかどうかはわかりません。
ルイFリベイロ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.