美文网首页
利用Cron每日备份

利用Cron每日备份

作者: Lupino | 来源:发表于2020-12-13 22:35 被阅读0次

    把备份脚本放到 /etc/cron.daily 这个目录下面就可以每日备份了。

    但是我放进去后失败了,他没有运行。

    我的备份脚本是 /etc/cron.daily/backup.sh,居然没有运行。

    我第一次碰见,Google 找了下没找到解决方法。

    下面参照 Google 后的资料,慢慢排查出来。

    1、/etc/cron.daily 啥时候执行的

    # cat /etc/crontab
    # /etc/crontab: system-wide crontab
    # Unlike any other crontab you don't have to run the `crontab'
    # command to install the new version when you edit this file
    # and files in /etc/cron.d. These files also have username fields,
    # that none of the other crontabs do.
    
    SHELL=/bin/sh
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    
    # m h dom mon dow user  command
    17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
    25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
    47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
    52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
    #
    

    看了这个信息后,/etc/cron.daily 是在每天 06:25 的时候执行。

    # ls /usr/sbin/anacron
    ls: cannot access '/usr/sbin/anacron': No such file or directory
    

    anacron 不存在,说明是使用 run-parts --report /etc/cron.daily 来执行的。

    我们看一下 run-parts 的文档

    # run-parts --help
    Usage: run-parts [OPTION]... DIRECTORY
          --test          print script names which would run, but don't run them.
          --list          print names of all valid files (can not be used with
                          --test)
      -v, --verbose       print script names before running them.
          --report        print script names if they produce output.
          --reverse       reverse execution order of scripts.
          --exit-on-error exit as soon as a script returns with a non-zero exit
                          code.
          --lsbsysinit    validate filenames based on LSB sysinit specs.
          --new-session   run each script in a separate process session
          --regex=PATTERN validate filenames based on POSIX ERE pattern PATTERN.
      -u, --umask=UMASK   sets umask to UMASK (octal), default is 022.
      -a, --arg=ARGUMENT  pass ARGUMENT to scripts, use once for each argument.
      -V, --version       output version information and exit.
      -h, --help          display this help and exit.
    

    可以通过 run-parts --test 或者 run-parts --list

    发现 这两个命令,都没能出现脚本的名字。

    于是我把 .sh 去掉, 然后就显示出来了。

    第二天,他真的运行了。

    相关文章

      网友评论

          本文标题:利用Cron每日备份

          本文链接:https://www.haomeiwen.com/subject/lytmgktx.html