用cron传输文件?

时间:2010-11-23 19:34:43

标签: cron

我试图弄清楚是否可以设置一个cron作业,将所有文件从我的服务器上的一个文件夹传输到另一个文件夹,然后从另一个文件夹中获取一定数量的文件(随机选择的文件)把它放在原始文件夹中。如果是这样的任何提示,我根本没有使用cron的经验,我只是不想用ftp登录并手动进行传输。

3 个答案:

答案 0 :(得分:5)

Cron非常简单,它所做的就是在一天的指定时间运行您选择的命令。

在您的情况下,您可能希望编写一个使用rsync,scp或ftp来传输文件的shell脚本,确保成功退出(检查退出代码,传输,存储在$?变量中),然后移动将文件集放入原始文件夹。

我会通过ssh密钥使用rsync和无密码身份验证。这对安全性有好处,如果你愿意,你甚至可以限制接收端只允许ssh密钥运行rsync的服务器端。

如果此脚本名为/opt/scripts/myscript.sh,并且每10分钟运行一次,请将以下内容添加到crontab(运行crontab -e以编辑crontab):

* / 10 * * * * /opt/scripts/myscript.sh

请记住,shell中可用的环境变量与cronjob运行时可用的环境变量不同,因此PATH等可能不同。这通常会导致cron作业在运行它们的前几次失败(参见我关于cron作业的法律:http://efod.se/blog/archive/2010/02/19/forsbergs-law-on-cron-jobs :-))。来自cron的任何输出都通过邮件发送给运行cron作业的用户,这有助于调试。将消息写入/ tmp /中的某个文件的简单调试通常也是让cron作业运行的一种方法。

在许多情况下,将cron作业作为特殊用户运行是有意义的。不要以root身份运行你的cron作业,除非他们绝对必须具有root访问权限,最好以只在文件系统中具有有限权限的特殊用户身份运行。

答案 1 :(得分:1)

答案 2 :(得分:1)

编辑你的cron文件:

crontab -e 

传输文件的示例条目如下所示:

30 3 * * *      rsync -av School/* username@server:~/School/ >| /home/username/CronLogs/school_update

字段是:分钟,小时,日,月,星期几,命令 因此,在我的示例中,我通过执行列出的rsync命令每天凌晨3:30传输文件。注意*'将字段标记为未使用。

有关快速参考/教程,请参阅:this link