Respaldos Automaticos con Rsync
Acá les dejo un Script para realizar Respaldos Automáticos con Rsync en Debian, me funcionó y es bastante práctico.
# aptitude install rsync
# aptitude install sshpass
# vim archivo.sh
#!/bin/bash
# Creado: 070813
# Respaldo Automatizado Servidores en Servidor Remoto
# Instalar rsync y sshpass: aptitude install rsync sshpass
logres=/root/log_res.log
resdir="/home/jrojas/ /var/www"
nombresrv=`hostname`
dirip=`ifconfig | grep "inet addr:10.100" | cut -d":" -f2 | cut -d" " -f1`
fecha=`date +%d-%m-%Y-%H%M`
echo "Iniciando el Proceso de Respaldo!" > $logres-$fecha
date >> $logres-$fecha
echo "Enviando Archivos: " >> $logres-$fecha
sshpass -p 'contraseña_remoto' rsync -avzb --inplace --delete --backup-dir=Respaldo_$fecha -e ssh --exclude-from 'backupexcluir.txt' $resdir usuario-remoto@xx.xx.xx.xx:./$nombresrv-$dirip >> $logres-$fecha
sshpass -p 'contraseña-remoto' rsync -avz -e ssh $logres-$fecha usuario-remoto@xx.xx.xx.xx:./$nombresrv-$dirip
rm $logres-$fecha
exit 0
# sshpass -p: para pasarle la contraseña dentro del script del Servidor Remoto.
# La opcion -a engloba varias funciones de rsync, por ejemplo:
# -r: para que recorra toda la estructura de directorios
# -l: para que mantenga enlaces simbolicos
# -p: para que mantenga permisos en archivos y subdirectorios
# -t: para que mantenga la hora y fecha
# -g: para que mantenga grupo
# -o: para que mantenga dueño (owner)
# -D: para que manenga archivos de dispositivo (root)
# En resumen el modo -a es el modo Archive.
# -v: modo "verbose", muestra por consola el progreso.
# -z : activa compresión.
# -b: modo backup, para poder usar la opcion --backup-dir.
# --inplace actualiza archivos en el lugar de destino.
# --delete: borra en el destino los archivos que ya no estén en el origen
# --backup-dir: Con esta opcion se puede crear un directorio con todos los archivos modificados y
# eliminados en origen, es decir, --delete borra lo que se halla eliminado en origen pero con
# esta opción antes de borrar el archivo es copiado en otra carpeta del destino.
# -e "Opciones ssh": especifica protocolo para envío a Servidor Remoto
# --exclude-from: aquí se añade una lista de archivos a excluir a la hora de hacer el respaldo.
O puedes visualizar el script solamente en este enlace.
55 11 * * 2 root /root/archivo.sh
Saludos y espero les sirva de ayudar, cualquier duda pueden preguntar.
Rsync es una aplicación libre para sistemas de tipo Unix y Microsoft Windows que ofrece transmisión eficiente de datos incrementales, que opera también con datos comprimidos y cifrados. Mediante una técnica de delta encoding, permite sincronizar archivos y directorios entre dos máquinas de una red
o entre dos ubicaciones en una misma máquina, minimizando el volumen de
datos transferidos. Una característica importante de rsync no
encontrada en la mayoría de programas o protocolos es que la copia toma
lugar con sólo una transmisión en cada dirección. rsync puede copiar o
mostrar directorios contenidos y copia de archivos, opcionalmente usando
compresión y recursión. (Wikipedia)
Funciona para realizar respaldos hacia sitios remotos, por lo que en ambos extremos se debe instalar rsync, ejecutar el siguiente Comando:
# aptitude install rsync
Adicionalmente se necesita instalar sshpass para pasarle la Contraseña del Servidor Remoto en mismo Script y no realizarlo de manera interactiva:
# aptitude install sshpass
Copiar dentro de un archivo .sh todas las líneas que siguen y adaptarlo a la necesidad:
# vim archivo.sh
#!/bin/bash
# Creado: 070813
# Respaldo Automatizado Servidores en Servidor Remoto
# Instalar rsync y sshpass: aptitude install rsync sshpass
logres=/root/log_res.log
resdir="/home/jrojas/ /var/www"
nombresrv=`hostname`
dirip=`ifconfig | grep "inet addr:10.100" | cut -d":" -f2 | cut -d" " -f1`
fecha=`date +%d-%m-%Y-%H%M`
echo "Iniciando el Proceso de Respaldo!" > $logres-$fecha
date >> $logres-$fecha
echo "Enviando Archivos: " >> $logres-$fecha
sshpass -p 'contraseña_remoto' rsync -avzb --inplace --delete --backup-dir=Respaldo_$fecha -e ssh --exclude-from 'backupexcluir.txt' $resdir usuario-remoto@xx.xx.xx.xx:./$nombresrv-$dirip >> $logres-$fecha
sshpass -p 'contraseña-remoto' rsync -avz -e ssh $logres-$fecha usuario-remoto@xx.xx.xx.xx:./$nombresrv-$dirip
rm $logres-$fecha
exit 0
# sshpass -p: para pasarle la contraseña dentro del script del Servidor Remoto.
# La opcion -a engloba varias funciones de rsync, por ejemplo:
# -r: para que recorra toda la estructura de directorios
# -l: para que mantenga enlaces simbolicos
# -p: para que mantenga permisos en archivos y subdirectorios
# -t: para que mantenga la hora y fecha
# -g: para que mantenga grupo
# -o: para que mantenga dueño (owner)
# -D: para que manenga archivos de dispositivo (root)
# En resumen el modo -a es el modo Archive.
# -v: modo "verbose", muestra por consola el progreso.
# -z : activa compresión.
# -b: modo backup, para poder usar la opcion --backup-dir.
# --inplace actualiza archivos en el lugar de destino.
# --delete: borra en el destino los archivos que ya no estén en el origen
# --backup-dir: Con esta opcion se puede crear un directorio con todos los archivos modificados y
# eliminados en origen, es decir, --delete borra lo que se halla eliminado en origen pero con
# esta opción antes de borrar el archivo es copiado en otra carpeta del destino.
# -e "Opciones ssh": especifica protocolo para envío a Servidor Remoto
# --exclude-from: aquí se añade una lista de archivos a excluir a la hora de hacer el respaldo.
O puedes visualizar el script solamente en este enlace.
Guardarlo y colocar en crontab para que se ejecute automáticamente cada cierto tiempo, dependiendo de la necesidad, por ejemplo:
# vim /etc/crontab55 11 * * 2 root /root/archivo.sh
Saludos y espero les sirva de ayudar, cualquier duda pueden preguntar.
@jomarore
Comentarios
Publicar un comentario