今天公司要求我把伺服器上的備份檔案拷到內部伺服器上,並且只要最新的,好吧,營運人員的理想目標是什麼,就是能夠讓電腦做的事,決不自己來做.
系統:centos 5.9
環境:備份檔案在/root/bak下,當然我是虛擬機器上進行的測試
1.備份檔案環境圖
2.shell指令碼內容:
| 代碼如下 |
複製代碼 |
|
#!/bin/bash
location="/root/bak/"
find $location -type f -mtime +1|xargs rm -f |
運行指令碼後的圖
好了,可以看到指令碼把今天以外的備份都刪除了,如果你不想刪除的話,那就改成下面的指令碼:
| 代碼如下 |
複製代碼 |
|
#!/bin/bash
location="/root/bak/"
newfile="/root/newfile"
file=$(find $location -type f -mtime -1)
cp $file $newfile
|
好了,就這樣吧,上面我們需要天天運行一下,後來看到朋友寫了一個自動刪除前一天備份檔案執行個體
指令碼內容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 |
經測試追蹤發現,已經穩定執行。