【问题标题】:Copy directories on schedule linux按计划复制目录linux
【发布时间】:2014-05-16 21:01:32
【问题描述】:

我正在寻求有关脚本的帮助,该脚本允许我按计划或在新文件到达源时将目录的内容或整个目录复制到另一个目录。

例如:

/stuff/folder1/file.txt

复制到:

/stuff/folder2/file.txt

在新文件到达时或定期安排时。

我确实使用 Centos 机器。

【问题讨论】:

  • 那么,到目前为止,您尝试了什么?分享您目前拥有的代码。请注意,这是一个询问有关东西实施中出现的问题的具体问题的地方。这不是一个通用的教程论坛。不过,您可能想在 Google 上搜索“linux 文件更改监视器”一词。
  • 我会看看例如inotify.
  • 对于 inotify 我正在尝试这个- /media/_data/test/ IN_CLOSE_WRITE,IN_CREATE,IN_CLOSE_NOWRITE cp -r /media/_data/test /media/data/test2 但我不确定我有它正确

标签: linux bash shell scripting sh


【解决方案1】:

每当您保存新文件或更新folder1时,您都可以使用以下程序更新folder2

while inotifywait -r -e modify -e move -e create -e delete; do
    cp -r /stuff/folder1/. /stuff/folder2/
done

对于日程安排,我会将cp -r /stuff/folder1/. /stuff/folder2/ 添加到cron job 中。除了cp,您还可以使用rsync。也请查看manpage of inotifywait

注意:上述脚本将在folder1 目录中的第一个文件被更改后开始复制。如果您同时修改文件夹 1 中的多个文件,您可能需要在 while 循环中放置 sleep 命令。但在这种情况下,最好在程序末尾添加复制命令,这会改变folder1 的文件。

【讨论】:

  • 所以这将在文件被修改、移动、创建或删除时运行副本?它会在开始复制之前知道正在写入文件吗?
  • modify 的描述说:“一个被监视的文件或被监视目录中的文件被写入。”。所以是的,该事件在修改后被触发(有关更多详细信息,请查看手册页)。
  • 感谢您的回答。将在 cp -r 命令写入日志文件echo $file >> /var/log/inotify 之后添加此命令,使其看起来像这样?
  • while inotifywait -r -e modify -e move -e create -e delete; do cp -r /stuff/folder1/. /stuff/folder2/ echo $file >> /var/log/inotify; done
  • 不明白,你想用你的记录达到什么/你想记录...你想在复制命令之后记录修改后的文件吗?
猜你喜欢
  • 2015-10-17
  • 2015-09-08
  • 2014-11-22
  • 1970-01-01
  • 2015-11-10
  • 1970-01-01
  • 2020-03-08
  • 2012-09-08
  • 1970-01-01
相关资源
最近更新 更多