サーバー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/rsync
値RSYNC_ENABLE
をtrue
に設定し、次のコマンドで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と同期しません
ファイルの同期を維持するために他に何かする必要がありますか?
Rsyncの仕組みを誤解しています。 rsyncは変更を自動的に複製しません-dropboxや同様のソフトウェアとは異なります。 rsyncは、実行されるたびに1回だけファイルを同期します。もっと頻繁に同期したい場合は、cronスクリプトにrsyncコマンドを入力します(例:/ etc/cron.dailyを参照)。 dropboxのように変更を自動的に同期するものが必要な場合は、 Sparkle Share や ownCloud などの別のプロジェクトを見てください。
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
オプションを使用する必要があります。ただし、この方法では、削除されたファイルが再び表示されるという問題が発生します。