Windows環境下使用Dos指令製作備援計畫

有自己的Server,平常沒事時主機安祥的運作著,不過不怕一萬只怕萬一,很多時候不小心改了程式、昇級Server、程式,主機當掉等,一個不小心出了問題,可是要人命的,主機的回覆就算了,資料的不見可是十分要命,重要的照片、文章不見了,我想這是大家所不想見的,在大多數的企業裡,系統資料的備援都有自己的一套計畫,也是年度稽核的重點。

不過像我這種用自己的家機當Server的人,沒有企業的大成本,SCSI容錯、磁帶…等等等,要怎麼做呢?這裡提供一個在Windows下環境可用的方式,不過需要配合壓縮程式7-Zip或其它壓縮軟體及Dos指令。

想法:

  1. 建立一個日期目錄,以資區別不同日期的備份。
  2. 拷貝資料到此日期目錄下所建立的子目錄,以區別不同內容。
  3. 利用7-Zip壓縮檔案,減少空間的使用。
  4. 刪除日期目錄下所有資料及資料夾。
  5. 建立排程執行,請依需要排訂每日?每週?或是隔週?等…

為什麼要拷貝內容到另外的資料夾而不直接指定路徑做壓縮檔呢?其實考量點很簡單,怕在壓縮期間發生檔案使用中或是檔案移除等問題,所以先複製一份,雖然會增加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的內容另存到另一個檔案

One thought to “Windows環境下使用Dos指令製作備援計畫”

發表迴響