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.

01.ENV_check.sh 14KB

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