如何编写cron以将其复制并归档到本地服务器


How do I write a cron to copy and file to a local server?

我想设置一个cron来将作业从URL复制到服务器。

我使用的cron命令是:

cd /home/username/public_html/bin/sh; /usr/local/php54/bin/php script.php;

script.php文件包含:

rm -f /home/username/public_html/filepath/file.zip; cd /home/username/public_html/filepath/; wget -q -O /dev/null "https://www.domain.com/file.zip"

但它不起作用。

如果文件/home/username/public_html/filepath/file.zip已经存在,我也想替换它。

非常感谢您的帮助。

  1. 打开crontab编辑

    crontab-e

  2. 添加行与您的时间表如下(请检查所需的时间表):

    */10***rm-f/home/username/public_html/filepath/file.zip;cd/home/username/public_html/filepath/;wget-q-O/dev/null"https://www.domain.com/file.zip"

cron将每10分钟运行一次,删除file.zip,然后将新的file.zip下载到/home/username/public_html/filepath/。

PHP脚本有两种模式:

  1. 直接输出到STDOUT(默认值)
  2. 执行PHP命令(<?php?>之间会发生什么

您的PHP脚本:

rm -f /home/username/public_html/filepath/file.zip; cd /home/username/public_html/filepath/; wget -q -O /dev/null "https://www.domain.com/file.zip"

相当于shell脚本:

echo 'rm -f /home/username/public_html/filepath/file.zip; cd /home/username/public_html/filepath/; wget -q -O /dev/null "https://www.domain.com/file.zip"'

…因此,除非您查看cron的输出(可能是通过电子邮件发送给您的),否则它没有明显的效果。

这些不是PHP命令,而是shell命令。因此,使用shell而不是PHP来执行脚本。

cd /home/username/public_html/bin/sh; /bin/sh script.php;

…并考虑将其重命名为不那么欺骗性的名称,例如script.sh