Guest User

Untitled

a guest
May 26th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.39 KB | None | 0 0
  1. #!/bin/bash
  2. # Realiza una copia de seguridad completa de la herramienta.
  3.  
  4. # DEFINICION DE CONSTANTES.
  5. # =========================
  6. DIA=`date +"%Y%m%d"`
  7. HORA=`date +"%H%M"`
  8.  
  9. # VARIABLES DE CONFIGURACION.
  10. # ===========================
  11. # -- Configuraciones de la aplicacion.
  12. APP_NAME=Cacti
  13. APP_HOME=/usr/share/cacti
  14. APP_DB_TYPE=mysql #[pg|mysql]
  15. APP_DB_NAME=cacti
  16. APP_DB_USER=cactiuser
  17. APP_DB_PASS=cactiuser
  18. APP_RRD_HOME=$APP_HOME/rra
  19. APP_BACKUP_HOME=$APP_HOME/backups
  20. APP_BACKUP_DB=$APP_BACKUP_HOME/cacti_db.sql
  21. APP_BACKUP_RRD=$APP_BACKUP_HOME/rrd
  22.  
  23. # -- Configuraciones de backup
  24. BACKUP_PATH=/backups/cacti
  25. BACKUP_NAME="cacti_"$DIA"_"$HORA".tar.gz"
  26. BACKUP_HISTO="cacti_histo_"$DIA"_"$HORA".tar.gz"
  27. BACKUP_LIVE_TIME=30
  28. BACKUP_HISTO_LIVE_TIME=365
  29.  
  30. # -- FTP
  31. FTP_SERVER=ip_o_dominio_servidor
  32. FTP_USER=userbkp
  33. FTP_PASS=userbkp
  34. FTP_REMOTE_CD=remote_backups
  35. FTP_LOCAL_CD=$BACKUP_PATH
  36. FTP_BACKUP_NAME=cacti.tar.gz
  37.  
  38. # -- Patron limpieza CACTI
  39. PATRON_LIMPIEZA=cacti_*.tar.gz
  40. PATRON_LIMPIEZA_HISTO=cacti_histo_*.tar.gz
  41.  
  42. # SECCION DE PROCEDIMIENTOS BACKUP.
  43. # =================================
  44. # -- Comprobacion y creacion de directorios de backup.
  45. echo
  46. echo "-->Verificacion de directorios de Backup"
  47. echo "===================================================================="
  48. if [ ! -d $APP_BACKUP_RRD ]; then
  49. echo -n "Creando directorio $APP_BACKUP_RRD: "
  50. mkdir -p $APP_BACKUP_RRD
  51. echo "OK"
  52. sleep 1
  53. else
  54. echo "Directorio $APP_BACKUP_RRD: OK"
  55. fi
  56. if [ ! -d $BACKUP_PATH ]; then
  57. echo -n "Creando directorio $BACKUP_PATH: "
  58. mkdir -p $BACKUP_PATH
  59. echo "OK"
  60. sleep 1
  61. else
  62. echo "Directorio $BACKUP_PATH: OK"
  63. fi
  64.  
  65. # -- Segun el motor de base de datos especificado se procede a exportar la base de datos.
  66. echo
  67. echo "-->BACKUP DE LA BASE DE DATOS DE $APP_NAME"
  68. echo "===================================================================="
  69. if [ $APP_DB_TYPE == "mysql" ]; then
  70. echo "Exportando la base de datos de $APP_NAME a partir de MySQL. Aguarde un momento..."
  71. mysqldump -v -u $APP_DB_USER -p$APP_DB_PASS --database $APP_DB_NAME > $APP_BACKUP_DB
  72. echo "Fin del proceso de exportacion."
  73. echo
  74. elif [ $APP_DB_TYPE == "pg" ]; then
  75. echo "Exportando la base de datos de $APP_NAME a partir de PostgreSQL. Aguarde un momento..."
  76. export PGUSER=$APP_DB_USER
  77. export PGPASSWORD=$APP_DB_PASS
  78. pg_dump -b -F p --column-inserts $APP_DB_NAME > $APP_BACKUP_DB
  79. unset PGUSER
  80. unset PGPASSWORD
  81. echo "Fin del proceso de exportacion."
  82. fi
  83.  
  84. # -- Backup de la base de datos RRDTOOL.
  85. echo
  86. echo "-->BACKUP DE LAS BASES DE DATOS RRDTOOL DE $APP_NAME"
  87. echo "===================================================================="
  88. LISTA=`ls -1 $APP_RRD_HOME/*.rrd`
  89. for i in $LISTA; do
  90. echo $i | awk '{print "rrdtool dump "$1" > "$1".xml"}' | sh -x
  91. done
  92. mv -vf $APP_RRD_HOME/*.xml $APP_BACKUP_RRD
  93.  
  94. # Se generan los archivos con todas las copias de seguridad para ser enviadas a una unidad de cinta.
  95. echo
  96. echo "-->CREANDO FULL BACKUP DE $APP_NAME"
  97. echo "===================================================================="
  98. cd $APP_BACKUP_HOME
  99. tar -czvf $BACKUP_PATH/$BACKUP_NAME *
  100.  
  101. # Almacenando una copia de seguridad alternativa si la fecha corresponde a fin de mes.
  102. TOMORROW=`date --date=tomorrow +%d`
  103. if [ $TOMORROW -eq "1" ]; then
  104. echo
  105. echo "-->CREANDO BACKUP HISTORICO POR SER FIN DE MES"
  106. echo "===================================================================="
  107. cp -v $BACKUP_PATH/$BACKUP_NAME $BACKUP_PATH/$BACKUP_HISTO
  108. fi
  109.  
  110. # Para no llenar el disco duro con backups, se eliminan todos los backups diarios pasados la cantidad
  111. # de dias especificados en la variable BACKUP_LIVE_TIME, lo backups historicos se eliminan luego de la
  112. # cantidad de dias especificados en la variable BACKUP_HISTO_LIVE_TIME.
  113. echo
  114. echo "-->LIMPIEZA DE BACKUPS ANTIGUOS"
  115. echo "===================================================================="
  116. find $BACKUP_PATH/$PATRON_LIMPIEZA -mtime +$BACKUP_LIVE_TIME -exec rm {} \;
  117. find $BACKUP_PATH/$PATRON_LIMPIEZA_HISTO -mtime +$BACKUP_HISTO_LIVE_TIME -exec rm {} \;
  118.  
  119. # Se copia el full backup a un servidor de respaldo.
  120. echo
  121. echo "-->COPIANDO EL FULL BACKUP DE $APP_NAME A UN SERVIDOR DE RESPALDO"
  122. echo "===================================================================="
  123. /usr/bin/ftp -n <<EOD
  124. open $FTP_SERVER
  125. quote USER $FTP_USER
  126. quote PASS $FTP_PASS
  127. bin
  128. cd $FTP_REMOTE_CD
  129. lcd $FTP_LOCAL_CD
  130. del $FTP_BACKUP_NAME
  131. put $BACKUP_NAME
  132. rename $BACKUP_NAME $FTP_BACKUP_NAME
  133. bye
  134. EOD
Add Comment
Please, Sign In to add comment