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.

ED8Remote_backup.sh.SRC 6.1KB

преди 6 години
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  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=ED8
  13. WHO=`whoami`
  14. HOSTNAME=`hostnamectl | grep "Static hostname" | awk '{print $NF}'`
  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. # Remote ssh Backup info setup
  23. PW_File=/home/$WHO/PW/Remote_ssh.info
  24. ID=$1
  25. IP=$2
  26. Remote_BAK_Folder_BAK_Disk_X=/BAK_Disk_A/$HOSTNAME/$BAK_Project/Backup_file
  27. Remote_BAK_Folder_BAK_Disk_Y=/BAK_Disk_B/$HOSTNAME/$BAK_Project/Backup_file
  28. REMOTE_X_BAK_1=$Remote_BAK_Folder_BAK_Disk_X/backup-mysql-$BAK_Project-$TS.gz
  29. REMOTE_X_BAK_2=$Remote_BAK_Folder_BAK_Disk_X/Script_$BAK_Project-$TS.tar
  30. REMOTE_X_BAK_3=$Remote_BAK_Folder_BAK_Disk_X/Source_Files_$BAK_Project-$TS.tar
  31. REMOTE_Y_BAK_1=$Remote_BAK_Folder_BAK_Disk_Y/backup-mysql-$BAK_Project-$TS.gz
  32. REMOTE_Y_BAK_2=$Remote_BAK_Folder_BAK_Disk_Y/Script_$BAK_Project-$TS.tar
  33. REMOTE_Y_BAK_3=$Remote_BAK_Folder_BAK_Disk_Y/Source_Files_$BAK_Project-$TS.tar
  34. ##### Func
  35. CHK_WORK_Folder (){
  36. echo -e "\033[32mCheck Work Folder ($WORK_Folder) \033[0m"
  37. ls $WORK_Folder > /dev/null 2>&1
  38. if [[ $? == 0 ]]; then
  39. echo -e " \033[34mPass. \033[0m"
  40. else
  41. echo -e " \033[31mFail. Exit.\033[0m"
  42. echo
  43. exit
  44. fi
  45. }
  46. CHK_SRC_BAK_Folder (){
  47. echo -e "\033[32mCheck local Backup source folder ($Source_BAK_Folder) \033[0m"
  48. ls $Source_BAK_Folder > /dev/null 2>&1
  49. if [[ $? == 0 ]]; then
  50. echo -e " \033[34mPass. \033[0m"
  51. else
  52. echo -e " \033[31mFail. Exit.\033[0m"
  53. echo
  54. exit
  55. fi
  56. }
  57. CHK_PW_File (){
  58. echo -e "\033[32mCheck PW file ($PW_File) \033[0m"
  59. ls $PW_File > /dev/null 2>&1
  60. if [[ $? == 0 ]]; then
  61. echo -e " \033[34mPass. \033[0m"
  62. SSH_ID=`cat $PW_File | grep ID | awk '{print $NF}'`
  63. if [[ $SSH_ID != "" ]]; then
  64. echo -e " - \033[34mSSH ID: Good \033[0m"
  65. else
  66. echo -e " - \033[31mSSH ID: Bad. ID is empty\033[0m"
  67. fi
  68. SSH_PW=`cat $PW_File | grep PW | awk '{print $NF}'`
  69. if [[ $SSH_PW != "" ]]; then
  70. echo -e " - \033[34mSSH PW: Good \033[0m"
  71. else
  72. echo -e " - \033[31mSSH PW: Bad. ID is empty\033[0m"
  73. fi
  74. else
  75. echo -e " \033[31mFail. There is no PW file ($PW_File). Please make a new one. Exit. \033[0m"
  76. echo -e " Example of $PW_File: "
  77. echo -e " ID xxxx"
  78. echo -e " PW zzzzzzzz"
  79. echo
  80. exit
  81. fi
  82. }
  83. CHK_REMOTE_IP_AVA (){
  84. echo -e "\033[32mCheck IP ($IP) availiable - ping ($IP) \033[0m"
  85. ping -c1 $IP > /dev/null 2>&1
  86. if [[ $? == 0 ]]; then
  87. echo -e " \033[34mPass. \033[0m"
  88. else
  89. echo -e " \033[31mFail. There is no ping in IP ($IP). Exit \033[0m"
  90. echo
  91. exit
  92. fi
  93. }
  94. CHK_BAK1 (){
  95. echo -e "\033[32mCheck local Backup file status ($BAK_1) \033[0m"
  96. ls $BAK_1 > /dev/null 2>&1
  97. if [[ $? == 0 ]]; then
  98. echo -e " \033[34mPass. \033[0m"
  99. else
  100. echo -e " \033[31mFail. Exit.\033[0m"
  101. echo
  102. exit
  103. fi
  104. }
  105. CHK_BAK2 (){
  106. echo -e "\033[32mCheck local Backup file status ($BAK_2) \033[0m"
  107. ls $BAK_2 > /dev/null 2>&1
  108. if [[ $? == 0 ]]; then
  109. echo -e " \033[34mPass. \033[0m"
  110. else
  111. echo -e " \033[31mFail. Exit.\033[0m"
  112. echo
  113. exit
  114. fi
  115. }
  116. CHK_BAK3 (){
  117. echo -e "\033[32mCheck local Backup file status ($BAK_3) \033[0m"
  118. ls $BAK_2 > /dev/null 2>&1
  119. if [[ $? == 0 ]]; then
  120. echo -e " \033[34mPass. \033[0m"
  121. else
  122. echo -e " \033[31mFail. Exit.\033[0m"
  123. echo
  124. exit
  125. fi
  126. }
  127. MKDIR_REMOTE_BAK_Folder_BAK_Disk_X (){
  128. echo -e "\033[32mmkdir Remote Backup folder alwyass ($ID@$IP:$Remote_BAK_Folder_BAK_Disk_X) \033[0m"
  129. expect -c "
  130. spawn ssh $ID@$IP \"mkdir -p $Remote_BAK_Folder_BAK_Disk_X;\"
  131. expect {
  132. \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
  133. \"yes/no\" {send \"yes\r\"; }
  134. }
  135. expect eof"
  136. }
  137. MKDIR_REMOTE_BAK_Folder_BAK_Disk_Y (){
  138. echo -e "\033[32mmkdir Remote Backup folder alwyass ($ID@$IP:$Remote_BAK_Folder_BAK_Disk_Y) \033[0m"
  139. expect -c "
  140. spawn ssh $ID@$IP \"mkdir -p $Remote_BAK_Folder_BAK_Disk_Y;\"
  141. expect {
  142. \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
  143. \"yes/no\" {send \"yes\r\"; }
  144. }
  145. expect eof"
  146. }
  147. SCP_TO_BAK_Disk_X (){
  148. echo -e "\033[32mSCP the backup files to Backup_Disk_X...\033[0m"
  149. expect -c "
  150. spawn scp $BAK_1 $ID@$IP:$REMOTE_X_BAK_1
  151. expect {
  152. \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
  153. \"yes/no\" {send \"yes\r\"; }
  154. }
  155. spawn scp $BAK_2 $ID@$IP:$REMOTE_X_BAK_2
  156. expect {
  157. \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
  158. \"yes/no\" {send \"yes\r\"; }
  159. }
  160. spawn scp $BAK_3 $ID@$IP:$REMOTE_X_BAK_3
  161. expect {
  162. \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
  163. \"yes/no\" {send \"yes\r\"; }
  164. }
  165. expect eof"
  166. }
  167. SCP_TO_BAK_Disk_Y (){
  168. echo -e "\033[32mSCP the backup files to Backup_Disk_Y...\033[0m"
  169. expect -c "
  170. spawn scp $BAK_1 $ID@$IP:$REMOTE_Y_BAK_1
  171. expect {
  172. \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
  173. \"yes/no\" {send \"yes\r\"; }
  174. }
  175. spawn scp $BAK_2 $ID@$IP:$REMOTE_Y_BAK_2
  176. expect {
  177. \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
  178. \"yes/no\" {send \"yes\r\"; }
  179. }
  180. spawn scp $BAK_3 $ID@$IP:$REMOTE_Y_BAK_3
  181. expect {
  182. \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
  183. \"yes/no\" {send \"yes\r\"; }
  184. }
  185. expect eof"
  186. }
  187. CHK_WORK_Folder
  188. CHK_SRC_BAK_Folder
  189. CHK_PW_File
  190. CHK_REMOTE_IP_AVA
  191. CHK_BAK1
  192. CHK_BAK2
  193. CHK_BAK3
  194. #MKDIR_REMOTE_BAK_Folder_BAK_Disk_X
  195. #SCP_TO_BAK_Disk_X
  196. #MKDIR_REMOTE_BAK_Folder_BAK_Disk_Y
  197. #SCP_TO_BAK_Disk_Y
  198. echo
  199. echo -e "\033[33mDone \033[0m"
  200. echo