Advertisement
Guest User

Untitled

a guest
Jul 20th, 2016
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.78 KB | None | 0 0
  1. #!/bin/bash
  2. # Realiza una copia de seguridad completa de la herramienta Redmine.
  3. DIA=`date +"%Y%m%d"`
  4. HORA=`date +"%H%M"`
  5. BACKUP_PATH=/backups
  6.  
  7. # -- REDMINE
  8. REDMINE_HOME=/opt/redmine
  9. REDMINE_DB_TYPE=pg #[pg|mysql]
  10. REDMINE_DB_NAME=redmine
  11. REDMINE_DB_USER=redmine
  12. REDMINE_DB_PASS=redmine
  13. REDMINE_DB_BACKUP=$REDMINE_HOME/backups/redmine_db.sql
  14. REDMINE_BACKUP_NAME="redmine_"$DIA"_"$HORA".tar.gz"
  15. REDMINE_BACKUP_HISTO="histo_redmine_"$DIA"_"$HORA".tar.gz"
  16. REDMINE_BACKUP_LIVE_TIME=30
  17. REDMINE_BACKUP_HISTO_LIVE_TIME=365
  18.  
  19. # -- SVN
  20. SVN_REPOS_PATH=$REDMINE_HOME/svn
  21. SVN_BACKUP_PATH=$REDMINE_HOME/backups/svndumps
  22.  
  23. # -- PATRON LIMPIEZA
  24. PATRON_BKP_DIARIO=redmine_*.tar.gz
  25. PATRON_BKP_HISTO=histo_redmine_*.tar.gz
  26.  
  27. # -- FTP
  28. FTP_SERVER=ip_servidor_backup_ftp
  29. FTP_USER=usuario_ftp
  30. FTP_PASS=password_ftp
  31. FTP_REMOTE_CD=remote_backups
  32. FTP_LOCAL_CD=$BACKUP_PATH
  33.  
  34. # Backup de Proyectos SVN
  35. echo
  36. echo "-->BACKUP DE REPOSITORIOS SVN"
  37. echo "===================================================================="
  38. cd $SVN_REPOS_PATH
  39. for SVN_REPO_NAME in *
  40. do
  41. echo "---------- Iniciando exportacion del repositorio '$SVN_REPO_NAME' ----------"
  42. /usr/bin/svnadmin dump $SVN_REPOS_PATH/$SVN_REPO_NAME > $SVN_BACKUP_PATH/$SVN_REPO_NAME.dump
  43. echo "------------- Fin exportacion del repositorio '$SVN_REPO_NAME' -------------"
  44. echo
  45. done
  46.  
  47. # Segun el motor de base de datos especificado se procede a exportar la base de datos de Redmine.
  48. echo
  49. echo "-->BACKUP DE LA BASE DE DATOS DE REDMINE"
  50. echo "===================================================================="
  51. if [ $REDMINE_DB_TYPE == "mysql" ]; then
  52. echo "Exportando la base de datos de Redmine a partir de MySQL. Aguarde un momento..."
  53. mysqldump -v -u $REDMINE_DB_USER -p$REDMINE_DB_PASS --database $REDMINE_DB_NAME > $REDMINE_DB_BACKUP
  54. echo "Fin del proceso de exportacion."
  55. echo
  56. elif [ $REDMINE_DB_TYPE == "pg" ]; then
  57. echo "Exportando la base de datos de Redmine a partir de PostgreSQL. Aguarde un momento..."
  58. export PGUSER=$REDMINE_DB_USER
  59. export PGPASSWORD=$REDMINE_DB_PASS
  60. pg_dump -b -F p --column-inserts $REDMINE_DB_NAME > $REDMINE_DB_BACKUP
  61. unset PGUSER
  62. unset PGPASSWORD
  63. echo "Fin del proceso de exportacion."
  64. fi
  65.  
  66. # Se generan los archivos con todas las copias de seguridad para ser enviadas a una unidad de cinta.
  67. echo
  68. echo "-->CREANDO FULL BACKUP DE REDMINE"
  69. echo "===================================================================="
  70. tar -czf $BACKUP_PATH/$REDMINE_BACKUP_NAME $REDMINE_HOME
  71.  
  72. # Almacenando una copia de seguridad alternativa si la fecha corresponde a fin de mes.
  73. TOMORROW=`date --date=tomorrow +%d`
  74. if [ $TOMORROW -eq "1" ]; then
  75. echo
  76. echo "-->CREANDO BACKUP HISTORICO POR SER FIN DE MES"
  77. echo "===================================================================="
  78. cp $BACKUP_PATH/$REDMINE_BACKUP_NAME $BACKUP_PATH/$REDMINE_BACKUP_HISTO
  79. fi
  80.  
  81. # Para no llenar el disco duro con backups, se eliminan todos los backups diarios pasados la cantidad
  82. # de dias especificados en la variable REDMINE_BACKUP_LIVE_TIME, lo backups historicos se eliminan luego
  83. # de la cantidad de dias expecificados en la variable REDMINE_BACKUP_HISTO_LIVE_TIME.
  84. echo
  85. echo "-->LIMPIEZA DE BACKUPS ANTIGUOS"
  86. echo "===================================================================="
  87. find $BACKUP_PATH/$PATRON_BKP_DIARIO -mtime +$REDMINE_BACKUP_LIVE_TIME -exec rm {} \;
  88. find $BACKUP_PATH/$PATRON_BKP_HISTO -mtime +$REDMINE_BACKUP_HISTO_LIVE_TIME -exec rm {} \;
  89.  
  90. # Se copia el full backup a un servidor de respaldo.
  91. echo
  92. echo "-->COPIANDO EL FULL BACKUP DE REDMINE A UN SERVIDOR DE RESPALDO"
  93. echo "===================================================================="
  94. /usr/bin/ftp -n <<EOD
  95. open $FTP_SERVER
  96. quote USER $FTP_USER
  97. quote PASS $FTP_PASS
  98. bin
  99. cd $FTP_REMOTE_CD
  100. lcd $FTP_LOCAL_CD
  101. put $REDMINE_BACKUP_NAME
  102. bye
  103. EOD
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement