close

如標題,這篇紀錄用。

將下方資料貼到記事本存為ba檔後,將7-zip資料夾(通常在C:\Program Files\7-Zip) 下的7z檔案與製作的bat放在同一目錄下。
接著使用windows的排程工具讓它跑,就會自動幫我把Mysql data資料夾的檔案壓縮複製到指定位置囉。

當你的sql檔案一輸出動輒5、60MB,有時候連匯出匯入都很困難(還要調整限制上傳,限制秒數),就直接將資料夾備份,也避免因為倒sql檔案引起的編碼問題導致資料全毀無法用的問題。
(前陣子就是使用一般php寫的mysql備份程式,毀了約兩個星期的資料...)

 

bat檔如下

 

@echo off
title MySQL資料夾備份
echo 備份啟始中....

echo 停止MySQL服務...
net stop mysql

REM 取得日期指定變數TODAY
FOR /F "tokens=1-3 delims=/ " %%a IN ("%date%") DO (
SET TODAY=%%a-%%b-%%c
)

echo 7z壓縮中..
REM 使用7z壓縮 D:\xampp\mysql\data\drupal
7z a DpSQL_Files_%TODAY%.7z D:\xampp\mysql\data\drupal

REM 複製到 D:\本地備份 /Y取代

echo 開始備份..
xcopy DpSQL_Files_%TODAY%.7z D:\本地備份 /Y
xcopy DpSQL_Files_%TODAY%.7z Z:\ /Y


echo 啟動MySQL服務...
net start mysql

 

------以上------

大概提一下:
REM類似註解,所以到時候可以自己增減。
FOR那行就是取得系統日期,並將 / 抽掉,取得前面1-3個資料並分別寫入%%a、%%b、%%c,若要連星期都進去,就是1-4,然後就會有多一個變數%%d
最後設定today變數,並將其組合為壓縮後的檔案後綴。  此篇生成的7z檔案名稱為:DpSQL_Files_2011-11-02.7z

至於xconpy,/y就是取代並覆蓋。然後決定要複製到哪裡。
我個人是使用外連的硬碟,備份在兩個位置,一個在D槽,一個在Z槽
外連硬碟就用 工具 / 連線網路磁碟機,最後指定磁碟代號就可以了,這樣彈性很大,只要要換另一個硬碟,就轉換位置即可。

若資料不怕外流,還可以組合技,使用時下流行的雲端備份,同步那個資料夾,就更加安全了。
當然這種思路又可以延伸兩台異地備援,客倌們自個兒想想規劃啦!

另外補充紀錄連線網路硬碟重開機消失的處理方式:

將下面存為bat檔後放到啟動即可

net use z: /delete
net use z: \\webdb_url\backup /user:userid password

 

 

101.9.5加入恢復

 @echo off
title 網站同步
echo 同步中....

REM 取得日期指定變數TODAY
FOR /F "tokens=1-3 delims=/ " %%a IN ("%date%") DO (
SET TODAY=%%a-%%b-%%c
)

REM 複製回本機
xcopy z:\網站\Drupal_%TODAY%.7z D:\本地備份\網站\Drupal_%TODAY%.7z /Y
xcopy z:\資料庫\DpSQL_Files_%TODAY%.7z D:\本地備份\資料庫\DpSQL_Files_%TODAY%.7z /Y

echo 同步網頁檔案
echo 停止Apache服務...
net stop apache2.4
7z x D:\本地備份\網站\Drupal_%TODAY%.7z -od:\www -y


echo 同步資料庫
echo 停止MySQL服務...
net stop mysql
7z x D:\本地備份\資料庫\DpSQL_Files_%TODAY%.7z -od:\db -y

echo 同步於 於 %date% %time% >> logs.txt

echo 恢復服務..
net start apache2.4
net start mysql

 

 

C:\Program Files\7-Zip
arrow
arrow

    ezcshi 發表在 痞客邦 留言(0) 人氣()