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:
最後にクロンに投げれば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
テスト追跡により、安定して実行されていることが分かった.
このスクリプトの役割は、作成ディレクトリの下にあるログファイルをバックアップし、当日と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:
- #!/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
最後にクロンに投げれば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
テスト追跡により、安定して実行されていることが分かった.