我可以在 bash 中使用 `cp` 来监视文件和文件夹,并在更改时将它们复制到另一个文件夹吗?
Can I use `cp` in bash to watch files and folders and upon changes, copy them other to another folder?
更新
好的,我已经开始 inotify
,但我不确定如何将它导入 cp
。
我可以 运行 inotifywait -rm source/
当文件发生变化或创建新文件等时,它会打印到终端。
现在我需要监听何时发生任何变化,只需 运行 cp -u source/* destination/
如何在一行中 bash 执行此操作?
下面是旧东西...
我正在使用 cp 命令为我的静态站点构建器复制文件。我也在尝试创建手表功能。
我可以使用 cp
以某种方式查看一个文件或文件夹中的文件和其他嵌套文件文件夹,并在对这些文件和文件夹进行的任何保存更改后将它们复制到目标文件夹,从而有效地同步一个目录到另一个?
或rsync
或其他命令行工具?
我认为这对你有用:
inotifywait -rm -e CLOSE_WRITE --format "%w" source | stdbuf -o0 sed 's@/$@@' | xargs -n1 -I{} rsync -Rva {} destination
使用inotify监视close_write事件(而不是all或modify),只输出其中的目录发生了变化,修剪尾部斜杠并将其提供给 rsync(告诉它保留完整路径而不使用压缩)。
更新
好的,我已经开始 inotify
,但我不确定如何将它导入 cp
。
我可以 运行 inotifywait -rm source/
当文件发生变化或创建新文件等时,它会打印到终端。
现在我需要监听何时发生任何变化,只需 运行 cp -u source/* destination/
如何在一行中 bash 执行此操作?
下面是旧东西...
我正在使用 cp 命令为我的静态站点构建器复制文件。我也在尝试创建手表功能。
我可以使用 cp
以某种方式查看一个文件或文件夹中的文件和其他嵌套文件文件夹,并在对这些文件和文件夹进行的任何保存更改后将它们复制到目标文件夹,从而有效地同步一个目录到另一个?
或rsync
或其他命令行工具?
我认为这对你有用:
inotifywait -rm -e CLOSE_WRITE --format "%w" source | stdbuf -o0 sed 's@/$@@' | xargs -n1 -I{} rsync -Rva {} destination
使用inotify监视close_write事件(而不是all或modify),只输出其中的目录发生了变化,修剪尾部斜杠并将其提供给 rsync(告诉它保留完整路径而不使用压缩)。