Script para backups automáticos de tu servidor

Los que administramos servidores sabemos lo importante que es tener salvas, backups de todo… pues, en caso de algún problema o fallo, el backup será nuestro mejor amigo y nos ayudará a restablecer los servicios 🙂

Hace un tiempo atrás (varios meses … bastantes meses) acá no se hacían backups de configuraciones en los servidores, logs o algo así de forma automática. Y simplemente no podía ser así jaja, me planteé usar Bacula, pero… DIOS!! para lo que yo quería esto era demasiado, muy pero muy complicado a mi parecer, si lo que se quiere es simplemente hacer backups y guardar estos (o enviarlos a otro servidor, o por email) no hay necesidad de usar Bacula, con un simple script se solucionan todos los problemas, de ahí que yo decidiera hacer mi propio script y así quedaba más satisfecho 😀

Y precisamente este script es el que comparto con ustedes, explico muy brevemente qué es lo que hace:

  1. Crea una carpeta donde se guardará todo, y esta carpeta es la que luego se comprimirá.
  2. Esta carpeta tendrá de nombre el año, mes y día presente, por ejemplo hoy esa carpeta se llamaría: 2012-04-26
  3. Copia /etc/ (y todo su contenido) a esa carpeta.
  4. Copia logs (/var/log/) hacia esa carpeta antes mencionada.
  5. Exporta las bases de datos de MySQL que tengamos.
  6. Comprime con un password (PASSWORD) esa carpeta, la comprime en .RAR.
  7. 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, que les recuerdo, contiene todo lo que decidimos salvar.
  8. Borra la carpeta en la que pusimos los archivos y que luego comprimimos, pues si ya tenemos esta carpeta comprimida, no hay necesidad de además tenerla sin comprimir.
  9. 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)

Obviamente, este script no es ejecutarlo y ya jaja, deben abrirlo y cambiar en él el password de MySQL de ustedes, pues yo no me sé el password de root de sus bases de datos LOL!!!, así como cambiar los emails a los que quieren que se envíe la notificación, pues los emails que puse son solo de ejemplo.

Si desean comprimirlo en .tar.gz y no en .rar (como está configurado el script) ahí les dejé la línea comentada, es solo descomentarla y comentar la de .rar. Al igual, si desean copiar por SSH (usando SCP) el archivo comprimido hacia otro servidor o hosting, también les dejé la línea al final (está comentada), en ella deberán poner los datos de acceso a su servidor o hosting (usuario y dominio o URL del servidor), pero para que esto funcione además deberán configurar SSH sin contraseña, pues el script no podrá acceder al servidor si no tiene acceso permitido en este.

Ah, si desean que lo del envío de emails funcione, deben tener postfix instalado en el servidor, casi todos instalan postfix pero bueno, es válida la aclaración 🙂

Aunque… podrían modificar y usar un script en Python que dejé hace un tiempo, pero creo que sería trabajar un poco más ^-^U

Y bueno, solo queda dejarles el script:

VPS Backup Script

Recuerden que tienen que darle permisos de ejecución (chmod +x vps_backup-script.sh)

Para que se ejecute todos los días a las 10AM, ponen esto en una terminal:

echo "* 10    * * *   root    cd /root && ./vps_backup-script.sh" >> /etc/crontab && /etc/init.d/cron restart

Suponiendo que el script esté guardado como: /root/vps_backup-script.sh

Bueno suficiente, que no quiero hacer parecer esto demasiado complicado, cosa que no lo es jaja, en realidad esto es algo sumamente sencillo, solo que al verlo por primera vez puede asustar un poco 🙂

Cualquier duda, pregunta o sugerencia me la hacen saber, ya saben que me gusta ayudar 😀

Saludos

PD: Aclaro que no soy ni me considero programador jaja, ni de cerca LOL!! sé que se puede optimizar mucho más el script, pero bueno… no soy programador 🙂


