Advertisement
Guest User

Untitled

a guest
Aug 11th, 2017
451
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.62 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. BTYPE=$1
  4. DEBUG=$2
  5. ERRCNT=0
  6. ERRMSG=""
  7. BACKOUNT=0
  8.  
  9. #======================================== INIZIO DELLA FUNZIONE GENERICA ===================================================
  10.  
  11. function gather {
  12.  
  13. BACKOUNT=$(($BACKOUNT+1))
  14.  
  15. echo " "
  16. echo " "
  17. echo "||||||> ($BACKOUNT) OPERAZIONI DI BACKUP PER $FNAME - $ENVAR <||||||"
  18. echo " "
  19.  
  20. PNAME="$FNAME/$ENVAR/giornaliero/$(date +%d_%m_%Y)"
  21.  
  22. if [ "$BTYPE" = "weekly" ]
  23. then
  24. PNAME="$FNAME/$ENVAR/settimanale/$(date +%d_%m_%Y)"
  25. echo "BACKUP SETTIMANALE IN CORSO..."
  26. mkdir -p /root/backup/old/$FNAME/$ENVAR/settimanale.old
  27. echo " "
  28.  
  29. elif [ "$BTYPE" = "daily" ]
  30. then
  31. PNAME="$FNAME/$ENVAR/giornaliero/$(date +%d_%m_%Y)"
  32. echo "BACKUP GIORNALIERO IN CORSO..."
  33. echo " "
  34.  
  35. elif [ "$BTYPE" = "monthly" ]
  36. then
  37. PNAME="$FNAME/$ENVAR/mensile/$(date +%m_%Y)"
  38. echo "BACKUP MENSILE IN CORSO..."
  39. mkdir -p /root/backup/old/$FNAME/$ENVAR/mensile.old
  40. echo " "
  41.  
  42. else
  43. echo "NON E' STATO INSERITO UN PERIODO ACCETTABILE. SI PROCEDE CON UN BACKUP DI TIPO GIORNALIERO."
  44. echo " "
  45.  
  46. fi
  47.  
  48.  
  49. mkdir -p "/root/backup/report_singoli/$PNAME"
  50.  
  51. echo " "
  52. echo "PREPARO IL REPORT..."
  53. echo "INIZIO BACKUP PER $FNAME CON AMBIENTE $ENVAR (log in /root/backup/report_singoli/$PNAME/$FNAME.log)" >> /root/backup/report.log
  54. echo "PROCESSO PARTITO! ATTENDERE PREGO..."
  55.  
  56. if [ "$DEBUG" = "debug" ]
  57. then
  58. echo "LANCIATO IN DEBUG MODE"
  59. echo $BTYPE
  60. echo $DEBUG
  61. else
  62.  
  63. echo "Attendo 60 secondi prima di iniziare..."
  64.  
  65. sleep 60
  66.  
  67. fi
  68.  
  69. echo "INITIALIZE" >> /root/backup/report_singoli/$PNAME/$FNAME.log
  70. cat /dev/null > /root/backup/report_singoli/$PNAME/$FNAME.log
  71.  
  72. exec 3>&1
  73. exec 4>&2
  74. exec 1<&-
  75. exec 2<&-
  76. exec 1<>/root/backup/report_singoli/$PNAME/$FNAME.log
  77. exec 2>&1
  78. echo " "
  79. echo "=================================================***************=============================================="
  80. echo " "
  81. echo "BACKUP AVVIATO IN DATA:"
  82. echo date
  83. echo " "
  84. echo "||| ENVIRONMENT $FNAME - BACKUP IN CORSO |||"
  85. echo " "
  86. echo "STO PREPARANDO LE CARTELLE PER $FNAME"
  87. echo " "
  88. echo "mkdir -p /root/backup/$PNAME/"
  89.  
  90. mkdir -p "/root/backup/$PNAME/"
  91.  
  92. if [ $BTYPE = "monthly" ]
  93. then
  94. rsync -a /root/backup/$FNAME/$ENVAR/mensile/* /root/backup/old/$FNAME/$ENVAR/mensile.old/
  95. rm -rf /root/backup/$FNAME/$ENVAR/mensile/*
  96.  
  97. elif [ $BTYPE = "weekly" ]
  98. then
  99. rsync -a /root/backup/$FNAME/$ENVAR/settimanale/* /root/backup/old/$FNAME/$ENVAR/settimanale.old/
  100. rm -rf /root/backup/$FNAME/$ENVAR/settimanale/*
  101.  
  102. else
  103. #implementa rotazione settimanale
  104. sleep 1s
  105.  
  106. fi
  107.  
  108. mkdir -p "/root/backup/$PNAME/"
  109.  
  110.  
  111. echo " "
  112.  
  113. # SCRIPT DI BACKUP - FTPS GATHERING - PROVA 1
  114.  
  115. echo " "
  116. echo ">>> BACKUP PARTITO! <<<"
  117. echo " "
  118. echo "SPOSTAMENTO DEI BACKUP PRECEDENTI..."
  119. echo " "
  120. echo "AVVIO DEI PROCESSI CURL..."
  121. echo " "
  122.  
  123. if [ $ENVAR == "postgres" ] #siamo in ambiente postgres e mirror la directory
  124. then
  125.  
  126. echo "VERIFICO LE DIMENSIONI DELLA CARTELLA REMOTA:"
  127.  
  128. mkdir /root/fs
  129. /usr/local/bin/curlftpfs ftp://jelastic-ftp:fQ71j6yoNG@37.218.249.180/ /root/fs
  130. du -ksh /root/fs/backup | awk 'BEGIN{FS=" "} {print $1}'
  131. du -ksh /root/fs/backup | awk 'BEGIN{FS=" "} {print $1}' > /root/backup/$PNAME/$FNAME.check
  132. umount /root/fs/
  133. rm -rf /root/fs
  134.  
  135. echo "DOWNLOAD DI: wget -N -q -nv -m ftp://$FUSER:$FPASSWORD@$FIP$BPATH -P /root/backup/$PNAME"
  136. echo ""
  137. echo " "
  138.  
  139.  
  140. wget -N -q -nv -m ftp://$FUSER:$FPASSWORD@$FIP$BPATH -P /root/backup/$PNAME
  141.  
  142. else #siamo in ambiente tomcat e scarico file apposito
  143.  
  144. echo "DOWNLOAD DI: curl --user $FUSER:$FPASSWORD ftp://$FIP$BPATH -o /root/backup/$PNAME/$FNAME.$EXT"
  145. echo ""
  146. echo " "
  147.  
  148. curl --user $FUSER:$FPASSWORD ftp://$FIP$BPATH -o /root/backup/$PNAME/$FNAME.$EXT
  149.  
  150. fi #(DECOMMENTARE QUANDO IMPLEMENTI L'OPZIONE SOTTO DEL CHECK DI CONSISTENZA ANCHE PER POSTGRES)
  151.  
  152. # CHECK COMPARISON
  153.  
  154. echo " "
  155. echo "AVVIO DEL CONFRONTO DEI FILES..."
  156. echo " "
  157. echo "GENERO UN CHECK DEL BACKUP SCARICATO E, NEL CASO, SCARICO QUELLO REMOTO:"
  158.  
  159. cat /dev/null > /root/backup/$PNAME/local.check
  160.  
  161. # aggiungendo nello script quel controllo delle dimensioni, accorciare
  162. # l'if $ENVAR precedente (il maxiblocco) (ricorda il fi in fondo)(CON IL DECOMMENTO DI fi SOPRA)
  163. # e giocare con:
  164. #
  165. if [ $ENVAR == "postgres" ]
  166. then
  167. echo "GENERO LA DIMENSIONE LOCALE:"
  168. echo "du -ksh /root/backup/$PNAME | awk 'BEGIN{FS=" "} {print $1}' >> /root/backup/$PNAME/local.check"
  169. du -ksh /root/backup/$PNAME | awk 'BEGIN{FS=" "} {print $1}' >> /root/backup/$PNAME/local.check
  170. else
  171.  
  172. echo "DOWNLOAD DELL'HASH MD5:"
  173. echo "curl --user $FUSER:$FPASSWORD ftp://$FIP$PATHSUM -o /root/backup/$PNAME/$FNAME.check"
  174. curl --user $FUSER:$FPASSWORD ftp://$FIP$PATHSUM -o /root/backup/$PNAME/$FNAME.check
  175. echo " "
  176. echo "GENERO L'MD5 LOCALE:"
  177. md5sum /root/backup/$PNAME/$FNAME.$EXT | awk '{ print $1 }' >> /root/backup/$PNAME/local.check
  178. fi
  179.  
  180. echo " "
  181. echo "LOCAL CHECK:"
  182. cat "/root/backup/$PNAME/local.check"
  183.  
  184.  
  185. echo " "
  186. echo "CONFRONTO CON QUELLO GENERATO DALL'ENV:"
  187.  
  188. cat "/root/backup/$PNAME/$FNAME.check"
  189.  
  190. echo " "
  191.  
  192. if cmp -s "/root/backup/$PNAME/local.check" "/root/backup/$PNAME/$FNAME.check"
  193. then
  194. echo "Check verificato con successo!"
  195. echo "Download del backup di $FNAME ambiente $ENVAR effettuato correttamente e verificato!" >&3
  196. echo " "
  197.  
  198.  
  199. # echo "Avvio la cancellazione dei backup remoti..."
  200. # echo " "
  201.  
  202. # DELBPATH=$(echo $BPATH | sed -r 's/^.{2}//')
  203. # DELSUMPATH=$(echo $PATHSUM | sed -r 's/^.{2}//')
  204. # echo $DELBPATH
  205. # echo $DELSUMPATH
  206. # echo " "
  207.  
  208. # echo "curl --user $FUSER:$FPASSWORD ftp://$FIP$BPATH -Q 'DELE $DELBPATH'"
  209. echo " "
  210. # echo "curl --user $FUSER:$FPASSWORD ftp://$FIP$PATHSUM -Q 'DELE $DELSUMPATH'"
  211. echo " "
  212.  
  213. # curl --user $FUSER:$FPASSWORD ftp://$FIP$BPATH -Q "DELE $DELBPATH"
  214. # curl --user $FUSER:$FPASSWORD ftp://$FIP$PATHSUM -Q "DELE $DELSUMPATH"
  215.  
  216. if [ $BTYPE = "monthly" ]
  217. then
  218. rm -rf /root/backup/old/$FNAME/$ENVAR/mensile.old
  219.  
  220. elif [ $BTYPE = "weekly" ]
  221. then
  222. rm -rf /root/backup/old/$FNAME/$ENVAR/settimanale.old
  223.  
  224. else
  225.  
  226. HOWMANY=$(ls -l /root/backup/$FNAME/$ENVAR/giornaliero/ | grep "^d" | wc -l)
  227.  
  228. echo " "
  229. echo "==================="
  230. echo " "
  231. echo "NELLA CARTELLA '$FNAME/$ENVAR/giornaliero' sono presenti $HOWMANY backup, "
  232.  
  233. if [ $HOWMANY -eq 7 ]
  234.  
  235. then
  236.  
  237. echo "PERTANTO, HO CANCELLATO IL BACKUP MENO RECENTE."
  238. echo " "
  239.  
  240. rm -rf %q "$(find /root/backup/$FNAME/$ENVAR/giornaliero/* -type d -printf "%T+ %p\0" | tr '\0\n' '\n\0' | sort | head -n 1 | tr '\0\n' '\n\0' | sed -e 's/^[^ ]\+ //')"
  241.  
  242. else
  243.  
  244. echo "DUNQUE, NESSUNA ROTAZIONE DI BACKUP E' RICHIESTA."
  245. echo " "
  246.  
  247. fi
  248.  
  249. sleep 1s
  250.  
  251. fi
  252.  
  253.  
  254. else
  255.  
  256. if [ $BTYPE = "monthly" ]
  257. then
  258. rsync -a /root/backup/old/$FNAME/$ENVAR/mensile.old/ /root/backup/$FNAME/$ENVAR/mensile/
  259. rm -rf /root/backup/old/$FNAME/$ENVAR/mensile.old
  260.  
  261. elif [ $BTYPE = "weekly" ]
  262. then
  263. rsync -a /root/backup/old/$FNAME/$ENVAR/settimanale.old/ /root/backup/$FNAME/$ENVAR/settimanale/
  264. rm -rf /root/backup/old/$FNAME/$ENVAR/settimanale.old
  265.  
  266. else
  267.  
  268. sleep 1s
  269.  
  270. fi
  271.  
  272.  
  273. echo "ATTENZIONE! Controllo integrita' fallito! Controllare il backup per eventuali errori!"
  274. echo "ATTENZIONE! Il processo ha rilevato un download non corretto dei dati! Vedere il log di $FNAME $ENVAR per ulteriori dettagli." >&3
  275. ERRCNT=$(($ERRCNT + 1))
  276. ERRMSG="$ERRMSG || $FNAME - $ENVAR"
  277.  
  278. fi
  279.  
  280.  
  281.  
  282. echo " "
  283.  
  284. cat /root/backup/report_singoli/$PNAME/$FNAME.log >> /root/backup/report.log
  285. rm -rf /root/backup/$PNAME/$FNAME.check
  286.  
  287. echo " " >&3
  288. echo "=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=" >&3
  289. echo " " >&3
  290. echo "PROCESSO COMPLETATO PER $FNAME, INFORMAZIONI SALVATE NEL LOG COMUNE (/root/backup/report.log) E NEL LOG SPECIFICO." >&3
  291. echo " "
  292.  
  293.  
  294. #=========================== INIZIO RESET DESCRIPTOR =====================
  295.  
  296. echo " "
  297. echo "RESET DEI DESCRIPTOR..."
  298. exec 1<&3
  299. exec 2<&4
  300. sleep 1s
  301. echo " "
  302. echo " ()()()()()()()()()()()()()"
  303. echo " "
  304. echo " ESCO DALLA FUNZIONE E VEDO SE DEVO FARE ALTRI BACKUP..."
  305. echo " "
  306. echo " ()()()()()()()()()()()()()"
  307. echo " "
  308. sleep 2s
  309.  
  310. }
  311.  
  312. #================================================== FINE DELLA FUNZIONE GENERICA: DA QUI IN POI AGGIUNGERE GLI ENV E CHIAMARE gather ===================================================================
  313. #
  314. #
  315. # ISTRUZIONI
  316. #
  317. # Per aggiungere un ambiente alla lista dei backup da prendere, compilare le variabili sottostanti a seconda dell'ambiente in questione.
  318. # EXT indica il formato in cui è memorizzato il file di backup, che a seconda dell'environment (ENVAR) saranno, normalmente, sql per postgres e ar.gz per tomcat.
  319. # NOTA BENE: affinchèlo script funzioni è necesario che sull'ambiente (environment) sia configurato un backup sulla cartella backup/ accessibile direttamente dall'FTP con il nome specificato
  320. # in FNAME e contenuto anche nelle altre variabili (PATHSUM, BPATH). Inoltre, se sull'environment non è impostato il controllo md5 delbackup, lo script funzionera' comunque
  321. # ma riportera' errori, poichènon può controllare l'esito del downloa
  322. #
  323. # IMPORTANTE: Per gli ambienti PostgreSQL EXT è da tenre vuoto ("") e PATHSUM è irrilevant!
  324. #
  325. #=======================================================================================================================================================================================================
  326.  
  327. # BACKUP PostgreSQL AdEPP e Comtrapani TOMCAT
  328.  
  329. ENVAR="postgres"
  330. EXT=""
  331. FNAME="AdEPP8"
  332. FUSER="jelastic-ftp"
  333. FPASSWORD="fQ71j6yoNG"
  334. FIP=37.218.249.180
  335. BPATH="/backup/"
  336. PATHSUM="none"
  337.  
  338. gather
  339.  
  340. ENVAR="tomcat"
  341. EXT=".tar.gz"
  342. FNAME="AdEPP8"
  343. FUSER="jelastic-ftp"
  344. FPASSWORD="YyGZwN82Eh"
  345. FIP=37.218.249.182
  346. BPATH=":/backup/tomcat.tar.gz"
  347. PATHSUM=":/backup/tomcat.md5"
  348.  
  349. gather
  350.  
  351. # BACKUP altroserver
  352.  
  353. # ENVAR="tomcat/postgres"
  354. # EXT="sql/tar.gz/.."
  355. # FNAME="[NOME DELL'ENV]"
  356. # FUSER="jelastic-ftp"
  357. # FPASSWORD="[PASSWORD FTP]"
  358. # FIP=[INDIRIZZO IP DELL'ENV]
  359. # BPATH=":/backup/[NOMEFILE]"
  360. # PATHSUM=":/backup/[NOMEFIRMA].md5"
  361.  
  362. # gather
  363.  
  364. #ENVAR="postgres"
  365. #EXT="sql.gz"
  366. #FNAME="arcasud"
  367. #FUSER="jelastic-ftp"
  368. #FPASSWORD="jwfvLCEEwr"
  369. #FIP=37.218.248.24
  370. #BPATH=":/backup/backup1.sql.gz"
  371. #PATHSUM=":/backup/arcasud.md5"
  372.  
  373. #gather
  374.  
  375. #ENVAR="postgres"
  376. #EXT="sql.gz"
  377. #FNAME="appalti_temp1"
  378. #FUSER="jelastic-ftp"
  379. #FPASSWORD="D7PUoK3EXp"
  380. #FIP=37.218.249.53
  381. #BPATH=":/backup/backup1.sql.gz"
  382. #PATHSUM=":/backup/appalti_temp1.md5"
  383.  
  384. #gather
  385.  
  386. echo " "
  387. echo " "
  388. echo " "
  389. echo " "
  390. echo " NIENTE DA FARE, FINITO!"
  391. echo " "
  392. echo "-----------------------"
  393. echo " "
  394. echo "EFFETTUATE $BACKOUNT OPERAZIONI DI BACKUP"
  395. echo " "
  396. echo "=== REPORT ERRORI === "
  397. echo "Numero di errori: $ERRCNT"
  398. echo "La variabile errori riporta: $ERRMSG"
  399. sleep 3s
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement