web-dev-qa-db-ja.com

Rsyncデーモンを起動して、2つのサーバー間でディレクトリを同期します

サーバーAのディレクトリをサーバーBに同期したい.

サーバーAで、次の内容のファイルrsyncd.confを作成しました。

uid             = rsync
gid             = rsync
use chroot      = no
pid file        = /var/run/rsyncd.pid

[share]
  comment = share
  path = /etc/dirtosync
  read only = false
  list = yes
  hosts allow = *
  auth users = rsync
  secrets file = /etc/rsyncd.secrets

そして、コンテンツを含むファイル/etc/rsyncd.secretsをサーバーAに作成しました。

rsync:rsync

また、サーバーAにpidファイルを作成し、ユーザーrsyncとパスワードrsyncを作成しました。

サーバーAのファイル:/etc/default/rsyncRSYNC_ENABLEtrueに設定し、次のコマンドでrsyncデーモンを開始しました。

/etc/initd/rsync start

サーバーAとサーバーBでは、ディレクトリの所有者とグループはrsyncです。

マシンBでコマンドを起動しました:

rsync -avzr rsync@<serverA>:/etc/dirtosync/* /etc/dirtosync/

また、サーバーAでコマンドを試しました

rsync -avzr /etc/dirtosync/* rsync@<serverB>:/etc/dirtosync/

この2つのコマンドの結果は同じです。コマンドを起動するとファイルは一度だけ同期されますが、サーバーAのファイルを変更した後はサーバーBと同期しません

ファイルの同期を維持するために他に何かする必要がありますか?

5
hedi691

Rsyncの仕組みを誤解しています。 rsyncは変更を自動的に複製しません-dropboxや同様のソフトウェアとは異なります。 rsyncは、実行されるたびに1回だけファイルを同期します。もっと頻繁に同期したい場合は、cronスクリプトにrsyncコマンドを入力します(例:/ etc/cron.dailyを参照)。 dropboxのように変更を自動的に同期するものが必要な場合は、 Sparkle ShareownCloud などの別のプロジェクトを見てください。

4
bain

Lsyncd: https://github.com/axkibe/lsyncd を使用することもできます。私はこれまで使用しており、これは素晴らしいです。

投稿したrsync構文は、マシンのホスト名/ IPを省略した場合に機能しますが、セットアップしたrsync共有は使用しません。共有を使用するには、次のように構文を変更して共有を使用する必要があります。

rsync -av rsync@MACHINE-A::share/ /etc/dirtosync/

ただし、これらのフォルダー間で継続的な同期は設定されません。後と思われるのは、これらのフォルダーの双方向同期です。これは、cronでセットアップするか、 nisonファイル同期ソフトウェア を使用して開始できます。

ユニゾンはもはや十分にメンテナンスされておらず、私はそれを自分で使用していませんが、それについて素晴らしいことを聞いています。同期用に設定したディレクトリで行われたファイルへの変更を追跡し、rsyncまたは別の(設定可能な)方法を使用してそれらのファイルを定期的にコピーします。

rsync- in-the-cronルートを使用する場合は、rsyncに新しいファイルのみをコピーするように指示する-uオプションを使用する必要があります。ただし、この方法では、削除されたファイルが再び表示されるという問題が発生します。

0
jkt123