shellスクリプトは1日前のログファイルを自動的に圧縮しftpサーバに転送する


本番環境でのスクリプト自動バックアップスクリプトは、企業において重要なツールです.バックアップデータやログなどのファイルは会社の重要な資産なので、「バックアップは命を救うわら」という言葉があります(--撫琴煮酒「高利用可能なLinuxサーバーを構築する」という本から).
このスクリプトの役割は、作成ディレクトリの下にあるログファイルをバックアップし、当日と1日前のログのみをバックアップし(ログ名のフォーマットは時間まで正確)、当日の年月日をフォーマットして圧縮し、指定した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
このパスの下の当日および1日前にファイルを圧縮し、当日の日付で命名してftpサーバに転送します.
スクリプトの内容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 

最後にクロンに投げれば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
テスト追跡により、安定して実行されていることが分かった.