Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

01.ENV_check.sh 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390
  1. #!/bin/bash
  2. Script_SRC_BAK=ED8backup-mysql-Auto.sh.SRC
  3. Script_TMP_BAK=ED8backup-mysql-Auto.sh.TMP
  4. Script_REAL_BAK=ED8backup-mysql-Auto.sh
  5. Script_SRC_Restore=ED8restore_from_local-mysql.sh.SRC
  6. Script_TMP_Restore=ED8restore_from_local-mysql.sh.TMP
  7. Script_REAL_Restore=ED8restore_from_local-mysql.sh
  8. Script_SRC_Script_ED8=ED8backup-Script_ED8-Auto.sh.SRC
  9. Script_TMP_Script_ED8=ED8backup-Script_ED8-Auto.sh.TMP
  10. Script_REAL_Script_ED8=ED8backup-Script_ED8-Auto.sh
  11. Script_SRC_Source_Files_ED8=ED8backup-Source_Files-Auto.sh.SRC
  12. Script_TMP_Source_Files_ED8=ED8backup-Source_Files-Auto.sh.TMP
  13. Script_REAL_Source_Files_ED8=ED8backup-Source_Files-Auto.sh
  14. Script_SRC_Remote_Backup=ED8Remote_backup.sh.SRC
  15. Script_TMP_Remote_Backup=ED8Remote_backup.sh.TMP
  16. Script_REAL_Remote_Backup=ED8Remote_backup.sh
  17. USER=`whoami`
  18. PWFile="/home/$USER/PW/mysql_ED8.info"
  19. WORK_Folder="/ED/ED8/Script_ED8"
  20. SOUCE_Folder="/ED/ED8/Source_Files"
  21. Bak_Folder="/ED/ED8/Backup_file"
  22. UTY_1=expect
  23. UTY_2=lsscsi
  24. UTY_3=gunzip
  25. UTY_4=mysql
  26. UTY_5=mysqldump
  27. CHK_QTY=9
  28. cp $Script_SRC_BAK $Script_TMP_BAK
  29. cp $Script_SRC_Restore $Script_TMP_Restore
  30. cp $Script_SRC_Script_ED8 $Script_TMP_Script_ED8
  31. cp $Script_SRC_Source_Files_ED8 $Script_TMP_Source_Files_ED8
  32. cp $Script_SRC_Remote_Backup $Script_TMP_Remote_Backup
  33. echo -e -n "You are \033[44;37m$USER\033[0m. Is it correct? (y|n) "
  34. read yn
  35. if [[ $yn == y ]]; then
  36. echo -e "Change necessary files owner to $USER"
  37. sudo chown $USER:$USER /ED/ED8 -R
  38. elif [[ $yn == n ]]; then
  39. echo "\033[31mYour input is $yn. Exit. "
  40. echo
  41. exit
  42. else
  43. echo -e "\033[41;37mWrong input ($yn). Exit. \033[0m"
  44. echo
  45. exit
  46. fi
  47. echo
  48. echo -e "\033[32mCheck list: \033[0m"
  49. echo -e " \033[33m01. Password file \t\t= $PWFile\033[0m"
  50. echo -e " \033[33m02. Work Folder \t\t= $WORK_Folder\033[0m"
  51. echo -e " \033[33m03. Source files folder \t= $SOUCE_Folder\033[0m"
  52. echo -e " \033[33m04. Local Backup Folder \t= $Bak_Folder\033[0m"
  53. echo -e " \033[33m05. Utility status \t\t= $UTY_1\033[0m"
  54. echo -e " \033[33m06. Utility status \t\t= $UTY_2\033[0m"
  55. echo -e " \033[33m07. Utility status \t\t= $UTY_3\033[0m"
  56. echo -e " \033[33m08. Utility status \t\t= $UTY_4\033[0m"
  57. echo -e " \033[33m09. Utility status \t\t= $UTY_5\033[0m"
  58. echo
  59. echo
  60. i=0
  61. ##### Func
  62. SEL_BAK_Mode (){
  63. echo -e "\033[33mPlease select which backup mode do you want to use? \033[0m"
  64. echo -e " \033[32mA: OS_HDD only \t\t\t(You only have one Storage in host) \033[0m"
  65. echo -e " \033[32mB: OS_HDD + BAK_Disk_A\t\t(You have two Storages installed in host at least) \033[0m"
  66. echo -e " \033[32mC: OS_HDD + BAK_Disk_A + BAK_Disk_B\t(You have three Storages installed in host at least) \033[0m"
  67. echo
  68. echo -e -n "\033[33mPlease input: (A|B|C) \033[0m"
  69. read MODE
  70. if [[ $MODE == "A" ]]; then
  71. echo -e " Your input is (A): OS_HDD only"
  72. elif [[ $MODE == "B" ]]; then
  73. echo -e " Your input is (B): OS_HDD + BAK_Disk_A - You have two Storages installed in host at least"
  74. QTY_Storage=`lsscsi | awk '{print $2}' | grep "disk" |wc -l`
  75. if [[ $QTY_Storage < 2 ]]; then
  76. echo -e " \033[41;37m>> You don't have enough Storages ($QTY_Storage) to do this. Exit \033[0m"
  77. echo
  78. lsscsi
  79. echo
  80. exit
  81. fi
  82. lsscsi
  83. echo
  84. echo -e -n "\033[33mAbove are all installed storages, which one is your BAK_Disk_A? (sda|sdb|sdc|sdx) \033[0m"
  85. read STORAGE_A
  86. lsscsi | grep $STORAGE_A > /dev/null 2>&1
  87. if [[ $? != 0 ]]; then
  88. echo -e " \033[41;37mThere is no storage named /dev/$STORAGE_A in list. Exit \033[0m"
  89. echo
  90. exit
  91. fi
  92. sed -i "s/BAK_Disk_A=\/dev\/sdb/BAK_Disk_A=\/dev\/$STORAGE_A/g" $Script_TMP_BAK
  93. sed -i 's/#CHK_BAK_Disk_A/CHK_BAK_Disk_A/g' $Script_TMP
  94. sed -i 's/#CHK_BAK_Disk_A_Mount_Point/CHK_BAK_Disk_A_Mount_Point/g' $Script_TMP_BAK
  95. sed -i 's/#CHK_BAK_Disk_A_Mount_Status/CHK_BAK_Disk_A_Mount_Status/g' $Script_TMP_BAK
  96. sed -i 's/#CHK_BAK_Disk_A_Hostname_Folder/CHK_BAK_Disk_A_Hostname_Folder/g' $Script_TMP_BAK
  97. sed -i 's/#CHK_BAK_Disk_A_ED8_BAK_Folder/CHK_BAK_Disk_A_ED8_BAK_Folder/g' $Script_TMP_BAK
  98. sed -i 's/#CP_TO_BAK_Disk_A/CP_TO_BAK_Disk_A/g' $Script_TMP_BAK
  99. sed -i 's/#CP_TO_BAK_Disk_A/CP_TO_BAK_Disk_A/g' $Script_TMP_Script_ED8
  100. sed -i 's/#CP_TO_BAK_Disk_A/CP_TO_BAK_Disk_A/g' $Script_TMP_Source_Files_ED8
  101. echo -e " >> Set it done. "
  102. echo
  103. elif [[ $MODE == "C" ]]; then
  104. echo -e " Your input is (C): OS_HDD + BAK_Disk_A + BAK_Disk_B - You have three Storages installed in host at least"
  105. QTY_Storage=`lsscsi | awk '{print $2}' | grep "disk" | wc -l`
  106. if [[ $QTY_Storage < 3 ]]; then
  107. echo -e " \033[41;37m>> You don't have enough Storages ($QTY_Storage) to do this. Exit \033[0m"
  108. echo
  109. lsscsi
  110. echo
  111. exit
  112. fi
  113. lsscsi
  114. echo
  115. echo -e -n "\033[33mAbove are all installed storages, which one is your BAK_Disk_A? (sda|sdb|sdc|sdx) \033[0m"
  116. read STORAGE_A
  117. lsscsi | grep $STORAGE_A > /dev/null 2>&1
  118. if [[ $? != 0 ]]; then
  119. echo -e " \033[41;37mThere is no storage named /dev/$STORAGE_A in list. Exit \033[0m"
  120. echo
  121. exit
  122. fi
  123. sed -i "s/BAK_Disk_A=\/dev\/sdb/BAK_Disk_A=\/dev\/$STORAGE_A/g" $Script_TMP_BAK
  124. sed -i 's/#CHK_BAK_Disk_A/CHK_BAK_Disk_A/g' $Script_TMP_BAK
  125. sed -i 's/#CHK_BAK_Disk_A_Mount_Point/CHK_BAK_Disk_A_Mount_Point/g' $Script_TMP_BAK
  126. sed -i 's/#CHK_BAK_Disk_A_Mount_Status/CHK_BAK_Disk_A_Mount_Status/g' $Script_TMP_BAK
  127. sed -i 's/#CHK_BAK_Disk_A_Hostname_Folder/CHK_BAK_Disk_A_Hostname_Folder/g' $Script_TMP_BAK
  128. sed -i 's/#CHK_BAK_Disk_A_ED8_BAK_Folder/CHK_BAK_Disk_A_ED8_BAK_Folder/g' $Script_TMP_BAK
  129. sed -i 's/#CP_TO_BAK_Disk_A/CP_TO_BAK_Disk_A/g' $Script_TMP_BAK
  130. sed -i 's/#CP_TO_BAK_Disk_A/CP_TO_BAK_Disk_A/g' $Script_TMP_Script_ED8
  131. sed -i 's/#CP_TO_BAK_Disk_A/CP_TO_BAK_Disk_A/g' $Script_TMP_Source_Files_ED8
  132. echo -e " >> Set it done. "
  133. echo
  134. echo -e -n "\033[33mWhich one is your BAK_Disk_B? (sda|sdb|sdc|sdx) \033[0m"
  135. read STORAGE_B
  136. if [[ $STORAGE_A == $STORAGE_B ]]; then
  137. echo -e "\033[41;37mYour BAK_Disk_A($STORAGE_A) and BAK_Disk_A($STORAGE_A) are the same. Wrong inout. Exit \033[0m"
  138. echo
  139. exit
  140. fi
  141. lsscsi | grep $STORAGE_B > /dev/null 2>&1
  142. if [[ $? != 0 ]]; then
  143. echo -e " \033[41;37mThere is no storage named /dev/$STORAGE_B in list. Exit \033[0m"
  144. echo
  145. exit
  146. fi
  147. sed -i "s/BAK_Disk_B=\/dev\/sda/BAK_Disk_B=\/dev\/$STORAGE_B/g" $Script_TMP_BAK
  148. sed -i 's/#CHK_BAK_Disk_B/CHK_BAK_Disk_B/g' $Script_TMP_BAK
  149. sed -i 's/#CHK_BAK_Disk_B_Mount_Point/CHK_BAK_Disk_B_Mount_Point/g' $Script_TMP_BAK
  150. sed -i 's/#CHK_BAK_Disk_B_Mount_Status/CHK_BAK_Disk_B_Mount_Status/g' $Script_TMP_BAK
  151. sed -i 's/#CHK_BAK_Disk_B_Hostname_Folder/CHK_BAK_Disk_B_Hostname_Folder/g' $Script_TMP_BAK
  152. sed -i 's/#CHK_BAK_Disk_B_ED8_BAK_Folder/CHK_BAK_Disk_B_ED8_BAK_Folder/g' $Script_TMP_BAK
  153. sed -i 's/#CP_TO_BAK_Disk_B/CP_TO_BAK_Disk_B/g' $Script_TMP_BAK
  154. sed -i 's/#CP_TO_BAK_Disk_B/CP_TO_BAK_Disk_B/g' $Script_TMP_Script_ED8
  155. sed -i 's/#CP_TO_BAK_Disk_B/CP_TO_BAK_Disk_B/g' $Script_TMP_Source_Files_ED8
  156. echo -e " >> Set it done. "
  157. echo
  158. else
  159. echo -e " \033[41;37mWrong input ($MODE). Exit \033[0m"
  160. echo
  161. exit
  162. fi
  163. }
  164. CHK_PWFile (){
  165. ls $PWFile > /dev/null 2>&1
  166. if [[ $? != 0 ]]; then
  167. echo -e " \033[31m01. Fail. $PWFile doesn't exist. Please create one. Exit \033[0m"
  168. echo
  169. echo -e "$PWFile Content example: "
  170. echo -e "Database_Name: db_ed8_"
  171. echo -e "ID: ed"
  172. echo -e "Password: edat****"
  173. echo
  174. exit
  175. else
  176. echo -e " \033[34m01. Pass. $PWFile exist. \033[0m"
  177. DATABASEName="`cat $PWFile | grep Database_Name: | awk '{print $NF}'`"
  178. DATABASEUser="`cat $PWFile | grep ID: | awk '{print $NF}'`"
  179. DATABASEPassword="`cat $PWFile | grep Password: | awk '{print $NF}'`"
  180. echo -e -n " >> 01-1. Check context information accuracy (DATABASEName)\t\t: "
  181. if [[ $DATABASEName == "" ]]; then
  182. echo -e "\033[31mFail. There is no correct info of DATABASEName in $PWFile. Exit\033[0m"
  183. echo
  184. exit
  185. else
  186. echo -e "\033[34mGood \033[0m"
  187. fi
  188. echo -e -n " >> 01-2. Check context information accuracy (DATABASEUser)\t\t: "
  189. if [[ $DATABASEUser == "" ]]; then
  190. echo -e "\033[31mFail. There is no correct info of DATABASEUser in $PWFile. Exit\033[0m"
  191. echo
  192. exit
  193. else
  194. echo -e "\033[34mGood \033[0m"
  195. fi
  196. echo -e -n " >> 01-3. Check context information accuracy (DATABASEPassword)\t: "
  197. if [[ $DATABASEPassword == "" ]]; then
  198. echo -e "\033[31mFail. There is no correct info of DATABASEPassword in $PWFile. Exit\033[0m"
  199. echo
  200. exit
  201. else
  202. echo -e "\033[34mGood \033[0m"
  203. fi
  204. i=$((i+1))
  205. fi
  206. }
  207. CHK_Work_F (){
  208. if [[ `pwd` != $WORK_Folder ]]; then
  209. echo -e " \033[31m02. Fail. It's not work folder \"$WORK_Folder\". \033[0m"
  210. else
  211. echo -e " \033[34m02. Pass. Current Work Folder is $WORK_Folder \033[0m"
  212. i=$((i+1))
  213. fi
  214. }
  215. CHK_SRC_F (){
  216. ls $SOUCE_Folder > /dev/null 2>&1
  217. if [[ $? != 0 ]]; then
  218. echo -e " \033[31m03. Fail. $SOUCE_Folder doesn't exist. \033[0m"
  219. else
  220. echo -e " \033[34m03. Pass. $SOUCE_Folder folder exist. \033[0m"
  221. i=$((i+1))
  222. fi
  223. }
  224. CHK_BAK_F (){
  225. ls $Bak_Folder > /dev/null 2>&1
  226. if [[ $? != 0 ]]; then
  227. echo -e " \033[31m04. Fail. $Bak_Folder doesn't exist. Create a new one. \033[0m"
  228. sudo mkdir -p $Bak_Folder
  229. chown $USER:$USER $Bak_Folder -R
  230. else
  231. echo -e " \033[34m04. Pass. $Bak_Folder folder exist. \033[0m"
  232. i=$((i+1))
  233. fi
  234. }
  235. CHK_UTY_1 (){
  236. man $UTY_1 > /dev/null 2>&1
  237. if [[ $? == 0 ]]; then
  238. echo -e " \033[34m05. Pass. The utility ($UTY_1) was installed. \033[0m"
  239. i=$((i+1))
  240. else
  241. echo -e " \033[31m05. Fail. The utility ($UTY_1) not be installed. \033[0m"
  242. fi
  243. }
  244. CHK_UTY_2 (){
  245. man $UTY_2 > /dev/null 2>&1
  246. if [[ $? == 0 ]]; then
  247. echo -e " \033[34m06. Pass. The utility ($UTY_2) was installed. \033[0m"
  248. i=$((i+1))
  249. else
  250. echo -e " \033[31m06. Fail. The utility ($UTY_2) not be installed. \033[0m"
  251. fi
  252. }
  253. CHK_UTY_3 (){
  254. man $UTY_3 > /dev/null 2>&1
  255. if [[ $? == 0 ]]; then
  256. echo -e " \033[34m07. Pass. The utility ($UTY_3) was installed. \033[0m"
  257. i=$((i+1))
  258. else
  259. echo -e " \033[31mm07. Fail. The utility ($UTY_3) not be installed. \033[0m"
  260. fi
  261. }
  262. CHK_UTY_4 (){
  263. man $UTY_4 > /dev/null 2>&1
  264. if [[ $? == 0 ]]; then
  265. echo -e " \033[34m08. Pass. The utility ($UTY_4) was installed. Setting ED8restore_from_local-mysql.sh use it. \033[0m"
  266. sed -i 's/\/opt\/lampp\/bin\/mysql -u/mysql -u/g' $Script_TMP_Restore
  267. i=$((i+1))
  268. else
  269. echo -e " \033[33m08. Warning! The utility ($UTY_4) not be installed by apt, but service might be provided by xampp. \033[0m"
  270. ls /opt/lampp/bin/mysql > /dev/null 2>&1
  271. if [[ $? == 0 ]]; then
  272. echo -e " \033[35m>> Good. your mysql service is provided by xampp \033[0m"
  273. i=$((i+1))
  274. else
  275. echo -e " \033[31m>> Fail. mysql service not be provided by xampp either. \033[0m"
  276. fi
  277. fi
  278. }
  279. CHK_UTY_5 (){
  280. man $UTY_5 > /dev/null 2>&1
  281. if [[ $? == 0 ]]; then
  282. echo -e " \033[34m09. Pass. The utility ($UTY_5) was installed. Setting ED8backup-mysql-Auto.sh use it. \033[0m"
  283. sed -i 's/\/opt\/lampp\/bin\/mysqldump -u/mysqldump -u/g' $Script_TMP_BAK
  284. i=$((i+1))
  285. else
  286. echo -e " \033[33m09. Fail. The utility ($UTY_5) not be installed by apt. \033[0m"
  287. ls /opt/lampp/bin/mysqldump > /dev/null 2>&1
  288. if [[ $? == 0 ]]; then
  289. echo -e " \033[35m>> Good. your mysqldump is provided by xampp. \033[0m"
  290. i=$((i+1))
  291. else
  292. echo -e " \033[31m>> Fail. mysql service not be provided by xampp either. \033[0m"
  293. fi
  294. fi
  295. }
  296. SEL_REMOTE_BAK (){
  297. echo -e "\033[32mThere two remote backup plan you can use.\033[0m (\033[35mPLAN#X\033[0m and \033[36mPLAN#Y\033[0m)"
  298. echo -e -n "\033[33m1. Do you want to enable \033[35mPlan#X\033[0m? (y|n) "
  299. read yn
  300. if [[ $yn == y ]]; then
  301. echo -e " Your input is y. Enabling the PLAN#X..."
  302. sed -i 's/#MKDIR_REMOTE_BAK_Folder_BAK_Disk_X/MKDIR_REMOTE_BAK_Folder_BAK_Disk_X/g' $Script_TMP_Remote_Backup
  303. sed -i 's/#SCP_TO_BAK_Disk_X/SCP_TO_BAK_Disk_X/g' $Script_TMP_Remote_Backup
  304. elif [[ $yn == n ]]; then
  305. echo -e " Your input is n. Disabling the PLAN#Y..."
  306. else
  307. echo -e " Wrong inout($yn). Exit"
  308. fi
  309. echo -e -n "\033[33m2. Do you want to enable \033[36mPlan#Y\033[0m? (y|n) "
  310. read yn
  311. if [[ $yn == y ]]; then
  312. echo -e " Your input is y. Enabling the PLAN#Y..."
  313. sed -i 's/#MKDIR_REMOTE_BAK_Folder_BAK_Disk_Y/MKDIR_REMOTE_BAK_Folder_BAK_Disk_Y/g' $Script_TMP_Remote_Backup
  314. sed -i 's/#SCP_TO_BAK_Disk_Y/SCP_TO_BAK_Disk_Y/g' $Script_TMP_Remote_Backup
  315. elif [[ $yn == n ]]; then
  316. echo -e " Your input is n. Disabling the PLAN#Y..."
  317. else
  318. echo -e " Wrong inout($yn). Exit"
  319. fi
  320. }
  321. SEL_BAK_Mode
  322. echo
  323. echo
  324. echo -e "\033[32mStart check list check... \033[0m"
  325. CHK_PWFile
  326. CHK_Work_F
  327. CHK_SRC_F
  328. CHK_BAK_F
  329. CHK_UTY_1
  330. CHK_UTY_2
  331. CHK_UTY_3
  332. CHK_UTY_4
  333. CHK_UTY_5
  334. echo
  335. SEL_REMOTE_BAK
  336. cp $Script_TMP_BAK $Script_REAL_BAK
  337. cp $Script_TMP_Restore $Script_REAL_Restore
  338. cp $Script_TMP_Script_ED8 $Script_REAL_Script_ED8
  339. cp $Script_TMP_Source_Files_ED8 $Script_REAL_Source_Files_ED8
  340. cp $Script_TMP_Remote_Backup $Script_REAL_Remote_Backup
  341. rm -rf $Script_TMP_BAK $Script_TMP_Restore $Script_TMP_Script_ED8 $Script_TMP_Source_Files_ED8 $Script_TMP_Remote_Backup
  342. echo
  343. echo
  344. if [[ $i == $CHK_QTY ]]; then
  345. echo -e "\033[33mAll check list Passed. You can start your scripts. \033[0m"
  346. else
  347. echo -e "\033[41;37mFailed. There still be error items. Please check it. \033[0m"
  348. fi
  349. echo