安排cronjob每周将文件复制到其他位置

时间:2018-08-03 02:53:30

标签: linux shell cron

我需要帮助来安排服务器上的cron,以在一个月的每周内将特定文件复制到不同的位置。

这就是我要实现的目标,

  • 第1周-复制到位置A
  • 第2周-复制到位置B
  • 第3周-复制到位置C
  • 第4周-复制到位置D

然后该作业将每月重复一次,我计划使用cp -rf命令覆盖旧文件。

有人可以阐明我如何实现这一目标吗?

2 个答案:

答案 0 :(得分:0)

有很多方法可以实现此目的,基本上,您可以在crontab中使用许多声明,每周一次,或者一次调用将根据当前日期决定的脚本。

以下示例每周如何进行不同的cron调用:

0 0 1  * * cp -fr /path/to/file /path/to/destination/A
0 0 8  * * cp -fr /path/to/file /path/to/destination/B
0 0 15 * * cp -fr /path/to/file /path/to/destination/C
0 0 22 * * cp -fr /path/to/file /path/to/destination/D

您可以在此处查看预期的运行日期时间:

https://crontab.guru/#0_0_1_ _

https://crontab.guru/#0_0_8_ _

https://crontab.guru/#0_0_15_ _

https://crontab.guru/#0_0_22_ _

答案 1 :(得分:0)

下面的示例将在每月服务器时间上午1点,第8号,第15号和第22号运行cronjobs。

0 1 1 * * rsync -avz  /path/to/directory /path/to/destination/A
0 1 8 * * rsync -avz  /path/to/directory /path/to/destination/B
0 1 15 * * rsync -avz  /path/to/directory /path/to/destination/C
0 1 22 * * rsync -avz  /path/to/directory /path/to/destination/D

cronjobs的格式为:

 +---------------- minute (0 - 59)
 |  +------------- hour (0 - 23)
 |  |  +---------- day of month (1 - 31)
 |  |  |  +------- month (1 - 12)
 |  |  |  |  +---- day of week (0 - 6) (Sunday=0 or 7)
 |  |  |  |  |
 *  *  *  *  *  command to be executed

我建议使用 rsync 而不是cp命令。如果涉及大量文件,则还可以在执行复制之前创建一个ZIP或Tar。

谢谢!