【问题标题】:Schedule cronjob to copy files to different location every week安排 cronjob 每周将文件复制到不同的位置
【发布时间】:2019-01-10 21:02:59
【问题描述】:

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

这就是我想要实现的目标,

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

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

有人能说明我如何实现这一目标吗?

【问题讨论】:

    标签: linux shell cron


    【解决方案1】:

    有很多方法可以实现这一点,基本上你可以在你的 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__

    【讨论】:

      【解决方案2】:

      以下示例将在每个月的 1 日、8 日、15 日和 22 日的服务器时间凌晨 1 点运行 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。

      谢谢!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-29
        相关资源
        最近更新 更多