定时任务备份日志

时间:2022-07-16 07:50:18

每天晚上23:59备份lampp日志(access_log),备份的文件名以当时的系统时间命名。(备份文件路径:/tmp/logs)

1、编写备份的shell脚本命名为bak_log.sh;(注意用``表示里面是执行的命令,用''表示定义变量;一开始用的'',导致fileName取不到准确的时间值)

  vim bak_log.sh                              #新建并编辑bak_log.sh脚本

  #!/bin/bash                               #指定shell解释器(linux默认的shell解释器是bash)
  filePath='/opt/lampp/logs/access_log'                     #定义变量filePath,取需要备份的日志路径

  bakPath='/tmp/logs'                             #定义变量bakPath,取备份日志的路径
  fileName=`date +%Y%m%d%H%M%S`                       #定义fileName,执行命令取系统时间为文件名
  cat $filePath >$bakPath/access_log_$fileName               #把/opt/lampp/logs/access_log的内容复制到/tmp/logs/access_log_$fileName文件里
  >$filePath                                   #备份完成后,清空/opt/lampp/logs/access_log日志

2、添加定时任务;

  crontab -e                                             #编辑定时任务

  59 23 * * * sh /opt/lampp/bak_log.sh                               #表示每晚的23:59执行备份文件bak_log.sh

    引申问题:

    ①.执行完crontab -e,可能遇到的提示信息:no crontab for root - using an empty one

      需要设置选择下编辑器,在/etc/profiled这个配置文件配置编辑器;

      vim /etc/profile

      在最后加上:export EDITOR="/usr/bin/vim"                  #选择vim为编辑器

      保存后,执行source /etc/profile命令。(这个命令的含义是重新读取下配置文件,让你的修改能够立即生效。)

    ②.若没有配置,直接执行export EDITOR="/usr/bin/vim" ; crontab -e,报错如下:
        no crontab for root - using an empty one
        crontab: installing new crontab
        "/tmp/crontab.0ISO2w":1: bad day-of-week
        errors in crontab file, can't install.
        Do you want to retry the same edit?

      这个报错是由于时间格式不对导致,查看下你定时任务的时间设置是否准确。

      命令说明:export EDITOR="/usr/bin/vim" ; crontab -e  →中间的分号,是用来分隔两个命令的,意思是让命令顺序执行。

      直接执行 export 这个命令来设置变量,虽然当时能够生效,但是下次重新启动后,还要重新设置变量。

 3、最终实现。(用每分钟执行一次的定时任务测试是否成功)

  */1 * * * * sh /opt/lampp/bak_log.sh                                    #表示每分钟执行一次执行备份文件bak_log.sh

  定时任务备份日志