![文件创建后自动复制到目的地](https://linux22.com/image/66556/%E6%96%87%E4%BB%B6%E5%88%9B%E5%BB%BA%E5%90%8E%E8%87%AA%E5%8A%A8%E5%A4%8D%E5%88%B6%E5%88%B0%E7%9B%AE%E7%9A%84%E5%9C%B0.png)
在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 脚本创建文件后,您无法真正复制它们。我想到了三个解决方案。
rsync 与 cron - 它简单、标准且容易。每隔一段时间(每小时一次)对目录运行一次 rsync。巨大的结构可以在几秒钟内同步,具体取决于更改量。
格鲁斯特或类似的。根据需要。
只需使用符号链接即可。