Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

EATRemote_backup.sh 7.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. #!/bin/bash
  2. if [ "$#" -ne 2 ]; then
  3. echo
  4. echo -e "######################################################################"
  5. echo -e "######\033[41;37m Wrong paraments input, please refer below usage info !!! \033[0m######"
  6. echo -e "######################################################################"
  7. echo
  8. echo -e "Usage: \033[44;37m./<cmd.sh> <Remote ssh ID> <Remote ssh IP>\033[0m"
  9. echo -e "Example\t: \033[45;37m$0 ed 127.0.0.1\033[0m"
  10. echo; exit 1
  11. fi
  12. BAK_Project=EAT
  13. WHO=`whoami`
  14. HOSTNAME=`hostname`
  15. TS=`date +"%Y%m%d-%H%M%S"`
  16. # Host Local Backup info setup
  17. WORK_Folder=/ED/$BAK_Project/Script_$BAK_Project
  18. Source_BAK_Folder=/ED/$BAK_Project/Backup_file
  19. BAK_1=$Source_BAK_Folder/backup-mysql-$BAK_Project.gz
  20. BAK_2=$Source_BAK_Folder/Script_$BAK_Project.tar
  21. BAK_3=$Source_BAK_Folder/Source_Files_$BAK_Project.tar
  22. BAK_4=$Source_BAK_Folder/php_$BAK_Project.tar
  23. # Remote ssh Backup info setup
  24. PW_File=/home/$WHO/PW/Remote_ssh.info
  25. ID=$1
  26. IP=$2
  27. Remote_BAK_Folder_BAK_Disk_X=/BAK_Disk_A/$HOSTNAME/$BAK_Project/Backup_file
  28. Remote_BAK_Folder_BAK_Disk_Y=/BAK_Disk_B/$HOSTNAME/$BAK_Project/Backup_file
  29. REMOTE_X_BAK_1=$Remote_BAK_Folder_BAK_Disk_X/backup-mysql-$BAK_Project-$TS.gz
  30. REMOTE_X_BAK_2=$Remote_BAK_Folder_BAK_Disk_X/Script_$BAK_Project-$TS.tar
  31. REMOTE_X_BAK_3=$Remote_BAK_Folder_BAK_Disk_X/Source_Files_$BAK_Project-$TS.tar
  32. REMOTE_X_BAK_4=$Remote_BAK_Folder_BAK_Disk_X/php_$BAK_Project-$TS.tar
  33. REMOTE_Y_BAK_1=$Remote_BAK_Folder_BAK_Disk_Y/backup-mysql-$BAK_Project-$TS.gz
  34. REMOTE_Y_BAK_2=$Remote_BAK_Folder_BAK_Disk_Y/Script_$BAK_Project-$TS.tar
  35. REMOTE_Y_BAK_3=$Remote_BAK_Folder_BAK_Disk_Y/Source_Files_$BAK_Project-$TS.tar
  36. REMOTE_Y_BAK_4=$Remote_BAK_Folder_BAK_Disk_Y/php_$BAK_Project-$TS.tar
  37. ##### Func
  38. CHK_WORK_Folder (){
  39. echo -e "\033[32mCheck Work Folder ($WORK_Folder) \033[0m"
  40. ls $WORK_Folder > /dev/null 2>&1
  41. if [[ $? == 0 ]]; then
  42. echo -e " \033[34mPass. \033[0m"
  43. else
  44. echo -e " \033[31mFail. Exit.\033[0m"
  45. echo
  46. exit
  47. fi
  48. }
  49. CHK_SRC_BAK_Folder (){
  50. echo -e "\033[32mCheck local Backup source folder ($Source_BAK_Folder) \033[0m"
  51. ls $Source_BAK_Folder > /dev/null 2>&1
  52. if [[ $? == 0 ]]; then
  53. echo -e " \033[34mPass. \033[0m"
  54. else
  55. echo -e " \033[31mFail. Exit.\033[0m"
  56. echo
  57. exit
  58. fi
  59. }
  60. CHK_PW_File (){
  61. echo -e "\033[32mCheck PW file ($PW_File) \033[0m"
  62. ls $PW_File > /dev/null 2>&1
  63. if [[ $? == 0 ]]; then
  64. echo -e " \033[34mPass. \033[0m"
  65. SSH_ID=`cat $PW_File | grep ID | awk '{print $NF}'`
  66. if [[ $SSH_ID != "" ]]; then
  67. echo -e " - \033[34mSSH ID: Good \033[0m"
  68. else
  69. echo -e " - \033[31mSSH ID: Bad. ID is empty\033[0m"
  70. fi
  71. SSH_PW=`cat $PW_File | grep PW | awk '{print $NF}'`
  72. if [[ $SSH_PW != "" ]]; then
  73. echo -e " - \033[34mSSH PW: Good \033[0m"
  74. else
  75. echo -e " - \033[31mSSH PW: Bad. ID is empty\033[0m"
  76. fi
  77. else
  78. echo -e " \033[31mFail. There is no PW file ($PW_File). Please make a new one. Exit. \033[0m"
  79. echo -e " Example of $PW_File: "
  80. echo -e " ID xxxx"
  81. echo -e " PW zzzzzzzz"
  82. echo
  83. exit
  84. fi
  85. }
  86. CHK_REMOTE_IP_AVA (){
  87. echo -e "\033[32mCheck IP ($IP) availiable - ping ($IP) \033[0m"
  88. ping -c1 $IP > /dev/null 2>&1
  89. if [[ $? == 0 ]]; then
  90. echo -e " \033[34mPass. \033[0m"
  91. else
  92. echo -e " \033[31mFail. There is no ping in IP ($IP). Exit \033[0m"
  93. echo
  94. exit
  95. fi
  96. }
  97. CHK_BAK1 (){
  98. echo -e "\033[32mCheck local Backup file status ($BAK_1) \033[0m"
  99. ls $BAK_1 > /dev/null 2>&1
  100. if [[ $? == 0 ]]; then
  101. echo -e " \033[34mPass. \033[0m"
  102. else
  103. echo -e " \033[33mWarning! There is no local backup file ($BAK_1).\033[0m"
  104. echo
  105. fi
  106. }
  107. CHK_BAK2 (){
  108. echo -e "\033[32mCheck local Backup file status ($BAK_2) \033[0m"
  109. ls $BAK_2 > /dev/null 2>&1
  110. if [[ $? == 0 ]]; then
  111. echo -e " \033[34mPass. \033[0m"
  112. else
  113. echo -e " \033[33mWarning! There is no local backup file ($BAK_2).\033[0m"
  114. echo
  115. fi
  116. }
  117. CHK_BAK3 (){
  118. echo -e "\033[32mCheck local Backup file status ($BAK_3) \033[0m"
  119. ls $BAK_2 > /dev/null 2>&1
  120. if [[ $? == 0 ]]; then
  121. echo -e " \033[34mPass. \033[0m"
  122. else
  123. echo -e " \033[33mWarning! There is no local backup file ($BAK_3).\033[0m"
  124. echo
  125. fi
  126. }
  127. CHK_BAK4 (){
  128. echo -e "\033[32mCheck local Backup file status ($BAK_4) \033[0m"
  129. ls $BAK_2 > /dev/null 2>&1
  130. if [[ $? == 0 ]]; then
  131. echo -e " \033[34mPass. \033[0m"
  132. else
  133. echo -e " \033[33mWarning! There is no local backup file ($BAK_4).\033[0m"
  134. echo
  135. fi
  136. }
  137. MKDIR_REMOTE_BAK_Folder_BAK_Disk_X (){
  138. echo -e "\033[32mmkdir Remote Backup folder always ($ID@$IP:$Remote_BAK_Folder_BAK_Disk_X) \033[0m"
  139. expect -c "
  140. spawn ssh $ID@$IP \"mkdir -p $Remote_BAK_Folder_BAK_Disk_X;\"
  141. expect {
  142. \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
  143. \"yes/no\" {send \"yes\r\"; }
  144. }
  145. expect eof"
  146. }
  147. MKDIR_REMOTE_BAK_Folder_BAK_Disk_Y (){
  148. echo -e "\033[32mmkdir Remote Backup folder always ($ID@$IP:$Remote_BAK_Folder_BAK_Disk_Y) \033[0m"
  149. expect -c "
  150. spawn ssh $ID@$IP \"mkdir -p $Remote_BAK_Folder_BAK_Disk_Y;\"
  151. expect {
  152. \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
  153. \"yes/no\" {send \"yes\r\"; }
  154. }
  155. expect eof"
  156. }
  157. SCP_TO_BAK_Disk_X (){
  158. echo -e "\033[32mSCP the backup files to Backup_Disk_X...\033[0m"
  159. expect -c "
  160. spawn scp $BAK_1 $ID@$IP:$REMOTE_X_BAK_1
  161. expect {
  162. \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
  163. \"yes/no\" {send \"yes\r\"; }
  164. }
  165. expect eof"
  166. expect -c "
  167. spawn scp $BAK_2 $ID@$IP:$REMOTE_X_BAK_2
  168. expect {
  169. \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
  170. \"yes/no\" {send \"yes\r\"; }
  171. }
  172. expect eof"
  173. expect -c "
  174. spawn scp $BAK_3 $ID@$IP:$REMOTE_X_BAK_3
  175. expect {
  176. \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
  177. \"yes/no\" {send \"yes\r\"; }
  178. }
  179. expect eof"
  180. expect -c "
  181. spawn scp $BAK_4 $ID@$IP:$REMOTE_X_BAK_4
  182. expect {
  183. \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
  184. \"yes/no\" {send \"yes\r\"; }
  185. }
  186. expect eof"
  187. }
  188. SCP_TO_BAK_Disk_Y (){
  189. echo -e "\033[32mSCP the backup files to Backup_Disk_Y...\033[0m"
  190. expect -c "
  191. spawn scp $BAK_1 $ID@$IP:$REMOTE_Y_BAK_1
  192. expect {
  193. \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
  194. \"yes/no\" {send \"yes\r\"; }
  195. }
  196. expect eof"
  197. expect -c "
  198. spawn scp $BAK_2 $ID@$IP:$REMOTE_Y_BAK_2
  199. expect {
  200. \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
  201. \"yes/no\" {send \"yes\r\"; }
  202. }
  203. expect eof"
  204. expect -c "
  205. spawn scp $BAK_3 $ID@$IP:$REMOTE_Y_BAK_3
  206. expect {
  207. \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
  208. \"yes/no\" {send \"yes\r\"; }
  209. }
  210. expect eof"
  211. expect -c "
  212. spawn scp $BAK_4 $ID@$IP:$REMOTE_Y_BAK_4
  213. expect {
  214. \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
  215. \"yes/no\" {send \"yes\r\"; }
  216. }
  217. expect eof"
  218. }
  219. CHK_WORK_Folder
  220. CHK_SRC_BAK_Folder
  221. CHK_PW_File
  222. CHK_REMOTE_IP_AVA
  223. CHK_BAK1
  224. CHK_BAK2
  225. CHK_BAK3
  226. CHK_BAK4
  227. MKDIR_REMOTE_BAK_Folder_BAK_Disk_X; wait
  228. SCP_TO_BAK_Disk_X
  229. MKDIR_REMOTE_BAK_Folder_BAK_Disk_Y; wait
  230. SCP_TO_BAK_Disk_Y
  231. echo
  232. echo -e "\033[33mDone \033[0m"
  233. echo