Ver Mensaje Individual
  #3 (permalink)  
Antiguo 29/10/2014, 10:59
Avatar de lauser
lauser
Moderator Unix/Linux
 
Fecha de Ingreso: julio-2013
Ubicación: Odessa (Ukrania)
Mensajes: 3.278
Antigüedad: 10 años, 9 meses
Puntos: 401
Respuesta: ¿cómo hacer un backup a servidor VPS?

ESte script lo puedes modificar a tu gusto y necesidades.

Código PHP:
Ver original
  1. !/bin/sh
  2. #
  3. # -*- ENCODING: UTF-8 -*-
  4. #
  5. NAME="VPS_Backup-Script"                # Nombre script.
  6. #Descripción:            Script de backup de files y DBs del VPS
  7. : ${VERSION:=0.1}                     # Versión script.
  8. : ${DATE:=$(date +'%Y-%m-%d')}    # Variable para Fecha.
  9. : ${TIME:=$(date +'%R')}                # Variable para Hora.
  10. : ${WORK_DIR:=/home/backups/$DATE}            # Directorio de trabajo actual.
  11. : ${LOG_FILE:=/home/backups/$DATE/record.log}   # Archivo de log.
  12. : ${ADMIN1a:=admin@midominio.net}              # Email de Administrador No.1
  13. : ${ADMIN1b:=mi.correo@gmail.com}              # Email de Administrador No.1
  14. : ${ADMIN2a:=webmaster@midominio.net}      # Email de Administrador No.2
  15. : ${ADMIN2b:=email.webmaster@midominio.net}        # Email de Administrador No.2
  16. : ${LINE:="-----------------------------------------------------------------"}
  17. : ${DB_PASS:=dbpasswordyeah}        # Password de MySQL.
  18.  
  19. # Creando directorio donde se trabajará, si es que no existe.
  20. if [ ! -d "`dirname $LOG_FILE`" ] ; then mkdir -p "`dirname $LOG_FILE`"; fi
  21.  
  22. # Cambiando a directorio donde trabajaremos.
  23. cd $WORK_DIR
  24.  
  25. # Copiando /ETC/ hacia directorio de trabajo actual.
  26. cp -Rv /etc/ $WORK_DIR > $LOG_FILE
  27. echo $LINE >> $LOG_FILE
  28.  
  29. # Creando carpeta para logs.
  30. mkdir $WORK_DIR/logs
  31.  
  32. # Copiando LOGs.
  33. cp /var/log/apache2/ $WORK_DIR/logs/ -Rv >> $LOG_FILE && echo $LINE >> $LOG_FILE
  34. cp /var/log/aptitud* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
  35. cp /var/log/auth* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
  36. cp /var/log/daemon* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
  37. cp /var/log/dmes* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
  38. cp /var/log/kern* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
  39. cp /var/log/mail* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
  40. cp /var/log/message* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
  41. cp /var/log/mysql/ $WORK_DIR/logs/ -Rv >> $LOG_FILE && echo $LINE >> $LOG_FILE
  42. cp /var/log/mysql.* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
  43. cp /var/log/sys* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
  44.  
  45. # Creando carpeta para DBs.
  46. mkdir $WORK_DIR/dbs
  47.  
  48. # Exportando DBs.
  49. mysqldump --opt -hlocalhost -uroot -p"$DB_PASS" misitio > "$WORK_DIR/dbs/misitio.sql"
  50. mysqldump --opt -hlocalhost -uroot -p"$DB_PASS" mysql > "$WORK_DIR/dbs/mysql.sql"
  51. mysqldump --opt -hlocalhost -uroot -p"$DB_PASS" blogdb > "$WORK_DIR/dbs/blogdb.sql"
  52. mysqldump --opt -hlocalhost -uroot -p"$DB_PASS" pastebin > "$WORK_DIR/dbs/pastebin.sql"
  53.  
  54. # Saliendo un nivel más arriba (/home/backups/).
  55. cd ..
  56.  
  57. # Comprimiendo directorio de trabajo actual.
  58. #tar czvf "$DATE.tar.gz" "$DATE"
  59. rar a $DATE.rar -hpPASSWORD $WORK_DIR >> $LOG_FILE && echo $LINE >> $LOG_FILE
  60.  
  61. # Preparando información para enviar por email.
  62. touch data.info
  63. echo "El archivo $DATE.rar tiene un tamaño de:" > data.info
  64. du -bsh $DATE.rar >> data.info
  65. echo $LINE >> data.info
  66. cat $LOG_FILE >> data.info
  67. tar czvf data.info.tar.gz data.info
  68.  
  69. # Eliminando directorio una vez comprimido.
  70. rm -R "$WORK_DIR"
  71.  
  72. # Enviando emails a administradores.
  73. mail -s "[VPS] | Status de Backup." $ADMIN1a < data.info.tar.gz
  74. mail -s "[VPS] | Status de Backup." $ADMIN1b < data.info.tar.gz
  75. mail -s "[VPS] | Status de Backup." $ADMIN2a < data.info.tar.gz
  76. mail -s "[VPS] | Status de Backup." $ADMIN2b < data.info.tar.gz
  77.  
  78. # Haciendo copia por SSH hacia cuenta en otro servidor o hosting.
  79. #scp -P 922 "/home/backups/$DATE.rar" [email protected]:/home/backups/
  80.  
  81. echo "                  #######################"
  82. echo "                  ## BACKUP REALIZADO! ##"
  83. echo "                  #######################"
  84.  
  85. # Fin del script.

Dale permisos.
Código terminal:
Ver original
  1. chmod +x vps_backup-script.sh
__________________
Los usuarios que te responden, lo hacen altruistamente y sin ánimo de lucro con el único fin de ayudarte. Se paciente y agradecido.
-SOLOLINUX-