You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

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