私の作業ソフトウェアUbuntu 12.04を実行しています。「生産」任意のフォルダには、通常、私が作成したファイルを、次のことを行う別のパスにコピーします。「配布」。
たとえば、時にはいくつかのファイルを作成し、/home/user/develop
そのファイルにアクセスできるようにしたい場合があります/media/ntfs
。また、たとえば職場にいるのにWebコンテンツをテストしている場合は、/home/user/develop
その作業を進めたいと思います。/var/www
したがって、最後に作成されたフォルダまたは特定のファイルのリストをコピーする必要があります。
最初はシンボリックリンクに関するものだと思いましたが、それが最善のアプローチではないと思います。スクリプト?
答え1
rsync
ディレクトリと他のサーバー間でコンテンツを同期します。付属/除外サポートなどがあります。コンテンツが実際に同期したい場合自動的にその後、必要なパラメータを使用してrsyncを実行できます。
コマンドとそのパラメーターの両方をスクリプトに入れることができます。
指定した間隔でスクリプトを複製するには、スケジュールされたタスクでスクリプトを実行するか、同期が必要なときにスクリプトを手動で実行できます。最後に、関連ディレクトリからファイルシステムイベントを受信できますinotify
。ディレクトリで特定の変更が発生したときにrsyncを実行します。
inotifyでwhileループブロックを使用するか、次のようにこれを行うように設計された特別なプログラム/スクリプトを使用してこれを実行できます。
rsync-inotify:http://code.google.com/p/rsync-inotify/
同期:http://code.google.com/p/lsyncd/
など...
答え2
次のコマンドを使用して、ディレクトリを別のディレクトリにコピーできます。同期。 Rsyncは、既にターゲットディレクトリにある同じコンテンツ(またはより正確には同じ日付とサイズ)を持つファイルをコピーしません。
rsync -a /home/user/develop/ /var/www/
ライブサーバーをリアルタイムで更新するのは良い考えではありません。変更操作を実行し、ファイルが動作していない場合は、そのファイルを配布したくありません。 rsync の伝播もすぐには行われないため、新しいファイルがいくつかある間は小さなウィンドウがありますが、古いファイルの中には残ります。
バージョン管理この問題を解決し、他の方法でも助けてくれます。変更を適用した場合はコミットしてください。ライブサーバーでアップデートを実行します(またはバージョン管理ソフトウェアで呼び出されたものをすべてインポートする)。バージョン管理により、変更履歴を維持し、複数のシステムの変更を追跡できます。