生产环境下脚本自动备份脚本是企业中重要工具。备份数据和日志等文件是公司的重要资产,所以有句话叫“备份是救命的稻草”(——出自抚琴煮酒《构建高可用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. #取前一天年月日  
  7. y=`date --date='1 days ago' "+%Y"`   
  8. m=`date --date='1 days ago' "+%m"`   
  9. d=`date --date='1 days ago' "+%d"`     
  10.  
  11. #取当天年月日  
  12. yt=`date "+%Y"`  
  13. mt=`date "+%m"`  
  14. dt=`date "+%d"`  
  15.  
  16. #以当天日期为压缩文件名  
  17. y1=`date "+%Y"`  
  18. m1=`date "+%m"`  
  19. d1=`date "+%d"`    
  20.  
  21. #文件名信息  
  22. SRCFILE="lis42.log.$y-$m-$d*   lis42.log.$yt-$mt-$dt*   lis42.log" 
  23. DESFILE="lis42_$y1-$m1-$d1.zip" 
  24.  
  25. #需要备份文件的目录  
  26. FILEPATH="/home/lislog" 
  27.  
  28. # FTP Server备份目录  
  29. # BACKUPDIR="lislog" 
  30.  
  31. #压缩处理  
  32. cd  $FILEPATH  
  33. zip $DESFILE  $SRCFILE  
  34.  
  35. #登入FTP Server并传送档案  
  36. ftp -v -n $FTPHOST << END 
  37. user $USERNAME $PASSWORD 
  38. binary 
  39. put  $DESFILE  
  40. bye  
  41. END 
  42.  
  43. #删除临时压缩文件  
  44. cd  $FILEPATH  
  45. rm -f $DESFILE  
  46.  
  47. #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

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