亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

c實現linux下的數據庫備份

2020-05-23 14:18:04
字體:
來源:轉載
供稿:網友

本文給大家簡單介紹下c實現linux下的數據庫備份的方法和具體的源碼,十分的實用,有需要的小伙伴可以參考下。

Linux下c實現的數據庫備份,只要修改數據庫列表文件的信息即可。

db_list.txt把后綴去掉即可,一個數據庫一行。

1. main.c

 

 
  1. #include<sys/types.h> 
  2. #include<sys/wait.h> 
  3. #include<ctype.h> 
  4. #include<unistd.h> 
  5. #include<string.h> 
  6. #include<stdlib.h> 
  7. #include<stdio.h> 
  8.  
  9. //待備份的數據表文件(一個數據庫一行) 
  10. #define DB_FILE "./db_list" 
  11. //最多可以備份的數據庫數量 
  12. #define NUM 20 
  13. //一個數據庫名字的最長字符數 
  14. #define LEN 128 
  15. //保存從DB_FILE中讀取到的數據庫 
  16. char *db_list[NUM]; 
  17. //從DB_FILE文件中讀取到的數據庫數量 
  18. int read_num; 
  19. //請求內存函數 
  20. void malloc_dblist(); 
  21. //釋放內存函數 
  22. void free_dblist(); 
  23. //讀取數據庫文件 
  24. void readDbFile(); 
  25.  
  26. int main(int argc, char *argv[]) { 
  27. pid_t pid; 
  28. int i; 
  29. char buf[LEN]; 
  30.  
  31. //從文件讀取數據庫信息 
  32. readDbFile(); 
  33.  
  34. pid = fork(); 
  35.  
  36. if (pid < 0) { 
  37. fprintf(stderr, "fork error/n"); 
  38. exit(1); 
  39.  
  40. switch (pid) { 
  41. case -1: 
  42. fprintf(stderr, "fork failed/n"); 
  43. exit(1); 
  44. case 0: 
  45. //子進程進行數據庫的備份 
  46. for (i = 0; i < read_num; i++) { 
  47. memset(buf, '/0', LEN); 
  48. sprintf(buf, "%s%s%s%s%s""mysqldump -uroot ", db_list[i], " > ", db_list[i], ".sql"); 
  49. system(buf); 
  50. printf("%d,%s/n", i, buf); 
  51. break
  52. //等待子進程的結束 
  53. if (pid > 0) { 
  54. int stat_val; 
  55. pid_t child_pid; 
  56.  
  57. child_pid = wait(&stat_val); 
  58.  
  59. if (!WIFEXITED(stat_val)) { 
  60. fprintf(stdout, "Child terminated abnormaly/n"); 
  61. exit(1); 
  62.  
  63.  
  64. free_dblist(); 
  65.  
  66. exit(0); 
  67.  
  68.  
  69. void malloc_dblist() 
  70. int i = 0; 
  71. //malloc for db_list 
  72. for (i = 0; i < NUM; i++) { 
  73. db_list[i] = malloc(LEN); 
  74. memset(db_list[i], '/0', LEN); 
  75. void free_dblist() 
  76. int i; 
  77. //free db_list's memory 
  78. for (i = 0; i < NUM; i++) { 
  79. free(db_list[i]); 
  80.  
  81. void readDbFile() 
  82. FILE *fp; 
  83.  
  84. fp = fopen(DB_FILE, "r"); 
  85. if (!fp) { 
  86. fprintf(stderr, "%s not found/n", DB_FILE); 
  87. else { 
  88. malloc_dblist(); 
  89.  
  90. read_num = 0; 
  91. while (fscanf(fp, "%127[^/r/n]/n", db_list[read_num]) == 1) { 
  92. puts(db_list[read_num]); 
  93. read_num++; 
  94.  
  95. fclose(fp);  
  96.  

2. db_list.txt

 

 
  1. admin 
  2. book 

3.

 

 
  1. #include<sys/types.h> 
  2. #include<sys/wait.h> 
  3. #include<ctype.h> 
  4. #include<unistd.h> 
  5. #include<string.h> 
  6. #include<stdlib.h> 
  7. #include<stdio.h> 
  8.  
  9. //待備份的數據表文件(一個數據庫一行) 
  10. #define DB_FILE "./db_list" 
  11. //最多可以備份的數據庫數量 
  12. #define NUM 20 
  13. //一個數據庫名字的最長字符數 
  14. #define LEN 128 
  15. //保存從DB_FILE中讀取到的數據庫 
  16. char *db_list[NUM]; 
  17. //從DB_FILE文件中讀取到的數據庫數量 
  18. int read_num; 
  19. //請求內存函數 
  20. void malloc_dblist(); 
  21. //釋放內存函數 
  22. void free_dblist(); 
  23. //讀取數據庫文件 
  24. void readDbFile(); 
  25.  
  26. int main(int argc, char *argv[]) { 
  27. pid_t pid; 
  28. int i; 
  29. char buf[LEN]; 
  30.  
  31. //從文件讀取數據庫信息 
  32. readDbFile(); 
  33.  
  34. pid = fork(); 
  35.  
  36. if (pid < 0) { 
  37. fprintf(stderr, "fork error/n"); 
  38. exit(1); 
  39.  
  40. switch (pid) { 
  41. case -1: 
  42. fprintf(stderr, "fork failed/n"); 
  43. exit(1); 
  44. case 0: 
  45. //子進程進行數據庫的備份 
  46. for (i = 0; i < read_num; i++) { 
  47. memset(buf, '/0', LEN); 
  48. sprintf(buf, "%s%s%s%s%s""mysqldump -uroot ", db_list[i], " > ", db_list[i], ".sql"); 
  49. system(buf); 
  50. printf("%d,%s/n", i, buf); 
  51. break
  52. //等待子進程的結束 
  53. if (pid > 0) { 
  54. int stat_val; 
  55. pid_t child_pid; 
  56.  
  57. child_pid = wait(&stat_val); 
  58.  
  59. if (!WIFEXITED(stat_val)) { 
  60. fprintf(stdout, "Child terminated abnormaly/n"); 
  61. exit(1); 
  62.  
  63.  
  64. free_dblist(); 
  65.  
  66. exit(0); 
  67.  
  68.  
  69. void malloc_dblist() 
  70. int i = 0; 
  71. //malloc for db_list 
  72. for (i = 0; i < NUM; i++) { 
  73. db_list[i] = malloc(LEN); 
  74. memset(db_list[i], '/0', LEN); 
  75. void free_dblist() 
  76. int i; 
  77. //free db_list's memory 
  78. for (i = 0; i < NUM; i++) { 
  79. free(db_list[i]); 
  80.  
  81. void readDbFile() 
  82. FILE *fp; 
  83.  
  84. fp = fopen(DB_FILE, "r"); 
  85. if (!fp) { 
  86. fprintf(stderr, "%s not found/n", DB_FILE); 
  87. else { 
  88. malloc_dblist(); 
  89.  
  90. read_num = 0; 
  91. while (fscanf(fp, "%127[^/r/n]/n", db_list[read_num]) == 1) { 
  92. puts(db_list[read_num]); 
  93. read_num++; 
  94.  
  95. fclose(fp);  
  96.  

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91热精品视频| 精品成人69xx.xyz| 久久久久久久久国产| 91精品久久久久久久久| 欧美日韩亚洲一区二区三区| 久久久久久国产精品久久| 欧美精品久久久久| 成人a级免费视频| 91啪国产在线| 欧美激情视频三区| 日韩日本欧美亚洲| 欧美一级黄色网| 欧美性猛交xxx| 久久这里有精品视频| 欧美中文字幕精品| 26uuu另类亚洲欧美日本一| 国产成人精品亚洲精品| 欧美中文字幕视频在线观看| 亚洲欧洲一区二区三区在线观看| 亚洲人成网在线播放| 日本一区二区在线免费播放| 成人免费网视频| 国模私拍视频一区| 日韩精品在线免费播放| 日韩中文字幕精品视频| 国产日韩中文字幕在线| 一区二区在线视频播放| 欧美日韩一区二区三区在线免费观看| 欧美激情第三页| 97在线精品视频| 亚洲国产欧美一区二区三区久久| 日韩av免费网站| 久久精品国产精品| 亚洲男人天堂网| 国产成人综合亚洲| 91国产精品视频在线| 久久久久国产视频| 97久久精品人搡人人玩| 日韩福利在线播放| 日本国产精品视频| 久久久精品欧美| 成人精品在线观看| 日韩美女激情视频| 国产日韩欧美夫妻视频在线观看| 亚洲一品av免费观看| 国产精品爽爽ⅴa在线观看| xvideos国产精品| 欧美色videos| 欧美做受高潮电影o| 久久九九热免费视频| 成人久久18免费网站图片| 欧美美女15p| 国内精品视频在线| 亚洲免费人成在线视频观看| 亚洲午夜未删减在线观看| 欧美日韩一区二区三区在线免费观看| 色综合天天综合网国产成人网| 国产精品男女猛烈高潮激情| 欧美福利视频在线| 久久久免费精品视频| 91色视频在线观看| 国产成人精品一区二区三区| 第一福利永久视频精品| 亚洲欧美制服综合另类| 亚洲精品视频在线播放| 在线a欧美视频| 国产欧美va欧美va香蕉在线| 午夜精品久久久久久99热软件| 欧美激情中文字幕在线| 国产噜噜噜噜久久久久久久久| 国产经典一区二区| 亚洲a∨日韩av高清在线观看| 日韩精品高清视频| 亚洲精品动漫久久久久| 狠狠色噜噜狠狠狠狠97| 亚洲资源在线看| 久热精品视频在线观看| 亚洲成人在线网| 国产精品一区二区三区在线播放| 欧美日产国产成人免费图片| 97超级碰碰碰久久久| 亚洲精品欧美极品| 中文字幕日韩欧美在线| 视频直播国产精品| 亚洲无限乱码一二三四麻| 亚洲自拍高清视频网站| 久久999免费视频| 精品丝袜一区二区三区| 精品人伦一区二区三区蜜桃免费| 亚洲国产成人精品久久久国产成人一区| 韩国精品久久久999| 青青久久av北条麻妃海外网| 日本道色综合久久影院| 亚洲专区国产精品| 亚洲欧美国产一本综合首页| 综合av色偷偷网| 午夜精品久久久久久久久久久久久| 国产成人精品一区二区在线| 国产一区二区精品丝袜| 国产精品一区二区在线| 国产精品青草久久久久福利99| 色天天综合狠狠色| 国产午夜精品一区理论片飘花| 日韩av免费网站| 精品久久久久久久中文字幕| 亚洲精品美女网站| 91九色国产视频| 97在线精品国自产拍中文| 奇门遁甲1982国语版免费观看高清| 亚洲毛片在线免费观看| 国产精品成人一区二区三区吃奶| 欧美精品做受xxx性少妇| 18性欧美xxxⅹ性满足| 国产欧美一区二区三区久久| 亚洲国产精品999| 精品无人区太爽高潮在线播放| 亚洲欧美日韩一区二区三区在线| 亚洲电影在线看| 日韩欧美在线中文字幕| 丁香五六月婷婷久久激情| 夜色77av精品影院| 欧美国产一区二区三区| 精品久久久久久久久国产字幕| 九九热视频这里只有精品| 亚洲自拍偷拍第一页| 日韩中文第一页| 欧美成人免费全部观看天天性色| 国产日韩精品在线播放| 美女少妇精品视频| 亚洲电影免费观看高清完整版在线| 国产成人精品av在线| 国产精品电影观看| 亚洲欧美国产日韩中文字幕| 精品国产电影一区| 91成品人片a无限观看| 不卡在线观看电视剧完整版| 国内精品久久影院| 精品久久久久久国产| 久久精品中文字幕免费mv| 欧美激情综合色综合啪啪五月| 成人福利视频在线观看| 日本精品久久中文字幕佐佐木| 九九热最新视频//这里只有精品| 91久久久久久久久久久久久| 日韩专区在线观看| 欧美刺激性大交免费视频| 亚洲国产成人精品久久| 国产日韩精品综合网站| 亚洲电影免费观看高清完整版在线观看| 久久亚洲国产精品成人av秋霞| 欧美性xxxx在线播放| 欧美视频中文字幕在线| 欧美日韩福利电影| 精品国产乱码久久久久久婷婷| 国产美女高潮久久白浆| 日本午夜精品理论片a级appf发布| 欧美激情伊人电影| 91精品久久久久久久久久久久久| 日韩国产精品视频| 在线观看日韩欧美| 欧美国产精品人人做人人爱| 国产精品久久精品| 亚洲欧洲在线视频| 欧美日韩国产精品|