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

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

naonao_127关注2人评论19401人阅读2012-06-08 11:26:16

        生产环境下脚本自动备份脚本是企业中重要工具。备份数据和日志等文件是公司的重要资产,所以有句话叫“备份是救命的稻草”(——出自抚琴煮酒《构建高可用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:

  1. #!/bin/bash  
  2. FTPHOST="1.1.1.7" 
  3. USERNAME="lislog" 
  4. PASSWORD="lislog" 
  5. #取前一天年月日  
  6. y=`date --date='1 days ago' "+%Y"`   
  7. m=`date --date='1 days ago' "+%m"`   
  8. d=`date --date='1 days ago' "+%d"`     
  9. #取当天年月日  
  10. yt=`date "+%Y"`  
  11. mt=`date "+%m"`  
  12. dt=`date "+%d"`  
  13. #以当天日期为压缩文件名  
  14. y1=`date "+%Y"`  
  15. m1=`date "+%m"`  
  16. d1=`date "+%d"`    
  17. #文件名信息  
  18. SRCFILE="lis42.log.$y-$m-$d*   lis42.log.$yt-$mt-$dt*   lis42.log" 
  19. DESFILE="lis42_$y1-$m1-$d1.zip" 
  20. #需要备份文件的目录  
  21. FILEPATH="/home/lislog" 
  22. # FTP Server备份目录  
  23. # BACKUPDIR="lislog" 
  24. #压缩处理  
  25. cd  $FILEPATH  
  26. zip $DESFILE  $SRCFILE  
  27. #登入FTP Server并传送档案  
  28. ftp -v -n $FTPHOST << END 
  29. user $USERNAME $PASSWORD 
  30. binary 
  31. put  $DESFILE  
  32. bye  
  33. END 
  34. #删除临时压缩文件  
  35. cd  $FILEPATH  
  36. rm -f $DESFILE  
  37. #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

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