Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/01/2015, 13:00
Avatar de lauser
lauser
Moderator Unix/Linux
 
Fecha de Ingreso: julio-2013
Ubicación: Odessa (Ukrania)
Mensajes: 3.278
Antigüedad: 11 años, 4 meses
Puntos: 401
Respuesta: linux automatizar backups

Lo que puedes hacer con este script:
Crea una carpeta donde se guardará todo, y esta carpeta es la que luego se comprimirá.
Esta carpeta tendrá de nombre el año, mes y día presente, por ejemplo hoy esa carpeta se llamaría: 2014-10-28
Copia /etc/ (y todo su contenido) a esa carpeta.
Copia logs (/var/log/) hacia esa carpeta antes mencionada.
Exporta las bases de datos de MySQL que tengamos.
Comprime con un password (PASSWORD) esa carpeta, la comprime en .RAR.
Genera un archivo (data.info) con todo el log de lo antes hecho (log de copia de archvios y compresión a .rar), además de poner en este archivo el tamaño (en MBs) del archivo .RAR.
Borra la carpeta en la que pusimos los archivos y que luego comprimimos.
Envía emails a los administradores o personas relacionadas con el servidor, informando que el backup se hizo de forma correcta, y se les enviará adjunto en ese email el archivo con el log de todo (data.info.rar)

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

dale permisos
Código :
Ver original
  1. chmod +x vps_backup-script.sh

lo guardas (ejemplo): como: /root/vps_backup-script.sh

automatizar ejecución todos los dias a las 12am
Código :
Ver original
  1. echo "* 12    * * *   root    cd /root && ./vps_backup-script.sh" >> /etc/crontab && /etc/init.d/cron restart

Supongo que te servirá,,, es mas completo que lo que necesitabas asi que lo que no uses lo comentas y a funcionar.
__________________
Los usuarios que te responden, lo hacen altruistamente y sin ánimo de lucro con el único fin de ayudarte. Se paciente y agradecido.
-SOLOLINUX-