shell脚本实现自动压缩一天前的日志文件并传到ftp服务器上

   生产环境下脚本自动备份脚本是企业中重要工具。备份数据和日志等文件是公司的重要资产,所以有句话叫“备份是救命的稻草”(——出自抚琴煮酒《构建高可用Linux服务器》一书)。

        此脚本的作用是将制定目录下的日志文件备份,只备份当天和一天前的日志(日志命名格式精确到小时),并以当天的年月日为格式进行压缩,然后传送到指定ftp服务器。

实例:# ll /home/lislog/

-rw-r--r-- 1 itadmin dba    8079474 06-07 00:59 lis42.log.2012-06-07-00
-rw-r--r-- 1 itadmin dba   50354570 06-07 01:59 lis42.log.2012-06-07-01
-rw-r--r-- 1 itadmin dba   12084741 06-07 02:59 lis42.log.2012-06-07-02

……
-rw-r--r-- 1 itadmin dba   14110627 06-08 07:59 lis42.log.2012-06-08-07
-rw-r--r-- 1 itadmin dba  112698103 06-08 08:59 lis42.log.2012-06-08-08
-rw-r--r-- 1 itadmin dba  372195176 06-08 09:59 lis42.log.2012-06-08-09

将该路径下当天及一天前文件进行压缩,以当天日期命名后传送到ftp服务器上。

脚本内容backuplislog.sh:

    #!/bin/bash  
    FTPHOST="1.1.1.7"
    USERNAME="lislog"
    PASSWORD="lislog"
     
    #取前一天年月日  
    y=`date --date='1 days ago' "+%Y"`   
    m=`date --date='1 days ago' "+%m"`   
    d=`date --date='1 days ago' "+%d"`     
     
    #取当天年月日  
    yt=`date "+%Y"`  
    mt=`date "+%m"`  
    dt=`date "+%d"`  
     
    #以当天日期为压缩文件名  
    y1=`date "+%Y"`  
    m1=`date "+%m"`  
    d1=`date "+%d"`    
     
    #文件名信息  
    SRCFILE="lis42.log.$y-$m-$d*   lis42.log.$yt-$mt-$dt*   lis42.log"
    DESFILE="lis42_$y1-$m1-$d1.zip"
     
    #需要备份文件的目录  
    FILEPATH="/home/lislog"
     
    # FTP Server备份目录  
    # BACKUPDIR="lislog"
     
    #压缩处理  
    cd  $FILEPATH  
    zip $DESFILE  $SRCFILE  
     
    #登入FTP Server并传送档案  
    ftp -v -n $FTPHOST << END
    user $USERNAME $PASSWORD
    binary
    put  $DESFILE  
    bye  
    END
     
    #删除临时压缩文件  
    cd  $FILEPATH  
    rm -f $DESFILE  
     
    #end

最后扔到cron里就ok了,然后用的时候去拿就可以了

# crontab -l
30 6 * * * /home/itadmin/backuplislog.sh

结果查看:

#ll  /home/lislog/

-rw-r--r-- 1 itadmin dba  240100295 06-08 06:31 lis42_2012-06-08.zip

经测试追踪发现,已经稳定执行。

分割线
感谢打赏
江西数库信息技术有限公司
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS