查看完整版本: [轉貼]自動刪除過期備份檔

chun 2010-8-11 13:37

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

<P><A href="http://tw.myblog.yahoo.com/shin-chuan/article?mid=498&amp;prev=499&amp;next=494&amp;sc=1">http://tw.myblog.yahoo.com/shin-chuan/article?mid=498&amp;prev=499&amp;next=494&amp;sc=1</A></P>
<P>&nbsp;</P>
<H2><SPAN>自動刪除過期備份檔(Autodelete Expired BAK Files)</SPAN> </H2>
<DIV class=blgfolderbar>
<DIV class=folder>分類:<A href="http://tw.myblog.yahoo.com/shin-chuan/archive?l=f&amp;id=11"><FONT color=#944547>軟體密技</FONT></A></DIV>
<DIV class=date>2009/05/23 10:55</DIV></DIV>
<DIV class=msgcontent>
<P><SPAN style="COLOR: rgb(255,0,0); FONT-WEIGHT: bold">目標:</SPAN>自動清除超過五天以上的備份檔案</P>
<P><SPAN style="FONT-WEIGHT: bold">1.LINUX:</SPAN>利用基本指令(進階)就能達成。<BR><SPAN style="FONT-WEIGHT: bold">2.WINDOWS</SPAN>(非SERVER版):需撰寫批次檔才能完成。超麻煩…</P>
<P>一、將主機的重資料壓縮。並將檔案加上日期。<BR>#設定日期變數day<BR>day=`date +%Y-%m-%d`</P>
<P><BR>#設定basedir路徑,也就是/back/backup/weekly這個資料夾。<BR>basedir="/back/backup/weekly"<BR><BR>#將複製好的所有檔案打包並壓縮。<BR>cd $basedir<BR>tar -zpcf sys_backup_weekly."$day".tar.gz * --exclude sys_backup_weekly."$day".tar.gz<BR></P>
<P>二、我要改成自動刪除一個月前的備份檔案。<BR>以刪除每日備份的例子,將數字改成你要的天數就可以了。<BR>date<SPAN style="COLOR: rgb(255,0,0)">10</SPAN>=`date --date='<SPAN style="COLOR: rgb(255,0,0)">10</SPAN> days ago' +%Y-%m-%d`<BR>rm -rf /back/backup/daily/mysql."$date<SPAN style="COLOR: rgb(255,0,0)">10</SPAN>".tar.gz<BR><BR>修改成<BR>date<SPAN style="COLOR: rgb(255,0,0)">30</SPAN>=`date --date='<SPAN style="COLOR: rgb(255,0,0)">30</SPAN> days ago' +%Y-%m-%d`<BR>rm -rf /back/backup/daily/mysql."$date<SPAN style="COLOR: rgb(255,0,0)">30</SPAN>".tar.gz</P>
<P>&nbsp;</P>
<P>三、使用系統時間,刪除n天前的資料:</P>
<P>採用的LINUX指令就是<SPAN style="COLOR: rgb(255,0,0); FONT-WEIGHT: bold">find</SPAN>就可以了,因為在LINUX下的find就可以針對檔案的日期來做尋找及篩選,同時把結果拋到後面的指令來處理。<BR><BR>說穿了,如果是透過LINUX的指令的話...只要一條指令就可以自動刪除五天前舊的備份檔案,指令如下:<BR></P>
<BLOCKQUOTE style="FONT-WEIGHT: bold">
<P>find /backup/ -mtime +5 -exec rm -rf{} \;</P>
<P>find ./ -ctime +11 -type f -name "*" -exec rm -f {} \;</P></BLOCKQUOTE>
<P><BR><SPAN style="FONT-WEIGHT: bold">說明:</SPAN><BR>(1)find /backup/:搜尋資料夾(/backup/)。<BR>(2)-mtime +3:三天內未變動過的檔案。<BR>(3)-exec command {} \;:執行指令(command)和結束(\;)。<BR>(4)rm -rf {}:強制刪除find所搜尋到的檔案。<BR><BR></P>
<P>OR </P>
<BLOCKQUOTE style="FONT-WEIGHT: bold">
<P>find /backup/ -mtime +5 -type f | xargs -i rm {};</P></BLOCKQUOTE>
<P>Windows備份:</P>
<P>rem ------ [完整備份] 將網站資料備份到 以 日期為目錄名稱 的目錄中 --------------------------------------------------------<BR>rem xcopy c:\inetpub D:\Backup\%date:~0,4%%date:~5,2%%date:~8,2% /h /i /s /k /o /y &gt;&gt; D:\Backup\log\%date:~0,4%%date:~5,2%%date:~8,2%.log </P>
<P>rem ------ [差異備份] 備份檔案 到 File Server 的個人備份區 <BR>XCOPY D:\CustomEmoticons Z:\CustomEmoticons\ /D /H /I /S /Y</P>
<P>rem ----- XCOPY 用法 可用 "XCOPY /?" 查詢 ---------------------------------------------<BR>rem XCOPY 差異備份常用參數<BR>rem /D:m-d-y 複製在指定日期當天或之後發生變更的檔案。如果沒有給日期,只複製那些來源檔案日期比目的檔案日期為新的檔案。<BR>rem /H 時複製隱藏檔和系統檔。<BR>rem /I 如果目的不存在且複製一個以上的檔案的話,就假設指定的目的一定是目錄。<BR>rem /S 複製每個目錄及其包含的子目錄,不複製空目錄。<BR>rem /E 複製每個目錄及其包含的子目錄,含複製空目錄。/S 與 /E 相同,能夠用來修改 /T。<BR>rem /Y 不要提示您確定是否要覆蓋一個已經存在的檔案。</P>
<P>&nbsp;</P>
<P><FONT size=2>其檔名設定格式如下: <BR>假設現在的時間是 2005年10月29日 <BR><BR>2005 / 10 / 29 //系統日期 <BR>0123 4 56 7 89 //代表數字由0開始 <BR><BR>%date:~0,4% =2005 //0,4即從數字第0位開始抓4個數字 <BR>%date:~5,2% =10 //5,2即從數字5開始抓2個數字 <BR>%date:~8,2% =15 //8,2即從數字8開始抓2個數字 <BR></FONT></P><FONT size=2>C:\Documents and Settings\sidney&gt;time<BR>現在時間是: 13:37:59.01</FONT>
<P><FONT size=2>%time:~0,2%=13<BR></FONT><FONT size=2>%time:~3,2%=37<BR>%time:~6,2%=59</FONT></P>
<P><FONT size=2><BR>所以<SPAN style="FONT-WEIGHT: bold"><SPAN>%date:~0,4%_%date:~5,2%_%date:~8,2%</SPAN></SPAN>-backup.rar 就會等於<SPAN style="FONT-WEIGHT: bold"><SPAN>2005_10_29</SPAN></SPAN>-backup.rar </FONT></P>
<P>rar a -r -y&nbsp;&nbsp;c.rar a b &gt;&gt;log-%date:~4,14%.txt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#把文件夾a,b打包成c.rar.並把打包文件列表輸出到日誌文件<BR>rar a -r -y&nbsp;&nbsp;%date:~4,14%.rar&nbsp;&nbsp;c.rar log-%date:~4,14%.txt&nbsp;&nbsp;&nbsp;&nbsp;#把c.rar和日誌文件再打包成以日期命名的rar包<BR>del /F /Q FSS(MJC)_CVS.rar log-%date:~4,14%.txt&nbsp;&nbsp;&nbsp;&nbsp;#刪除c.rar和日誌文件<BR>FTP&nbsp;&nbsp;-s:ftp.txt 192.168.0.2&nbsp;&nbsp;&nbsp;&nbsp;#ftp登錄到主機192.168.0.2,調用ftp.txt與ftp交互命令,ftp.txt內容見下。<BR>del /F /Q %date:~4,14%.rar&nbsp;&nbsp;&nbsp;&nbsp;#上傳成功後刪除</P>
<P><BR>other example:</P>
<P><FONT size=3 face=Verdana>備份.bat<BR>c:\rar.exe a -r -m0 d:\backup\temp.rar C:\Documents and Settings<BR><BR>還原.bat<BR>c:\rar.exe x -o+ d:\backup\temp.rar c:\ </FONT></P>
<P>資料來源:<A href="http://mkbfb.blogspot.com/2008/02/linux-centosfedoraubuntu-xampp.html"><FONT color=#944547>http://mkbfb.blogspot.com/2008/02/linux-centosfedoraubuntu-xampp.html</FONT></A></P></DIV>
頁: [1]
查看完整版本: [轉貼]自動刪除過期備份檔