作成後に自動的にファイルをターゲットにコピーする

作成後に自動的にファイルをターゲットにコピーする

Unixでは、ファイルが作成されるとすぐにコピーする方法はありますか?ファイルが異なる時間に作成される場所があります。シェルスクリプトを使用してUnixの他の場所にファイルを自動的にコピーするにはどうすればよいですか?

答え1

inotifywait -e close_write --format "%f" --monitor . |
  while IFS= read -r line
  do
    #cp "$line" destination/ #this would not replicate directories
    tar cf - "$line" | tar -C destination/ xf - #this should replicate directories
  done

ディレクトリ(現在のディレクトリで使用.)のファイル数がinotify監視のシステム制限(coteyrが述べたfs.inotify.max_user_watches)を超えない限り、この問題を解決する必要があります。

答え2

シェルスクリプトのみを使用してファイルを生成すると、実際にそのファイルをコピーすることはできません。私は3つの解決策を考えました。

  1. rsync対cron - シンプルで標準的で簡単です。時々(1時間に1回)ディレクトリからrsyncを実行します。変更の量に応じて、巨大な構造を数秒で同期させることができます。

  2. グルスターまたは同様です。必要に応じて。

  3. ただシンボリックリンクを使用してください。

関連情報