發新話題
打印

[轉貼]自動刪除過期備份檔

[轉貼]自動刪除過期備份檔

http://tw.myblog.yahoo.com/shin-chuan/article?mid=498&prev=499&next=494&sc=1

 

自動刪除過期備份檔(Autodelete Expired BAK Files)

分類:軟體密技
2009/05/23 10:55

目標:自動清除超過五天以上的備份檔案

1.LINUX:利用基本指令(進階)就能達成。
2.WINDOWS(非SERVER版):需撰寫批次檔才能完成。超麻煩…

一、將主機的重資料壓縮。並將檔案加上日期。
#設定日期變數day
day=`date +%Y-%m-%d`


#設定basedir路徑,也就是/back/backup/weekly這個資料夾。
basedir="/back/backup/weekly"

#將複製好的所有檔案打包並壓縮。
cd $basedir
tar -zpcf sys_backup_weekly."$day".tar.gz * --exclude sys_backup_weekly."$day".tar.gz

二、我要改成自動刪除一個月前的備份檔案。
以刪除每日備份的例子,將數字改成你要的天數就可以了。
date10=`date --date='10 days ago' +%Y-%m-%d`
rm -rf /back/backup/daily/mysql."$date10".tar.gz

修改成
date30=`date --date='30 days ago' +%Y-%m-%d`
rm -rf /back/backup/daily/mysql."$date30".tar.gz

 

三、使用系統時間,刪除n天前的資料:

採用的LINUX指令就是find就可以了,因為在LINUX下的find就可以針對檔案的日期來做尋找及篩選,同時把結果拋到後面的指令來處理。

說穿了,如果是透過LINUX的指令的話...只要一條指令就可以自動刪除五天前舊的備份檔案,指令如下:

find /backup/ -mtime +5 -exec rm -rf{} \;

find ./ -ctime +11 -type f -name "*" -exec rm -f {} \;


說明:
(1)find /backup/:搜尋資料夾(/backup/)。
(2)-mtime +3:三天內未變動過的檔案。
(3)-exec command {} \;:執行指令(command)和結束(\;)。
(4)rm -rf {}:強制刪除find所搜尋到的檔案。

OR

find /backup/ -mtime +5 -type f | xargs -i rm {};

Windows備份:

rem ------ [完整備份] 將網站資料備份到 以 日期為目錄名稱 的目錄中 --------------------------------------------------------
rem xcopy c:\inetpub D:\Backup\%date:~0,4%%date:~5,2%%date:~8,2% /h /i /s /k /o /y >> D:\Backup\log\%date:~0,4%%date:~5,2%%date:~8,2%.log

rem ------ [差異備份] 備份檔案 到 File Server 的個人備份區
XCOPY D:\CustomEmoticons Z:\CustomEmoticons\ /D /H /I /S /Y

rem ----- XCOPY 用法 可用 "XCOPY /?" 查詢 ---------------------------------------------
rem XCOPY 差異備份常用參數
rem /D:m-d-y 複製在指定日期當天或之後發生變更的檔案。如果沒有給日期,只複製那些來源檔案日期比目的檔案日期為新的檔案。
rem /H 時複製隱藏檔和系統檔。
rem /I 如果目的不存在且複製一個以上的檔案的話,就假設指定的目的一定是目錄。
rem /S 複製每個目錄及其包含的子目錄,不複製空目錄。
rem /E 複製每個目錄及其包含的子目錄,含複製空目錄。/S 與 /E 相同,能夠用來修改 /T。
rem /Y 不要提示您確定是否要覆蓋一個已經存在的檔案。

 

其檔名設定格式如下:
假設現在的時間是 2005年10月29日

2005 / 10 / 29 //系統日期
0123 4 56 7 89 //代表數字由0開始

%date:~0,4% =2005 //0,4即從數字第0位開始抓4個數字
%date:~5,2% =10 //5,2即從數字5開始抓2個數字
%date:~8,2% =15 //8,2即從數字8開始抓2個數字

C:\Documents and Settings\sidney>time
現在時間是: 13:37:59.01

%time:~0,2%=13
%time:~3,2%=37
%time:~6,2%=59


所以%date:~0,4%_%date:~5,2%_%date:~8,2%-backup.rar 就會等於2005_10_29-backup.rar

rar a -r -y  c.rar a b >>log-%date:~4,14%.txt      #把文件夾a,b打包成c.rar.並把打包文件列表輸出到日誌文件
rar a -r -y  %date:~4,14%.rar  c.rar log-%date:~4,14%.txt    #把c.rar和日誌文件再打包成以日期命名的rar包
del /F /Q FSS(MJC)_CVS.rar log-%date:~4,14%.txt    #刪除c.rar和日誌文件
FTP  -s:ftp.txt 192.168.0.2    #ftp登錄到主機192.168.0.2,調用ftp.txt與ftp交互命令,ftp.txt內容見下。
del /F /Q %date:~4,14%.rar    #上傳成功後刪除


other example:

備份.bat
c:\rar.exe a -r -m0 d:\backup\temp.rar C:\Documents and Settings

還原.bat
c:\rar.exe x -o+ d:\backup\temp.rar c:\

資料來源:http://mkbfb.blogspot.com/2008/02/linux-centosfedoraubuntu-xampp.html

TOP

發新話題