rsync -avz /directory /target
とフォルダを同期できます。/directory
のファイルを変更した場合は、rsync
を自動的に呼び出す必要があります。
Virtual Boxを使用していますが、Virtual Boxの共有フォルダーは、特に共有フォルダーをドキュメントルートとして使用しているWebページがある場合、非常に遅くなります。 rsync
を使用すると、共有フォルダー上のローカルファイルを操作し、ドキュメントルートと自動的に同期できます。
誰かがそれを行う方法を知っていることを願っています、crontab
は良くないでしょう、x分ごとに実行されるので、もし私が何もしなければ、rsync
を呼び出しますが、ファイルを変更しました。
宜しくお願いします
crontabは良くありません、x秒/分ごとに実行されるため、何もしなければrsyncを呼び出しますが、ファイルを変更した場合はそうではありません
rsync
は、変更されたファイルのみを同期します。何も変更されていない場合、終了します。それは本当に最小限のオーバーヘッドです。
それに不満がある場合は、inotifywait
を使用できます。
while inotifywait -r /directory/*; do
rsync -avz /directory /target
done
それはより迅速になりますが、物事を行いますevery時間を節約します。
Lsyncd(Live Syncing Daemon) を使用できます。
Lsyncdは、ローカルディレクトリツリーイベントモニターインターフェイス(inotifyまたはfsevents)を監視します。数秒間イベントを集約および結合し、1つ(または複数)のプロセスを生成して、変更を同期します。デフォルトでは、これはrsyncです。したがって、Lsyncdは軽量のライブミラーソリューションであり、新しいファイルシステムやブロックデバイスを必要とせず、比較的簡単にインストールでき、ローカルファイルシステムのパフォーマンスを妨げません。
たとえば、 buntu 16.04のチュートリアル です。
inotifywait
およびrsync
を使用できます。 inotifywait
イベントmodify,create,delete
が有効になっています。この方法では、ファイルが変更された場合にのみサーバーと同期します。そうでない場合は、ファイルが読み取られるたびに同期します(エディターはファイルを数回読み取って変更があるかどうかを確認します)。したがって、言った:
while inotifywait -r -e modify,create,delete /directory; do
rsync -avz /directory /target
done
fswatch を使用して、変更されたファイルのscp
をゲストにトリガーすることに成功しました。 Linuxでは、これはinotify
のラッパーですが、クロスプラットフォームでもあります(MacでArmベースのQEMUゲストを使用しています)。 ssh
リモートビルドも追加しました。プッシュアプローチは、理想的な方法とは異なる動作をする共有でうまく機能します。