29 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Faustod dijo

    Alejando,

    Saludos,

    Como estas muy interesante, pero una salvedad; si ese script se corre hoy se llamara 2012-04-25, hoy es el dia de la guardia.

    Gracias
    Faustod

    1.    KZKG^Gaara dijo

      JAJAJA cierto jajaja, es que yo como que vivo en el futuro … LOL!!!

  2.   linuxman dijo

    Muy interesante, de hecho me muestra como hacer varias cosas, estoy desarrollando el mío propio y voy a tomar algunas piezas de código del tuyo para agregarle funcionalidades.

    En mi caso voy a utilizar rsync en lugar de cp para copiar los archivos.

    Saludos !!

    1.    KZKG^Gaara dijo

      Sí, usar rsync es una buena idea pero prefería usar cp porque, copiaré archivos hacia una carpeta en blanco, no sincronizaré con ninguna otra información jaja, por eso simplemente usé cp 😀

      Si quieres saber más tips para bash revisa el tag acá en el sitio… encontrarás cómo hacer archivos de lock, control de qué usuarios pueden ejecutar el script, etc 😀
      https://blog.desdelinux.net/tag/bash/

      Saludos y gracias por comentar 🙂

  3.   Edwin dijo

    un servidor con ssh sin contraseña ?

    1.    KZKG^Gaara dijo

      No sin contraseña, sino que acepte conexiones SSH con confianza desde una IP específica, esto se hace de forma MUY segura con el uso de llaves públicas y privadas, en el link que dejé lo explico todo al detalle 🙂

      1.    Edwin dijo

        Con llaves si, por un momento me asuste xD

        1.    KZKG^Gaara dijo

          LOL!!! ni que fuera yo un suicida LOL!!!

          1.    Courage dijo

            No, pero dentro de las cosas emos a tí te gusta mucho quejarte

  4.   andresnetx dijo

    genial este script.
    espero que sigan publicando scripts. ayudan a quienes nos estamos pasando a linux a ser más productivos en tiempo y en disminuir el tiempo de aprendizaje.

    1.    KZKG^Gaara dijo

      😀 las gracias a tí por comentar.
      En breve publico otro tip sobre bash 😉

      Saludos

      1.    marcos topo dijo

        gracias locuraaaa! algun dia devolvere los favores q me dan los camaradas de esta hermosa comunidad linux!

  5.   ivan dijo

    como puedo copiarme el contenido de varios archivos logs y ubicarlo en uno solo archivo ,,,, de forma automatica cada 5 minutos, tomando en cuenta ,,,,, que el contenido de los archivos a copiar se midifican constantemente

    1.    elwuilmer dijo

      Mi recomendación, (sugerencia), aporte seria… Crear una condición de que cada 5 minutos el verifique el archivo o los archivos, ya sea con:

      * último acceso = atime
      * última modificación = mtime
      * último cambio de información = ctime

      De acuerdo a ello, si existe algún cambio en los ficheros, agruparlos y/o leerlos (cat) y enviarlos > logsficheros.

      Es un ejemplo claro esta, cuestión de probar, intentar, verificar y modificar.

  6.   KZKG^Gaara dijo

    Testing Caché Plugin …

  7.   Santiago dijo

    Muy buena información la verdad que me sirvió de mucho, estoy realizando un proyecto de gran porte (obviamente es ficticio, por que es del estudio) y me vino muy bien esta información.
    Muchas gracias!!

  8.   Morenita dijo

    ¿Como harias un shell script que:?
    Le pida al usuario especificar el nombre del directorio a respaldar
    Le pida la ubicacion donde va respaldar el directorio
    Incluir la fecha de respaldo

    1.    KZKG^Gaara dijo

      Hola,

      Con «read» puedo solicitarle al usuario todos esos datos, luego se los asigno a variables y listo.

      Escríbeme a mi email si tienes dudas: kzkggaara[at]desdelinux[dot]net

      Saludos

      PD: La fecha de respaldo ya está incluída en el script.

  9.   ana_gaby dijo

    presente un script mas sencillo para respaldar carpetas desde ubuntu y transferirlas por ftp a otro servidor gracias

  10.   juan dijo

    Hola como hago un backup de todo el sistema operativo linux y mandarlo a otra pc. Les agradecería la atención muchas gracias!!

  11.   Franco Valdettaro dijo

    Podrias enviarme el script a mi correo fvaldettaro@gmail.com por favor.

  12.   Javier dijo

    podria por favor enviarme el script a mi correo, un millon de gracias, saludos.

  13.   WuilmerBolivar dijo

    Buen día amigo, creo que tienen problema con el subdominio «paste» pues estuve chequeando algunos codigos/scripts publicados que llevan a paste.desdelinux y todos me redirecionan a blog.desdelinux.

  14.   Ardillas en la red dijo

    Si, no es posible acceder al script porque paste. te redirecciona, ¿lo podrás subir en algun otro lado?

    1.    AlexStreaming dijo

      Se ha solucionado el problema para obtener el script?

      Gracias.

      1.    Luigys Toro dijo

        Se ha solucionado, ya pueden acceder a los códigos

      2.    Ardillas en la red dijo

        Ahora si, gracias!

  15.   paco dijo

    buenas tardes, me gustaria poder descargar el script, seria posible subirlo de nuevo, ahora no esta disponible

  16.   Ramiro dijo

    Hola,
    Muy buen aporte! Te podría pedir el script para descargar? Muchas gracias 🙂