El post que buscas se encuentra eliminado, pero este también te puede interesar

Backups sencillos con Tar y Cron

Anuncios

Hola Gente, este es mi primer post. Este es un tutorial de como hacer un Backup Full de un sistema completo y restaurarlo. Se puede adaptar a un backup parcial.

En el día de ayer, en uno de los servidores de la empresa, se rompió el disco duro. Dicho servidor tenia el servicio WEB, MySQL y Correo.
Es una PC de escritorio sin RAID.

Hace un tiempo buscando en internet, encontré varios scripts para hacer backups, adapte uno para mis necesidades y gracias a ese backup pude recuperar la información. El script se basa en el comando tar y el uso de cron para que se repita periódicamente.
El backup es del directorio raíz completo mas la base de datos "sitio" que esta en el MySQL. Se genera un archivo por cada día hábil de la semana.

El script es el siguiente: (Completar en el script los datos del usuario y clave de la base de datos y modifiquen de acuerdo a su necesidad)


#!/bin/sh
####################################
# # Backups automaticos completos #
####################################

# Lo que se quiere respaldar
backup_files="/"

# Adonde se quiere guardar
dest="/backup"

# Formato del nombre del archivo
day=$(date +%u)
hostname=$(hostname -s)
archivo_file="$hostname-$day.tgz"
base="sitio"
$base_usuario="< ACA VA EL USUARIO DE LA BASE DE DATOS >"
$base_pass="< ACA VA LA CONTRASEÑA DE LA BASE >"
archivo_base="$base-$day.sql"

if [ $day -lt 6 ]; then
logger -t BACKUP_SISTEMA "*** Comenzando backup ***"
logger -t BACKUP_SISTEMA "Realizando Resguardo Base del Sitio WEB ($dest/$archivo_base)"
mysqldump -u$base_usuario -p$base_pass --opt $base > $dest/$archivo_base
logger -t BACKUP_SISTEMA "Resguardando $backup_files a $dest/$archivo_file"
tar cpzf $dest/$archivo_file $backup_files --exclude /dev/* --exclude /tmp/* --exclude /proc/* --exclude /backup/* --exclude /sys/*
logger -t BACKUP_SISTEMA "*** Backup Terminado ***"
fi


El archivo tar es comprimido con gzip y preserva los permiso de los archivos. (Cosa que en el primer modelo del script no tuve en cuenta y sufrí las consecuencias ).
Si tiene mas carpetas para excluir es cuestión de agregarlas con la clausula --exclude
El destino del backup no debe ser la misma maquina. Yo tengo mapeado un disco ISCSI en un servidor remoto a la carpeta /backup.
El script lo programe para que se ejecute a las 3 de la mañana.

crontab -e



# m h dom mon dow command
0 3 * * * /backup/backup.sh


Para restaurar el backup es sencillo.
Sobre el volumen vacio ya formateado (volumen vacio me refiero a la particion creada y formateada con algun sistema de archivos)
Copian el archivo a restaurar al disco y lo extraen.

tar zxvf <archivo con el backup>


Una vez que se extrajo todo, hay que hacerlo de arranque. Para ello si usan Grub hay que reinstalarlo. Hay muchos post sobre como hacerlo pero yo lo que hice fue:

* Arranque con un cd de rescate con linux (El HIREN BOOT CD 13 con el system rescue (Un linux gentoo))
* en el caso mio monte la unidad iscsi.
* cree el sistema de archivos en el disco nuevo.
* copie el archivo de backup del dia que necesitaba.
* descomprimi el tar.
* reinstale el grub
* listo

Revisen que les queden creadas las carpetas /dev, /proc y /sys.

Para reinstalar el grub hice lo siguiente. El disco nuevo lo tenia montado en /mnt

mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
chroot /mnt
grub-install --recheck /dev/sdX

donde /dev/sdX es el disco duro (ojo no la particion) nuevo donde pusimos el backup.
y reiniciamos.

El comando tar también la opción de hacer backup incrementales pero preferí hacer backup completos cada 12 horas. Es el mismo script solo que el archivo de backup tiene otro nombre.
Y listo. Espero que les sirva.

Anuncios

7 comentarios - Backups sencillos con Tar y Cron

@alband +1
Muy bueno el post, gracias por compartir el conocimiento.
@Facu54
muy lindo +10 saludos desde el uer soy -.headshot.-
@mart73
muy bueno.... y felicitaciones sos NFU +10