gpt4 book ai didi

ubuntu - rsync 在作为 cron 作业执行时不排除扩展

转载 作者:行者123 更新时间:2023-12-04 18:28:30 24 4
gpt4 key购买 nike

我正在尝试使用 rsync 备份服务器上的所有文件和目录,而不是所有内容,我想排除一些事情,所以我这样做:

/usr/bin/rsync -aAXh  --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /* /mnt/backupdirectory

它工作得很好,并且完全按照它应该做的事情做,直到我把它放在一个 cron 工作中每天都做。
30 23 * * * ~/scripts/backup_system.sh > ~/scripts/logs/backup_system.log 2>&1

当作为 cron 作业执行时,它不会排除它应该排除的所有目录。我不明白为什么。有人不能向我解释为什么吗?

我认为这并不重要,但使用的系统是 Ubuntu Server 14.04。

在下面的答案中指出了这个问题。在 cron 中使用大括号无效,我不得不将前面的命令替换为:
/usr/bin/rsync -aAXh --exclude=/dev/* --exclude=/proc/* --exclude=/sys/* --exclude=/tmp/* --exclude=/run/* --exclude=/mnt/* --exclude=/media/* --exclude=/lost+found /* /mnt/backupdirectory

最佳答案

检查三件事:

  • 来自 cron 的邮件中的错误是什么?
  • 不要使用波浪号扩展。使用完整路径名。
  • 您的脚本是否设置了 PATH ?因为 cronjobs 不继承任何 PATH .

  • 最后一点是所有 cron 意外事件的 99% 的原因。
    使用类似的东西
    PATH=$(/usr/bin/getconf PATH)

    在脚本的开头。要在命令行上测试它,请在空环境下运行它,例如
    /usr/bin/env -i /path/to/script.sh

    只要这不起作用,cronjob 就不会。

    关于ubuntu - rsync 在作为 cron 作业执行时不排除扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28609178/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com