【问题标题】:Edit a file before an rsync / mv [closed]在 rsync / mv 之前编辑文件 [关闭]
【发布时间】:2013-06-27 18:01:06
【问题描述】:

我在 Centos 6 上。我有一个充满 xml 文件的目录,我想对其执行编辑然后 rsync 或将它们移动到同一服务器上的另一个目录。

我将如何去做,然后将其设置为 cronjob 以连续运行?

附加信息:

我想我的问题更多的是:我如何让 cron 运行一个 php 脚本,然后在它完成时(仅当它完成时)rsync 或 mv 将文件移动到另一个目录。我不想移动 php 脚本,只移动 php 脚本编辑的文件。

这是我将要编辑的示例。我想为每个媒体引用源添加一个绝对路径:

<media media-type="image"> <media-reference source="8084413.jpg" /> <media-caption>blah</media-caption> </media> <media media-type="image"> <media-reference source="8084411.jpg" /> <media-caption>blah</media-caption> </media> <media media-type="image"> <media-reference source="8084414.jpg" /> <media-caption>blah</media-caption> </media>

【问题讨论】:

  • 请描述您需要编辑的内容。这将帮助我们向您展示如何实现自动化。
  • 如果我可以使用 php,我会知道如何编辑它。那么我可以创建一个 php 脚本来编辑文件并让 cron 调用它,当它完成时它会 rsyncs 或 mv 的文件结束?

标签: php linux bash cron rsync


【解决方案1】:

您可以在 cron 条目中填充很多内容,但将其封装在脚本中会更整洁:

#!/bin/sh
cd /relevant/directory
touch marker_file
php /path/to/script.php *.xml
find . -name \*.xml -newer marker_file -exec mv {} /destination \;
rm marker_file

然后在 cron 中,每小时运行一次:

0 * * * * /path/to/above/script

使用以下之一编辑您的 cron 文件:

crontab -e
crontab -l > ~/crontab; edit ~/crontab; crontab ~/crontab

【讨论】:

  • 好吧,这看起来像我可能想要的。 marker_file 是什么?
  • 啊,我想我可能明白了。 marker_file 仅用于检查已更改的 mv 事物。为什么*.xml 在 php 行的末尾?我不会从 php 脚本中调用 xml 文件吗?
  • 随心所欲,这只是一个插图。
猜你喜欢
  • 1970-01-01
  • 2019-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-15
  • 1970-01-01
  • 1970-01-01
  • 2017-03-21
相关资源
最近更新 更多