【教學】利用 WinRAR 定期備份資料
bx2aa 2010-12-09, 06:49 PM 謝謝大大的說明,我這資料庫每天都會產生一個備份檔,請問有沒有辦法設定只縮壓備份檔,不需要縮壓整個目錄,請看以下圖示:
1. 我sql一共設定五個資料庫,所以會產生五個目錄,而每個目錄每天會產生一個bak檔,我需要做的備份是把每日產生的備份檔備份起來,並不需要把整個目錄備份起來。(每日所產生的備份檔的檔案,都會依時間排序來命名)
2. 用自動壓縮程式是否有辦法把產生出來的rar檔存放在每個相同的目錄下(因為我備份軟體已經設定好需備份的目錄),是否有辦法不用利用手動的方式去點擊任何的程式,就只要設定一次之後就可以一直讓程式自動連續運作。
http://xmages.net/storage/10/1/0/e/c/upload/eb876e06.jpg
before.bat 和 Aafter.bat 還是要查外層, 不然就事先查最後產生的備份.
check.bat :start 上面加
:check
sleep
if exist E:\TransactionLogbackup\Diff_bak\gonghsi\gonghsi_tlog_%date:~0,4%%date:~5,2%%date:~8,2%*.bak goto start
if not exist E:\TransactionLogbackup\Diff_bak\gonghsi\gonghsi_tlog_%date:~0,4%%date:~5,2%%date:~8,2%*.bak goto check
:start
之後是原來 check.bat :start 後面的內容
dir E:\TransactionLogbackup\Diff_bak\gonghsi | findstr "個檔案" > before.txt
dir E:\TransactionLogbackup\Diff_bak\gonghsi | findstr "個檔案" > after.txt
備份用以下請自行去修改
backup.bat (紅字就是要放哪裡!)
dir /s /b /a-d r E:\TransactionLogbackup\Diff_bak\CHIComp01\CHIComp01_tlog_%date:~0,4%%date:~5,2%%date:~8,2%*.bak >list.txt
dir /s /b /a-d r E:\TransactionLogbackup\Diff_bak\CHIXMSys\CHIXMSys_tlog_%date:~0,4%%date:~5,2%%date:~8,2%*.bak >>list.txt
dir /s /b /a-d r E:\TransactionLogbackup\Diff_bak\dingxin\dingxin_tlog_%date:~0,4%%date:~5,2%%date:~8,2%*.bak >>list.txt
dir /s /b /a-d r E:\TransactionLogbackup\Diff_bak\excel\excel_tlog_%date:~0,4%%date:~5,2%%date:~8,2%*.bak >>list.txt
dir /s /b /a-d r E:\TransactionLogbackup\Diff_bak\gongshi\gongshi_tlog_%date:~0,4%%date:~5,2%%date:~8,2%*.bak >>list.txt
"%ProgramFiles%\WinRAR\rar" a -r -y -o+ -m5 E:\Backup\SQL.rar @list.txt
但是日期格式要依你的系統格式調整, 如果沒動過那就不用
echo %date%
2010/12/09 星期四
0123456789
%date:~0,4%%
從0取4
2010
%date:~5,2%
從5取2
12
%date:~8,2%
從8取2
09
要自動執行控制台排定工作 排程精靈 或是
at /help
task scheduler 服務要開
不過 check.bat 還有一些問題
例如超過一天沒有找到檔案, 把自己退出
改為
:check
sleep
之間加兩行
:check
if %x% gtr 1440 exit
set /A x=%x%+1
sleep
etsinz 2010-12-10, 05:55 PM before.bat 和 Aafter.bat 還是要查外層, 不然就事先查最後產生的備份.
check.bat :start 上面加
:check
sleep
if exist E:\TransactionLogbackup\Diff_bak\gonghsi\gonghsi_tlog_%date:~0,4%%date:~5,2%%date:~8,2%*.bak goto start
if not exist E:\TransactionLogbackup\Diff_bak\gonghsi\gonghsi_tlog_%date:~0,4%%date:~5,2%%date:~8,2%*.bak goto check
:start
之後是原來 check.bat :start 後面的內容
dir E:\TransactionLogbackup\Diff_bak\gonghsi | findstr "個檔案" > before.txt
dir E:\TransactionLogbackup\Diff_bak\gonghsi | findstr "個檔案" > after.txt
備份用以下請自行去修改
backup.bat (紅字就是要放哪裡!)
dir /s /b /a-d r E:\TransactionLogbackup\Diff_bak\CHIComp01\CHIComp01_tlog_%date:~0,4%%date:~5,2%%date:~8,2%*.bak >list.txt
dir /s /b /a-d r E:\TransactionLogbackup\Diff_bak\CHIXMSys\CHIXMSys_tlog_%date:~0,4%%date:~5,2%%date:~8,2%*.bak >>list.txt
dir /s /b /a-d r E:\TransactionLogbackup\Diff_bak\dingxin\dingxin_tlog_%date:~0,4%%date:~5,2%%date:~8,2%*.bak >>list.txt
dir /s /b /a-d r E:\TransactionLogbackup\Diff_bak\excel\excel_tlog_%date:~0,4%%date:~5,2%%date:~8,2%*.bak >>list.txt
dir /s /b /a-d r E:\TransactionLogbackup\Diff_bak\gongshi\gongshi_tlog_%date:~0,4%%date:~5,2%%date:~8,2%*.bak >>list.txt
"%ProgramFiles%\WinRAR\rar" a -r -y -o+ -m5 E:\Backup\SQL.rar @list.txt
但是日期格式要依你的系統格式調整, 如果沒動過那就不用
echo %date%
2010/12/09 星期四
0123456789
%date:~0,4%%
從0取4
2010
%date:~5,2%
從5取2
12
%date:~8,2%
從8取2
09
要自動執行控制台排定工作 排程精靈 或是
at /help
task scheduler 服務要開
不過 check.bat 還有一些問題
例如超過一天沒有找到檔案, 把自己退出
改為
:check
sleep
之間加兩行
:check
if %x% gtr 1440 exit
set /A x=%x%+1
sleep
大大你好,謝謝大大的指教,如果直接把backup.bat 做自動排程可以嗎?
因為我測試了一下,直接點backup.bat 是可以運作的。
以下是我做修改的程式
dir /s /b /a-d E:\TransactionLogbackup\Com_bak\CHIComp01\CHIComp01_db_%date:~0,4%%date:~5,2%%date:~8,2%2130.BAK >list.txt
dir /s /b /a-d E:\TransactionLogbackup\Com_bak\CHIXMSys\CHIXMSys_db_%date:~0,4%%date:~5,2%%date:~8,2%2130.BAK >>list.txt
dir /s /b /a-d E:\TransactionLogbackup\Com_bak\dingxin\dingxin_db_%date:~0,4%%date:~5,2%%date:~8,2%2130.BAK >>list.txt
dir /s /b /a-d E:\TransactionLogbackup\Com_bak\excel\excel_db_%date:~0,4%%date:~5,2%%date:~8,2%2130.BAK >>list.txt
dir /s /b /a-d E:\TransactionLogbackup\Com_bak\gongshi\gongshi_db_%date:~0,4%%date:~5,2%%date:~8,2%2130.BAK >>list.txt
"%ProgramFiles%\WinRAR\rar" a -r -y -o+ -m5 E:\TransactionLogbackup\114_comrar\114com%date:~0,4%%date:~5,2%%date:~8,2%.rar @list.txt
http://xmages.net/storage/10/1/0/4/0/upload/9fa30d31.jpg
現在遇到的問題是 我每次產生出的檔案會是如:dingxin_db_201012102130
就是2010年12月10號21點30分 如上圖 有時的檔名會是
dingxin_db_201012112131
dingxin_db_201012122132
dingxin_db_201012132133
之類的
像這樣子,如果我要把它的"分鐘"也自動備份的話,參數該如何下呢?
我看了一下你的程式碼好像只有"年、月、日"而已。
ps.我這個完整備份是大約三周會做一次,所以每次檔案都是三周產生一次出來。 bx2aa 2010-12-10, 09:02 PM 大大你好,謝謝大大的指教,如果直接把backup.bat 做自動排程可以嗎?
因為我測試了一下,直接點backup.bat 是可以運作的。
以下是我做修改的程式
dir /s /b /a-d E:\TransactionLogbackup\Com_bak\CHIComp01\CHIComp01_db_%date:~0,4%%date:~5,2%%date:~8,2%2130.BAK >list.txt
dir /s /b /a-d E:\TransactionLogbackup\Com_bak\CHIXMSys\CHIXMSys_db_%date:~0,4%%date:~5,2%%date:~8,2%2130.BAK >>list.txt
dir /s /b /a-d E:\TransactionLogbackup\Com_bak\dingxin\dingxin_db_%date:~0,4%%date:~5,2%%date:~8,2%2130.BAK >>list.txt
dir /s /b /a-d E:\TransactionLogbackup\Com_bak\excel\excel_db_%date:~0,4%%date:~5,2%%date:~8,2%2130.BAK >>list.txt
dir /s /b /a-d E:\TransactionLogbackup\Com_bak\gongshi\gongshi_db_%date:~0,4%%date:~5,2%%date:~8,2%2130.BAK >>list.txt
"%ProgramFiles%\WinRAR\rar" a -r -y -o+ -m5 E:\TransactionLogbackup\114_comrar\114com%date:~0,4%%date:~5,2%%date:~8,2%.rar @list.txt
現在遇到的問題是 我每次產生出的檔案會是如:dingxin_db_201012102130
就是2010年12月10號21點30分 如上圖 有時的檔名會是
dingxin_db_201012112131
dingxin_db_201012122132
dingxin_db_201012132133
之類的
像這樣子,如果我要把它的"分鐘"也自動備份的話,參數該如何下呢?
我看了一下你的程式碼好像只有"年、月、日"而已。
ps.我這個完整備份是大約三周會做一次,所以每次檔案都是三周產生一次出來。
直接用 backup.bat 也可以!
check.bat after.bat before.bat 是為了確認在備份時不會發生 SQL 維護精靈還沒備份結束.
我原本用的
dir /s /b /a-d E:\TransactionLogbackup\Diff_bak\gongshi\gongshi_tlog_%date:~0,4%%date:~5,2%%date:~8,2%*.bak >>list.txt
是日期只要對、後面的不管是多少都照樣備份, 請打開 list.txt 就知道!
list.txt 就是要備份的檔案列表.
dir.....*.bak 把檔案含路徑輸出
> 轉向覆蓋 list.txt
>> 附加到 list.txt
所以結果就在 list.txt
dir /s /b /a-d E:\RSS\ps\com\gongshi\dingxin_db_%date:~0,4%%date:~5,2%%date:~8,2%*.bak >>list.txt etsinz 2010-12-13, 11:22 AM 直接用 backup.bat 也可以!
check.bat after.bat before.bat 是為了確認在備份時不會發生 SQL 維護精靈還沒備份結束.
我原本用的
dir /s /b /a-d E:\TransactionLogbackup\Diff_bak\gongshi\gongshi_tlog_%date:~0,4%%date:~5,2%%date:~8,2%*.bak >>list.txt
是日期只要對、後面的不管是多少都照樣備份, 請打開 list.txt 就知道!
list.txt 就是要備份的檔案列表.
dir.....*.bak 把檔案含路徑輸出
> 轉向覆蓋 list.txt
>> 附加到 list.txt
所以結果就在 list.txt
dir /s /b /a-d E:\RSS\ps\com\gongshi\dingxin_db_%date:~0,4%%date:~5,2%%date:~8,2%*.bak >>list.txt
謝謝大大的說明,目前測試正常,非常感謝大大
另請問大大dir /s /b /a-d r 的r 意思是什麼
假設我設有五個目錄需備份,是不是我該備份的地方就一定要設有五個目錄,不然程式是否會找不到?然後不動作呢?
請問有辦法另外設定自動排程,把做出來的備份壓縮檔,在一定的時間內清掉檔案嗎,就像在sql資料庫裡可以設定一樣,如:只保留幾周最新的備份檔之類的。(因我怕久而久之放太多備份檔,會浪費本機hdd容量,因我已做異地備份,把檔案備份到b地了,所以放在本機的檔案我想只需保留幾周就ok了。) bx2aa 2010-12-13, 05:20 PM 謝謝大大的說明,目前測試正常,非常感謝大大
另請問大大dir /s /b /a-d r 的r 意思是什麼
假設我設有五個目錄需備份,是不是我該備份的地方就一定要設有五個目錄,不然程式是否會找不到?然後不動作呢?
請問有辦法另外設定自動排程,把做出來的備份壓縮檔,在一定的時間內清掉檔案嗎,就像在sql資料庫裡可以設定一樣,如:只保留幾周最新的備份檔之類的。(因我怕久而久之放太多備份檔,會浪費本機hdd容量,因我已做異地備份,把檔案備份到b地了,所以放在本機的檔案我想只需保留幾周就ok了。)
r 是不小心按到的吧!
List.txt 是備份內容 只要有確切路徑檔名就會備份.
dir /s /b /a-d E:\RSS\ps\com\gongshi\*%date:~0,4%%date:~5,2%%date:~8,2%*.bak >>list.txt
就會把 E:\RSS\ps\com\gongshi\ 目錄下的所有目錄內檔名中含有當天年月日的所有 .bak 通通列入備份的列表中.
"%ProgramFiles%\WinRAR\rar" a -r -y -o+ -m5 E:\TransactionLogbackup\114_comrar\114com%date:~0,4%%date:~5,2%%date:~8,2%.rar @list.txt
在最後一行中加入例如:
"%ProgramFiles%\WinRAR\rar" a -r -y -o+ -m5 E:\TransactionLogbackup\114_comrar\114com%date:~0,4%%date:~5,2%%date:~8,2%.rar @list.txt
if %date:~5,2% LEQ 3 echo del E:\TransactionLogbackup\114_comrar\114com%date:~0,4%%date:~5,2%%date:~8,2%.rar >> 1-3month.bat
if %date:~5,2% GEQ 4 if %date:~5,2% LEQ 6 echo del E:\TransactionLogbackup\114_comrar\114com%date:~0,4%%date:~5,2%%date:~8,2%.rar >> 4-6month.bat
if %date:~5,2% GEQ 7 if %date:~5,2% LEQ 9 echo del E:\TransactionLogbackup\114_comrar\114com%date:~0,4%%date:~5,2%%date:~8,2%.rar >> 7-9month.bat
if %date:~5,2% GEQ 10 if %date:~5,2% LEQ 12 echo del E:\TransactionLogbackup\114_comrar\114com%date:~0,4%%date:~5,2%%date:~8,2%.rar >> 10-12month.bat
每年開春手動刪除
1-3month.bat
4-6month.bat
7-9month.bat
10-12month.bat
或是年初多設定一個排程
delete.bat
=============
del 1-3month.bat
del 4-6month.bat
del 7-9month.bat
del 10-12month.bat
=============
或是每次都跑一次 echo del 1-3month.bat >> ??month.bat
上面改為
if %date:~5,2% LEQ 3 echo del E:\TransactionLogbackup\114_comrar\114com%date:~0,4%%date:~5,2%%date:~8,2%.rar >> 1-3month.bat && echo del 10-12month.bat >> 1-3month.bat
if %date:~5,2% GEQ 4 if %date:~5,2% LEQ 6 echo del E:\TransactionLogbackup\114_comrar\114com%date:~0,4%%date:~5,2%%date:~8,2%.rar >> 4-6month.bat && echo del 1-3month.bat >> 4-6month.bat
if %date:~5,2% GEQ 7 if %date:~5,2% LEQ 9 echo del E:\TransactionLogbackup\114_comrar\114com%date:~0,4%%date:~5,2%%date:~8,2%.rar >> 7-9month.bat && echo del 4-6month.bat >> 7-9month.bat
if %date:~5,2% GEQ 10 if %date:~5,2% LEQ 12 echo del E:\TransactionLogbackup\114_comrar\114com%date:~0,4%%date:~5,2%%date:~8,2%.rar >> 10-12month.bat && echo del 7-9month.bat >> 10-12month.bat
跑過任何一季的 ?-?month.bat 會清掉上一季的批次檔
排程加入
1-3month.bat
4-6month.bat
7-9month.bat
10-12month.bat
各個檔案要跑的時間點即可! etsinz 2010-12-15, 03:34 PM r 是不小心按到的吧!
List.txt 是備份內容 只要有確切路徑檔名就會備份.
dir /s /b /a-d E:\RSS\ps\com\gongshi\*%date:~0,4%%date:~5,2%%date:~8,2%*.bak >>list.txt
就會把 E:\RSS\ps\com\gongshi\ 目錄下的所有目錄內檔名中含有當天年月日的所有 .bak 通通列入備份的列表中.
"%ProgramFiles%\WinRAR\rar" a -r -y -o+ -m5 E:\TransactionLogbackup\114_comrar\114com%date:~0,4%%date:~5,2%%date:~8,2%.rar @list.txt
在最後一行中加入例如:
"%ProgramFiles%\WinRAR\rar" a -r -y -o+ -m5 E:\TransactionLogbackup\114_comrar\114com%date:~0,4%%date:~5,2%%date:~8,2%.rar @list.txt
if %date:~5,2% LEQ 3 echo del E:\TransactionLogbackup\114_comrar\114com%date:~0,4%%date:~5,2%%date:~8,2%.rar >> 1-3month.bat
if %date:~5,2% GEQ 4 if %date:~5,2% LEQ 6 echo del E:\TransactionLogbackup\114_comrar\114com%date:~0,4%%date:~5,2%%date:~8,2%.rar >> 4-6month.bat
if %date:~5,2% GEQ 7 if %date:~5,2% LEQ 9 echo del E:\TransactionLogbackup\114_comrar\114com%date:~0,4%%date:~5,2%%date:~8,2%.rar >> 7-9month.bat
if %date:~5,2% GEQ 10 if %date:~5,2% LEQ 12 echo del E:\TransactionLogbackup\114_comrar\114com%date:~0,4%%date:~5,2%%date:~8,2%.rar >> 10-12month.bat
每年開春手動刪除
1-3month.bat
4-6month.bat
7-9month.bat
10-12month.bat
或是年初多設定一個排程
delete.bat
=============
del 1-3month.bat
del 4-6month.bat
del 7-9month.bat
del 10-12month.bat
=============
或是每次都跑一次 echo del 1-3month.bat >> ??month.bat
上面改為
if %date:~5,2% LEQ 3 echo del E:\TransactionLogbackup\114_comrar\114com%date:~0,4%%date:~5,2%%date:~8,2%.rar >> 1-3month.bat && echo del 10-12month.bat >> 1-3month.bat
if %date:~5,2% GEQ 4 if %date:~5,2% LEQ 6 echo del E:\TransactionLogbackup\114_comrar\114com%date:~0,4%%date:~5,2%%date:~8,2%.rar >> 4-6month.bat && echo del 1-3month.bat >> 4-6month.bat
if %date:~5,2% GEQ 7 if %date:~5,2% LEQ 9 echo del E:\TransactionLogbackup\114_comrar\114com%date:~0,4%%date:~5,2%%date:~8,2%.rar >> 7-9month.bat && echo del 4-6month.bat >> 7-9month.bat
if %date:~5,2% GEQ 10 if %date:~5,2% LEQ 12 echo del E:\TransactionLogbackup\114_comrar\114com%date:~0,4%%date:~5,2%%date:~8,2%.rar >> 10-12month.bat && echo del 7-9month.bat >> 10-12month.bat
跑過任何一季的 ?-?month.bat 會清掉上一季的批次檔
排程加入
1-3month.bat
4-6month.bat
7-9month.bat
10-12month.bat
各個檔案要跑的時間點即可!
謝謝大大辛苦說明,感謝您為小弟解決壓縮備份問題,非常感謝,請問大大是否可以留個msn聯絡方式,小弟改日若有其它問題,方可請教大大您。 bx2aa 2010-12-18, 05:16 PM 謝謝大大辛苦說明,感謝您為小弟解決壓縮備份問題,非常感謝,請問大大是否可以留個msn聯絡方式,小弟改日若有其它問題,方可請教大大您。
平時都沒開 MSN 開機時就關掉, 除非很久沒下載微軟網路廣播, 才偶而登入一次.
上一次用好像是一、二年前吧!
有問題發帖發問, 若其他人會, 應該很樂意回答! etsinz 2010-12-20, 08:59 AM 平時都沒開 MSN 開機時就關掉, 除非很久沒下載微軟網路廣播, 才偶而登入一次.
上一次用好像是一、二年前吧!
有問題發帖發問, 若其他人會, 應該很樂意回答!
了解,謝謝,另詢問大大,你會用cms架站嗎? bx2aa 2010-12-20, 01:46 PM 了解,謝謝,另詢問大大,你會用cms架站嗎?
以前有人發過 Joomla 我接著回 Joomla phpBB MySQL 全自動安裝, 那個算CMS嗎?
從空機 "開電源" "放光碟", 全自動安裝到好, 我算會裝嗎? 因為我都沒動一個按鍵和滑鼠, 全自動的, 除了分割硬碟外!
現在討論的內容和 WinRAR 和定期備份沒關了! etsinz 2010-12-21, 01:12 PM 以前有人發過 Joomla 我接著回 Joomla phpBB MySQL 全自動安裝, 那個算CMS嗎?
從空機 "開電源" "放光碟", 全自動安裝到好, 我算會裝嗎? 因為我都沒動一個按鍵和滑鼠, 全自動的, 除了分割硬碟外!
現在討論的內容和 WinRAR 和定期備份沒關了!
是的,我只是剛好想到有關這方便問題,順便請問一下而已。 |