有自己的Server,平常沒事時主機安祥的運作著,不過不怕一萬只怕萬一,很多時候不小心改了程式、昇級Server、程式,主機當掉等,一個不小心出了問題,可是要人命的,主機的回覆就算了,資料的不見可是十分要命,重要的照片、文章不見了,我想這是大家所不想見的,在大多數的企業裡,系統資料的備援都有自己的一套計畫,也是年度稽核的重點。
不過像我這種用自己的家機當Server的人,沒有企業的大成本,SCSI容錯、磁帶…等等等,要怎麼做呢?這裡提供一個在Windows下環境可用的方式,不過需要配合壓縮程式7-Zip或其它壓縮軟體及Dos指令。
想法:
- 建立一個日期目錄,以資區別不同日期的備份。
- 拷貝資料到此日期目錄下所建立的子目錄,以區別不同內容。
- 利用7-Zip壓縮檔案,減少空間的使用。
- 刪除日期目錄下所有資料及資料夾。
- 建立排程執行,請依需要排訂每日?每週?或是隔週?等…
為什麼要拷貝內容到另外的資料夾而不直接指定路徑做壓縮檔呢?其實考量點很簡單,怕在壓縮期間發生檔案使用中或是檔案移除等問題,所以先複製一份,雖然會增加I/O的使用,不過這是相對比較好的方式。
說明:
set yymmdd_hhmmss=d:\backup\%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2% set path=%path%;C:\Program Files\7-Zip md %yymmdd_hhmmss%\mysql xcopy /E /C /H /Y C:\MySQL\data %yymmdd_hhmmss%\mysql > %yymmdd_hhmmss%\mysql.txt 7z a -scsUTF-8 -mx=9 %yymmdd_hhmmss%.7z %yymmdd_hhmmss%\* del /S /Q %yymmdd_hhmmss% rd /S /Q %yymmdd_hhmmss%
日期目錄的使用請參照:
dos指令-建立日期目錄
md 建立目錄
xcopy 複製資料到剛才建立的目錄裡,其中/E /C /H /Y 則是有任何錯誤繼續執行、不需請求回覆要求、包含子目錄及其內容等。
7z a 7-Zip的壓縮指令-scsUTF-8使用UTF-8編碼,-mx=9,使用最高壓縮比,當然時間會拉長。
del 刪除資料,但不包今資料夾,/S /Q包含子目錄的資料不管是否唯讀都刪除不需請求回覆要求。
rd 同上,只是它是刪除目錄
請依照自己的需求設定,然後存成*.bat檔就可以了(或*.cmd)
好了後就可以建立自己的排程了,在控制台可以找到"系統排程",可以依其精靈一步一步來建立,時間到後就會自動執行啦。
ps.
echo off 可以關閉dos視窗指令輸出的結果
> 可以把dos指令輸出console的內容另存到另一個檔案
謝你
我學到很多知能
對我幫助很大