文件创建后自动复制到目的地

文件创建后自动复制到目的地

在Unix中,有什么方法可以在文件创建后立即复制它吗?我有一个位置,文件将在不同的时间创建。如何使用 shell 脚本自动将文件复制到 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 监视的限制(fs.inotify.max_user_watches,如 coteyr 提到的)。

答案2

仅使用 shell 脚本创建文件后,您无法真正复制它们。我想到了三个解决方案。

  1. rsync 与 cron - 它简单、标准且容易。每隔一段时间(每小时一次)对目录运行一次 rsync。巨大的结构可以在几秒钟内同步,具体取决于更改量。

  2. 格鲁斯特或类似的。根据需要。

  3. 只需使用符号链接即可。

相关内容