Como hacer backups completos en linux

A veces, nos encontramos con la necesidad de hacer una copia de seguridad a un equipo linux, ya sea desktop o server, podemos backupear directorios importantes, o hacer un full backup de todo el sistema.

Siempre es recomendable hacer backups, de todo, aunque no sea lo mas divertido hacerlos, créeme, la perdida de información es una de las peores catástrofes en el mundo informático, no solo la pérdida de datos en una DB, sino también podemos perder código/scripts/diseños etc, que nos demandará tiempo volver a escribir.

La forma más fácil de hacer un backup de forma manual, es con el comando tar que nos crea un archivo comprimido y es fácil de usar.

La sintaxis es la siguiente:

tar [parámetros]

Las operaciones mas usadas son:

  • -z: Comprime usando gzip
  • -c: Crea el archivo
  • -v: Verbose mode. (Muestra el progreso mientras se crea el archivo)
  • -f: Para indicar el nombre del archivo
  • -p Conserva los permisos de los archivos
  • -x Extraer

Ejemplo de uso:

Para comprimir un directorio completo, usamos lo siguiente:

tar -zcvf backup-home.tar.gz /home/*  –> Hace un backup de todos los archivos que estan en el directorio home.

Backup del sistema completo:

Si queremos hacer un backup completo del sistema, para que en caso de una perdida total podamos restaurar nuestro servidor de manera completa, datos/programas/configs…  TODO…  debemos ejecutar esto:

tar cvpzf /backup-full.tar.gz –exclude=/proc –exclude=/lost+found –exclude=/backup-full.tar.gz –exclude=/mnt –exclude=/sys –exclude=dev/pts /

Importante: la barra del final “/” no es un error, eso le dice haga el backup desde el root “/”.
Todos esos “exclude” son, como su nombre lo dice, para excluir directorios que el sistema llena con archivos dinamicos, que van a producir errores a la hora del backup, y no son importante.

Como restaurar los backups:

Para restaurar un backup, se utiliza el comando -x

tar -zxvpf /fullbackup.tar.gz  –> extrae los contenidos en el directorio actual, conservando los permisos (-p) .

tar -zxvf backup-home.tar.gz  –> extrae los contenidos en el directorio actual.

tar -zxvf backup-home.tar.gz /home –> extrae los contenidos en /home.

Diego Sucaria

Software & Hardware Developer, Network Administrator, SysAdmin. Estudiante de Ingeniería en Computación de la Universidad Católica de Córdoba

14 Comments

  1. Douglas Milano   •  

    Gracias por esta herramienta, la verdad estaba como loco respaldando un servidor y con esto lo respaldé en 5 minutos.

    Saludos

  2. Nidia   •  

    Hola,

    He ocupado este post para hacer mi backup, sin embargo me quedo horas atorada con /proc/kcore y no he podido finalizarlo.

    Alguna idea de porque suceda esto?? que puedo hacer???

    • Lordblacksuca   •     Author

      Hola!

      Podes agregar la carpeta /proc como parametro exclude. En el post está así.

  3. Antonio   •  

    Es una gran ayuda.
    Tengo unas consultas. En el post indicas esto:

    tar cvpzf /backup-full.tar.gz …

    ¿Cómo funciona el comando? ¿Cuál es el nombre que tendrá el full backup?
    Además mencionas estos tres comando y sólo explicas 2.

    tar -zxvpf /fullbackup.tar.gz
    tar -zxvf backup-home.tar.gz –> extrae los contenidos en el directorio actual.
    tar -zxvf backup-home.tar.gz /home –> extrae los contenidos en /home.

    El primero, ¿que es lo que hace?. ¿Es acaso el nombre del fullbackup? Si es así, ¿cómo se especifico?

    • Lordblacksuca   •     Author

      Hola!
      Si haces tar cvpzf /backup-full.tar.gz … El nombre del archivo es backup-full.tar.gz y se va a guardar en el directorio raiz, “/”.

      Tenés razon! me falto la explicacion del primer comando. Ya se la agregue en el post. La diferencia del primero con el segundo es que el primero tiene un parametro p que hace que al extraer, conserve los permisos de los archivos.
      En el segundo y tercer caso, el nombre del archivo del backup es backup-home.tar.gz

      Saludos!

  4. victor   •  

    Hola es lo mismo o que diferencias hay entre hacer:

    1- “tar -czvf o tar cvzf”

    2- comprimir haciendo “carpeta.tar.gz o carpeta.tgz”

    Recuerda que linux es key-sensitive

    • Lordblacksuca   •     Author

      Hola!
      #1 depende, el guión (-) indica que lo que sigue son comandos. Sin embargo hay programas que soportan comandos sin guión. Para estar seguro, hay que leer el manual de cada programa, “man tar”. Si lo probaste sin guión y funciona está bien!
      #2 la extensión es solo descriptiva, .tgz es compatible con sistemas que soporten extensiones de solo 3 letras, pero .tar.gz es más descriptiva y es totalmente compatible con los sitemas actuales.

  5. eder   •  

    hola a pesar de utilizar -exclude=/proc lo sigue respaldando

  6. Juan   •  

    Hola.

    ¿En qué carpeta o directorio se debe extraer el Backup para que toda la info y configuración quede ubicada en sus respectivos directorios originales?

    Muchas gracias.

     

    • Lordblacksuca   •     Author

      El backup se debe restaurar en el directorio raiz “/”

  7. Cerbero   •  

    Hola Diego,

    Lo primero, gracias por tu entrada acerca de cómo crear respaldos. Vengo usando tu tutorial desde hace unos meses para tener siempre una copia de seguridad de mi servidor dedicado.

    Pero hoy me ha surgido una duda. En caso de catástrofe, por ejemplo, avería del disco duro, ¿cómo restauro la copia exactamente?

    Quiero decir: La empresa de hosting me cambia el disco duro por uno nuevo limpio, sin particiones. ¿Instalo CentOS (mi S.O.) por defecto y luego sobreescribo todo restaurando mi tar.gz?

    ¿Y si el disco es de diferente tamaño y las particiones distintas, cómo afectará?

    Estoy un poco perdido la verdad, Linux no es un sistema en el que me mueva cómodo y tengo terror a perder todo el trabajo por una avería en el disco duro.

    ¿Conoces algún otro sistema de copia de seguridad en el que sea posible por ejemplo crear una imagen completa del disco, particiones incluidas?

    Gracias por anticipado,

    Un saludo!!

    • Lordblacksuca   •     Author

      Hola! no, estas mezclando las cosas…

      La solución de backup que muestro en este post, solo guarda archivos, no incluye puntos de montaje ni otras particiones. No es una “imagen” del disco.
      En el caso de una catastrofe, que necesites restaurar particiones del disco, necesitaras restaurar una imagen. Por lo general este tipo de backups se hacen, no desde el sistema operativo, sino que el hosting te lo ofrece.

      Por ejemplo, yo uso VPS, y el proveedor de las VPS tiene un sistema de backups diarios… si se rompe algo, simplemente se restaura la “imagen” completa de la VPS, en un proceso que demora varias horas, ya que se restaura bit a bit los datos del disco virtual.

      Este proceso de restaurar imágenes restaura todo desde cero, no hace falta reinstalar el sistema operativo, pero la técnica explicada en este post, para funcionar bien, requiere que se instale el sistema operativo previamente.

      Espero haber sido claro en la respuesta, cualquier cosa me preguntas! saludos!

      • Cerbero   •  

        Hola Diego,

        Siento mucho haber tardado tanto en contestar.

        Gracias por tu respuesta!!

  8. JuanGG   •  

    hola Diego,

    Nosotros utilizamos LVM para nuestras particiones, se nos ha presentado el caso de sacar un backup de un filesystem dedicado, el cual se encuentra montado en una ruta X –  “/ejemplo/prueba”, la cuestión es que si necesito sacar el backup tengo que desmontar la carpeta para respaldar la data que se encuentra en el Logical Volume????.

    Nota: Es una duda aparte, gracias de Antemano y Saludos …. muy buen post!

Leave a Reply

Your email address will not be published. Required fields are marked *