我的DB備份策略:
我以循環的方式做備份,以一星期為一個週期.
也就是說,我的備份資料夾裡面會有星期一~星期 日的備份檔
而等下次同一天時,則會把七天前備份的覆蓋掉.
例如今天是10/24星期日,備份檔案是 db-bak.Sunday.sql
明天則會自動備份DB,檔名取為db-bak.Monday.sql
於此類推,直到10/31時,會產生db-bak.Sunday.sql,把之前的10/24的備份檔給覆蓋掉.
所以時光回朔其為一週.
這個想法算是對於空間考量而言是蠻不錯的,不只備份DB,以備份HD的角度來說也可以.
而要在Linux/UNIX下做這樣的動作很簡單,只要寫個script以及配合crontab即可.
不過在Win32下就比較麻煩了.
如此,我寫了一個小程式,配合MySQL的mysqldump以及WIn上面的排程,
可以達道上述的效果,也就是回應了樓主的問題"如何將備份檔主檔名設為系統日期加時間"
[Usage]:
auto_mysql_dump.exe <path to mysqldump> <target dir> <DB name> <user> <password>
[Example]:
auto_mysql_dump e:\mysql\bin\mysqldump.exe e:\backup phpbb2 root 123
把上述指令加到工作排程中,每天自動執行一次,我都是設在每天凌晨6:00,那時候站上人最少.
原始碼如下(以BCB 6撰寫):
代碼: 選擇全部
//---------------------------------------------------------------------------
#include <vcl.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <dos.h>
#include <stdlib.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[]) {
if ( argc != 6 ) {
puts("[Usage]:");
puts("auto_mysql_dump.exe <path to mysqldump> <target dir> <DB name> <user> <password>");
//puts("");
puts("[Example]:");
puts("auto_mysql_dump e:\\\mysql\\\bin\\\mysqldump.exe e:\\\backup phpbb2 root 123");
//getch();
return 1;
}
struct tm *time_now;
time_t secs_now;
char str[16], cmd[256];
tzset();
time(&secs_now);
time_now = localtime(&secs_now);
strftime(str, 80,"%A",time_now);
sprintf(cmd,"%s %s -u%s -p%s --opt > %s\\\%s-%s.sql
",argv[1],argv[3],argv[4],argv[5],argv[2],argv[3],str);
printf("[Execute]: %s",cmd);
if ( system(cmd) ) {
printf("Process is failed.");
return 1;
} else
printf("Process is completed.");
//getch();
return 0;
}
//---------------------------------------------------------------------------
[Downlaod]
http://home.kimo.com.tw/cs87668/auto_mysql_dump.exe (以滑鼠按右鍵,另存目標方式下載)
http://home.pchome.com.tw/online/marty2 ... l_dump.exe
[注意事項]
我的程式對於程式參數並沒有做嚴謹的check,所以使用上請注意參數位置以及值是否正確.
當然程式還有改進的空間,不過我人在當兵,等等就收假了. 之後的問題等放假後再討論了.
[免責條款]
1.本文(程式)雖已力求正確,然而無法保證所有操作或設定都可以順利的在您的系統上面進行,您必須依照自己的環境做適當的調整。倘若您依照本文件的說明而使你的系統發生任何問題或資料的損失,作者都將不負任何責任。
2. 此程式以及文章可以任意散佈,不過必須完整且無修改的情況下散布. 當然這包含了免責條款