Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

JOEbackup-mysql-Auto.sh.SRC 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347
  1. #!/bin/bash
  2. USER=`whoami`
  3. PWFile="/home/$USER/PW/mysql_JOE.info"
  4. DATABASEName="`cat $PWFile | grep Database_Name: | awk '{print $NF}'`"
  5. DATABASEUser="`cat $PWFile | grep ID: | awk '{print $NF}'`"
  6. DATABASEPassword="`cat $PWFile | grep Password: | awk '{print $NF}'`"
  7. TS=`date +"%Y%m%d-%H%M%S"`
  8. LOG_Folder="/ED/JOE/Script_JOE/_LOG"
  9. LOG1=/ED/JOE/Script_JOE/_LOG/JOEbackup-mysql-Auto.log
  10. JOE_Bak_Folder="/ED/JOE/Backup_file"
  11. JOE_Bak_File_Name=$JOE_Bak_Folder/backup-mysql-JOE.gz
  12. JOE_Bak_File_Name_TS=$JOE_Bak_Folder/backup-mysql-JOE-$TS.gz
  13. BAK_Disk_A=/dev/sdb
  14. BAK_Disk_A_Mount_Point="/BAK_Disk_A"
  15. BAK_Disk_A_Hostname_Folder="$BAK_Disk_A_Mount_Point/`hostnamectl | grep "Static hostname" | awk '{print $NF}'`"
  16. BAK_Disk_A_JOE_BAK_Folder="$BAK_Disk_A_Hostname_Folder/JOE/Backup_file"
  17. BAK_Disk_A_JOE_Bak_File_Name_TS="$BAK_Disk_A_JOE_BAK_Folder/backup-mysql-JOE-$TS.gz"
  18. BAK_Disk_B=/dev/sda
  19. BAK_Disk_B_Mount_Point="/BAK_Disk_B"
  20. BAK_Disk_B_Hostname_Folder="$BAK_Disk_B_Mount_Point/`hostnamectl | grep "Static hostname" | awk '{print $NF}'`"
  21. BAK_Disk_B_JOE_BAK_Folder="$BAK_Disk_B_Hostname_Folder/JOE/Backup_file"
  22. BAK_Disk_B_JOE_Bak_File_Name_TS="$BAK_Disk_B_JOE_BAK_Folder/backup-mysql-JOE-$TS.gz"
  23. ##### FUNC
  24. CHK_PWFile (){
  25. echo -e "\033[32mCheck the mysql password info file exist: \033[0m"
  26. ls $PWFile > /dev/null 2>&1
  27. if [[ $? != 0 ]]; then
  28. echo -e " >> \033[31mFail. $PWFile didn't exist. Please create one. Exit\033[0m" | tee -a $LOG1
  29. echo
  30. echo -e "$PWFile Content example: "
  31. echo -e "Database_Name: db_joe_"
  32. echo -e "ID: ed"
  33. echo -e "Password: +039*******"
  34. echo
  35. exit
  36. else
  37. echo -e " >> \033[34mPass. $PWFile exist.\033[0m" | tee -a $LOG1
  38. echo -e -n " Check context information accuracy (DATABASEName)\t\t: "
  39. if [[ $DATABASEName == "" ]]; then
  40. echo -e "\033[31mFail. There is no correct info of DATABASEName in $PWFile. Exit\033[0m"
  41. echo
  42. exit
  43. else
  44. echo -e "\033[34mPass. \033[0m"
  45. fi
  46. echo -e -n " Check context information accuracy (DATABASEUser)\t\t: "
  47. if [[ $DATABASEUser == "" ]]; then
  48. echo -e "\033[31mFail. There is no correct info of DATABASEUser in $PWFile. Exit\033[0m"
  49. echo
  50. exit
  51. else
  52. echo -e "\033[34mPass. \033[0m"
  53. fi
  54. echo -e -n " Check context information accuracy (DATABASEPassword)\t: "
  55. if [[ $DATABASEPassword == "" ]]; then
  56. echo -e "\033[31mFail. There is no correct info of DATABASEPassword in $PWFile. Exit\033[0m"
  57. echo
  58. exit
  59. else
  60. echo -e "\033[34mPass. \033[0m"
  61. fi
  62. fi
  63. }
  64. CHK_LOG_Folder (){
  65. echo -e "\033[32mCheck the auto backup log saving folder exist: \033[35m($LOG_Folder) \033[0m"
  66. ls $LOG_Folder > /dev/null 2>&1
  67. if [[ $? != 0 ]]; then
  68. echo -e " >> \033[33mWarning! There is no folder \"$LOG_Folder\". Next will create a new one.\033[0m" | tee -a $LOG1
  69. sudo mkdir -p $LOG_Folder
  70. sudo chown $USER:$USER $LOG_Folder -R
  71. if [[ $? != 0 ]]; then
  72. echo -e " >> \033[41;37mCreate the folder failed. Exit\033[0m"
  73. echo
  74. exit
  75. fi
  76. else
  77. echo -e " >> \033[34mPass. There is a folder \"$LOG_Folder\". \033[0m" | tee -a $LOG1
  78. fi
  79. }
  80. CHK_JOE_Bak_Folder (){
  81. echo -e "\033[32mCheck the local original backup folder exist: \033[35m($JOE_Bak_Folder) \033[0m"
  82. ls $JOE_Bak_Folder > /dev/null 2>&1
  83. if [[ $? == 0 ]]; then
  84. echo -e " >> \033[34mPass. Backup file saving folder: $JOE_Bak_Folder exist, go next.\033[0m" | tee -a $LOG1
  85. else
  86. echo -e " >> \033[33mWarning! There is no Backup file saving folder: $JOE_Bak_Folder, next will create a new one automatically.\033[0m" | tee -a $LOG1
  87. sudo mkdir -p $JOE_Bak_Folder
  88. sudo chown $USER:$USER $JOE_Bak_Folder -R
  89. if [[ $? != 0 ]]; then
  90. echo -e " >> \033[41;37mCreate the folder failed. Exit\033[0m"
  91. echo
  92. exit
  93. fi
  94. fi
  95. }
  96. Mysql_Dump (){
  97. echo -e "\033[32mStarting mysqldump...\033[0m"
  98. echo -e "\033[45;37m==========================================================================================\033[0m" | tee -a $LOG1
  99. echo -e "\033[41;37m Important! Please check below messages for making sure mysqldump be performed exactly. \033[0m" | tee -a $LOG1
  100. /opt/lampp/bin/mysqldump -u $DATABASEUser -p$DATABASEPassword $DATABASEName | gzip > $JOE_Bak_File_Name
  101. # mysqldump -u $DATABASEUser -p$DATABASEPassword $DATABASEName | gzip > $JOE_Bak_File_Name
  102. if [[ $? == 0 ]]; then
  103. echo -e " >> \033[34mPass. mysql dump w/ gzip OK. \033[0m" | tee -a $LOG1
  104. else
  105. echo -e " >> \033[41;37m Fail. mysql dump w/ gzip failed. Exit \033[0m" | tee -a $LOG1
  106. echo -e " >> \033[31m If you got error message, please try to perform below command for debugging\033[0m" | tee -a $LOG1
  107. echo -e " >> \033[31m # sudo /opt/lampp/bin/mysqldump -u ed -p db_ed8_ | gzip > $JOE_Bak_File_Name \033[0m" | tee -a $LOG1
  108. echo
  109. exit
  110. fi
  111. echo -e "\033[45;37m==========================================================================================\033[0m" | tee -a $LOG1
  112. echo -e " Debug message: "
  113. echo -e " \033[32m* mysqldump: Got error: 1045: Access denied for user 'ed'@'localhost' (using password: YES) when trying to connect \033[0m "
  114. echo -e " >> Please check the content of $PWFile"
  115. echo -e "\033[45;37m==========================================================================================\033[0m"
  116. echo -e "\033[32mStarting make a copy with timastamp filename...\033[0m" | tee -a $LOG1
  117. cp $JOE_Bak_File_Name $JOE_Bak_File_Name_TS
  118. if [[ $? == 0 ]]; then
  119. echo -e " >> \033[34mPass. Make a copy OK - \033[35m($JOE_Bak_File_Name_TS) \033[0m" | tee -a $LOG1
  120. else
  121. echo -e " >> \033[41;37mFail. Make a copy failed. Exit\033[0m - \033[35m($JOE_Bak_File_Name_TS) \033[0m" | tee -a $LOG1
  122. echo
  123. exit
  124. fi
  125. }
  126. CHK_BAK_Disk_A (){
  127. echo -e "\033[32mCheck the detection of Backup_Disk_A: \033[35m(lsscsi $BAK_Disk_A) \033[0m"
  128. lsscsi | grep $BAK_Disk_A > /dev/null 2>&1
  129. if [[ $? == 0 ]]; then
  130. echo -e " >> \033[34mPass. The BAK_Disk_A \"$BAK_Disk_A\" be detected by lsscsi. \033[0m" | tee -a $LOG1
  131. else
  132. echo -e " >> \033[41;37mFail. The BAK_Disk_A \"$BAK_Disk_A\" not be detected by lsscsi. Exit \033[0m" | tee -a $LOG1
  133. echo
  134. exit
  135. fi
  136. }
  137. CHK_BAK_Disk_B (){
  138. echo -e "\033[32mCheck the detection of Backup_Disk_A: \033[35m(lsscsi $BAK_Disk_B) \033[0m"
  139. lsscsi | grep $BAK_Disk_B > /dev/null 2>&1
  140. if [[ $? == 0 ]]; then
  141. echo -e " >> \033[34mPass. The BAK_Disk_B \"$BAK_Disk_B\" be detected by lsscsi. \033[0m" | tee -a $LOG1
  142. else
  143. echo -e " >> \033[41;37mFail. The BAK_Disk_B \"$BAK_Disk_B\" not be detected by lsscsi. Exit \033[0m" | tee -a $LOG1
  144. echo
  145. exit
  146. fi
  147. }
  148. CHK_BAK_Disk_A_Mount_Point (){
  149. echo -e "\033[32mCheck the BAK_Disk_A mount point folder exist: \033[35m($BAK_Disk_A_Mount_Point) \033[0m"
  150. ls $BAK_Disk_A_Mount_Point > /dev/null 2>&1
  151. if [[ $? == 0 ]]; then
  152. echo -e " >> \033[34mPass. The BAK_Disk_A mount point exist \"$BAK_Disk_A_Mount_Point\"\033[0m" | tee -a $LOG1
  153. else
  154. echo -e " >> \033[33mWarning! The BAK_Disk_A mount point doesn't exist \"$BAK_Disk_A_Mount_Point\"\033[0m, auto create a new one. " | tee -a $LOG1
  155. sudo mkdir -p $BAK_Disk_A_Mount_Point
  156. sudo chown $USER:$USER $BAK_Disk_A_Mount_Point -R
  157. if [[ $? != 0 ]]; then
  158. echo -e " >> \033[41;37mCreate the folder failed. Exit\033[0m"
  159. echo
  160. exit
  161. fi
  162. fi
  163. }
  164. CHK_BAK_Disk_B_Mount_Point (){
  165. echo -e "\033[32mCheck the BAK_Disk_A mount point folder exist: \033[35m($BAK_Disk_B_Mount_Point) \033[0m"
  166. ls $BAK_Disk_B_Mount_Point > /dev/null 2>&1
  167. if [[ $? == 0 ]]; then
  168. echo -e " >> \033[34mPass. The BAK_Disk_B mount point exist \"$BAK_Disk_B_Mount_Point\"\033[0m" | tee -a $LOG1
  169. else
  170. echo -e " >> \033[33mWarning! The BAK_Disk_B mount point doesn't exist \"$BAK_Disk_B_Mount_Point\"\033[0m, auto create a new one. " | tee -a $LOG1
  171. sudo mkdir -p $BAK_Disk_B_Mount_Point
  172. sudo chown $USER:$USER $BAK_Disk_B_Mount_Point -R
  173. if [[ $? != 0 ]]; then
  174. echo -e " >> \033[41;37mCreate the folder failed. Exit\033[0m"
  175. echo
  176. exit
  177. fi
  178. fi
  179. }
  180. CHK_BAK_Disk_A_Mount_Status (){
  181. echo -e "\033[32mCheck the BAK_Disk_A mount status: \033[0m"
  182. if [[ `df -h | grep $BAK_Disk_A | awk '{print $NF}'` != $BAK_Disk_A_Mount_Point ]]; then
  183. echo -e " >> \033[31mFail. The BAK_Disk_A ($BAK_Disk_A) not be mounted at \"$BAK_Disk_A_Mount_Point\". Exit. \033[0m" | tee -a $LOG1
  184. df -h
  185. echo
  186. exit
  187. else
  188. echo -e " >> \033[34mPass. The BAK_Disk_A ($BAK_Disk_A) be mounted at \"$BAK_Disk_A_Mount_Point\"\033[0m" | tee -a $LOG1
  189. fi
  190. }
  191. CHK_BAK_Disk_B_Mount_Status (){
  192. echo -e "\033[32mCheck the BAK_Disk_B mount status: \033[0m"
  193. if [[ `df -h | grep $BAK_Disk_B | awk '{print $NF}'` != $BAK_Disk_B_Mount_Point ]]; then
  194. echo -e " >> \033[31mFail. The BAK_Disk_B ($BAK_Disk_B) not be mounted at \"$BAK_Disk_B_Mount_Point\". Exit. \033[0m" | tee -a $LOG1
  195. df -h
  196. echo
  197. exit
  198. else
  199. echo -e " >> \033[34mPass. The BAK_Disk_B ($BAK_Disk_B) be mounted at \"$BAK_Disk_B_Mount_Point\"\033[0m" | tee -a $LOG1
  200. fi
  201. }
  202. CHK_BAK_Disk_A_Hostname_Folder (){
  203. echo -e "\033[32mCheck the BAK_Disk_A Hostname folder status: \033[35m($BAK_Disk_A_Hostname_Folder) \033[0m"
  204. ls $BAK_Disk_A_Hostname_Folder > /dev/null 2>&1
  205. if [[ $? == 0 ]]; then
  206. echo -e " >> \033[34mPass. BAK_Disk_A Hostname folder: $BAK_Disk_A_Hostname_Folder exist, go next.\033[0m" | tee -a $LOG1
  207. else
  208. echo -e " >> \033[33mWarning! BAK_Disk_A Hostname folder: $BAK_Disk_A_Hostname_Folder, next will create a new one automatically.\033[0m" | tee -a $LOG1
  209. sduo mkdir -p $BAK_Disk_A_Hostname_Folder
  210. sudo chown $USER:$USER $BAK_Disk_A_Hostname_Folder -R
  211. if [[ $? != 0 ]]; then
  212. echo -e " >> \033[41;37mCreate the folder failed. Exit\033[0m"
  213. echo
  214. exit
  215. fi
  216. fi
  217. }
  218. CHK_BAK_Disk_B_Hostname_Folder (){
  219. echo -e "\033[32mCheck the BAK_Disk_B Hostname folder status: \033[35m($BAK_Disk_B_Hostname_Folder) \033[0m"
  220. ls $BAK_Disk_B_Hostname_Folder > /dev/null 2>&1
  221. if [[ $? == 0 ]]; then
  222. echo -e " >> \033[34mPass. BAK_Disk_B Hostname folder: $BAK_Disk_B_Hostname_Folder exist, go next.\033[0m" | tee -a $LOG1
  223. else
  224. echo -e " >> \033[31mWarning! BAK_Disk_B Hostname folder: $BAK_Disk_B_Hostname_Folder, next will create a new one automatically.\033[0m" | tee -a $LOG1
  225. sudo mkdir -p $BAK_Disk_B_Hostname_Folder
  226. sudo chown $USER:$USER $BAK_Disk_B_Hostname_Folder -R
  227. if [[ $? != 0 ]]; then
  228. echo -e " >> \033[41;37mCreate the folder failed. Exit\033[0m"
  229. echo
  230. exit
  231. fi
  232. fi
  233. }
  234. CHK_BAK_Disk_A_JOE_BAK_Folder (){
  235. echo -e "\033[32mCheck the BAK_Disk_A JOE backup folder status: \033[35m($BAK_Disk_A_JOE_BAK_Folder) \033[0m"
  236. ls $BAK_Disk_A_JOE_BAK_Folder > /dev/null 2>&1
  237. if [[ $? == 0 ]]; then
  238. echo -e " >> \033[34mPass. BAK_Disk's Backup file saving folder: $BAK_Disk_A_JOE_BAK_Folder exist, go next.\033[0m" | tee -a $LOG1
  239. else
  240. echo -e " >> \033[33mWarning! There is no BAK_Disk's Backup file saving folder: $BAK_Disk_A_JOE_BAK_Folder, next will create a new one automatically.\033[0m" | tee -a $LOG1
  241. sudo mkdir -p $BAK_Disk_A_JOE_BAK_Folder
  242. sudo chown $USER:$USER $BAK_Disk_A_JOE_BAK_Folder -R
  243. if [[ $? != 0 ]]; then
  244. echo -e " >> \033[41;37mCreate the folder failed. Exit\033[0m"
  245. echo
  246. exit
  247. fi
  248. fi
  249. }
  250. CHK_BAK_Disk_B_JOE_BAK_Folder (){
  251. echo -e "\033[32mCheck the BAK_Disk_B JOE backup folder status: \033[35m($BAK_Disk_B_JOE_BAK_Folder) \033[0m"
  252. ls $BAK_Disk_B_JOE_BAK_Folder > /dev/null 2>&1
  253. if [[ $? == 0 ]]; then
  254. echo -e " >> \033[34mPass. BAK_Disk's Backup file saving folder: $BAK_Disk_B_JOE_BAK_Folder exist, go next.\033[0m" | tee -a $LOG1
  255. else
  256. echo -e " >> \033[33mWarning! There is no BAK_Disk's Backup file saving folder: $BAK_Disk_B_JOE_BAK_Folder, next will create a new one automatically.\033[0m" | tee -a $LOG1
  257. sudo mkdir -p $BAK_Disk_B_JOE_BAK_Folder
  258. sudo chown $USER:$USER $BAK_Disk_B_JOE_BAK_Folder -R
  259. if [[ $? != 0 ]]; then
  260. echo -e " >> \033[41;37mCreate the folder failed. Exit\033[0m"
  261. echo
  262. exit
  263. fi
  264. fi
  265. }
  266. CP_TO_BAK_Disk_A (){
  267. echo -e "\033[32mCopy the backup files to Backup_Disk_A...\033[0m"
  268. cp $JOE_Bak_File_Name_TS $BAK_Disk_A_JOE_Bak_File_Name_TS
  269. if [[ $? == 0 ]]; then
  270. echo -e " >> \033[34mPass. Make a copy OK - \033[35m($BAK_Disk_A_JOE_Bak_File_Name_TS) \033[0m" | tee -a $LOG1
  271. else
  272. echo -e " >> \033[41;37mFail. Make a copy failed. Exit\033[0m - \033[35m($BAK_Disk_A_JOE_Bak_File_Name_TS) \033[0m" | tee -a $LOG1
  273. echo
  274. echo -e " \033[35mIf you got (Permission denied) message, please perform below command and re-do again. \033[0m"
  275. echo -e " \033[35mIt happened at fist backup, caused from created disk mount point folder ($BAK_Disk_A_Mount_Point) with sudo \033[0m"
  276. echo -e " \033[41;37m# sudo chown $USER:$USER $BAK_Disk_A_Mount_Point \033[0m"
  277. echo
  278. exit
  279. fi
  280. }
  281. CP_TO_BAK_Disk_B (){
  282. echo -e "\033[32mCopy the backup files to Backup_Disk_B...\033[0m"
  283. cp $JOE_Bak_File_Name_TS $BAK_Disk_B_JOE_Bak_File_Name_TS
  284. if [[ $? == 0 ]]; then
  285. echo -e " >> \033[34mPass. Make a copy OK - \033[35m($BAK_Disk_B_JOE_Bak_File_Name_TS) \033[0m" | tee -a $LOG1
  286. else
  287. echo -e " >> \033[41;37mFail. Make a copy failed. Exit\033[0m - \033[35m($BAK_Disk_B_JOE_Bak_File_Name_TS) \033[0m" | tee -a $LOG1
  288. echo
  289. echo -e " \033[35mIf you got (Permission denied) message, please perform below command and re-do again. \033[0m"
  290. echo -e " \033[35mIt happened at fist backup, caused from created disk mount point folder ($BAK_Disk_B_Mount_Point) with sudo \033[0m"
  291. echo -e " \033[41;37m# sudo chown $USER:$USER $BAK_Disk_B_Mount_Point \033[0m"
  292. echo
  293. exit
  294. fi
  295. }
  296. echo -e "===== `date +"%Y/%m/%d %H:%M:%S"` ===== \033[45;37m$0\033[0m =====" | tee -a $LOG1
  297. CHK_PWFile
  298. CHK_LOG_Folder
  299. CHK_JOE_Bak_Folder
  300. Mysql_Dump
  301. #CHK_BAK_Disk_A
  302. #CHK_BAK_Disk_A_Mount_Point
  303. #CHK_BAK_Disk_A_Mount_Status
  304. #CHK_BAK_Disk_A_Hostname_Folder
  305. #CHK_BAK_Disk_A_JOE_BAK_Folder
  306. #CP_TO_BAK_Disk_A
  307. #CHK_BAK_Disk_B
  308. #CHK_BAK_Disk_B_Mount_Point
  309. #CHK_BAK_Disk_B_Mount_Status
  310. #CHK_BAK_Disk_B_Hostname_Folder
  311. #CHK_BAK_Disk_B_JOE_BAK_Folder
  312. #CP_TO_BAK_Disk_B
  313. echo
  314. echo -e "\033[33mIf you want to check the LOG, please perform below command: "
  315. echo -e " # cat $LOG1\033[0m"
  316. echo