【问题标题】:rsync command works but not as a cronjobrsync 命令有效,但不能作为 cronjob
【发布时间】:2021-04-23 20:58:07
【问题描述】:

如果我在 shell 中输入以从远程服务器本地备份数据库文件,并且每个新备份文件都附加日期,则此命令有效:

rsync -avz -Iu --backup developer@xxx.xxx.xxx.xxx:/home/database.sqlite /home/ProdBackups/dbBackup_(date +\%Y\%m\%d\%H\%M\%S).sqlite

但是当我尝试在 crontab 中将其作为 cronjob 运行时:

* * * * * rsync -avz -Iu --backup developer@xxx.xxx.xxx.xxx:/home/database.sqlite /home/ProdBackups/dbBackup_(date +\%Y\%m\%d\%H\%M\%S).sqlite

我收到此错误:

Syntax error: "(" unexpected

我该如何解决这个问题?

【问题讨论】:

    标签: linux shell ubuntu backup rsync


    【解决方案1】:

    要将date 替换为格式化日期,您需要在括号中使用“$”强制执行。

    * * * * * rsync -avz -Iu --backup developer@xxx.xxx.xxx.xxx:/home/database.sqlite /home/ProdBackups/dbBackup_$(date +\%Y\%m\%d\%H\%M\%S).sqlite
    

    作为替代方案,考虑创建一个小型包装脚本 backup.sh,然后从 cron 执行 backup.sh 脚本

    # ~/cron/backup.sh
    timestamp=$(date '+%Y%m%d%H%M%S')
    rsync -avz -Iu --backup developer@xxx.xxx.xxx.xxx:/home/database.sqlite /home/ProdBackups/dbBackup_$timestamp.sqlite
    

    而 cron 将是:

    * * * * * $HOME/cron/backup.sh
    

    优点是可以测试备份脚本,然后从 cron 按原样执行,无需担心引用日期格式等问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-21
      • 1970-01-01
      • 2013-04-08
      • 1970-01-01
      • 2016-07-05
      • 2016-03-12
      • 2022-01-23
      相关资源
      最近更新 更多