Script de backup Automáticos en Linux
Rodolfo Alcazar Portillo
rodolfo.alcazar en padep.org.bo
Vie Dic 21 08:29:49 CLST 2007
Am Donnerstag, den 20.12.2007, 23:43 -0300 schrieb Eduardo Aguila:
> Hola he echo este sencillo script de backup automáticos
Eduardo, el tuyo es simple, pero no es nada flexible.
Aquí va el mío: lo tengo instalado en 6 servers, y me centralizan (con
crontab, como te sugirieron) los backups en un solo servidor de backups;
primero tienes un archivo .conf donde configuras el backup para cada
server; luego tienes 4 archivos: $CLIST, que te almacena en un backup la
salida de un comando (ej, mysqldump); $FLIST, una lista de archivos
(ej, .bashrc); $TLIST, una lista de directorios. Además, tienes un log
de todo lo que se almacena en cada backup. en el archivo descrito por
$XCLUD puedes poner archivos/directorios que no quieres que se almacenen
(ej, /home/rodolfoap/videos). En tu servidor de backups debes tener
instalada la llave en .ssh para que los backups viajen por la red,
cifrados y sin pedirte passwords. Pon ambos archivos en /root/bin y crea
los $CLIST, $FLIST, $TLIST, $XCLUD en el mismo directorio.
Saludos!
# cat backup.conf
#!/bin/bash
#
# -------------------------------------------------------------------
# Bash comprehensive backup script configfile
# (c) Rodolfo Alcazar, Padep/GTZ, 02/2005, 12/2007
#
# -------------------------------------------------------------------
# Check local variables before starting script, please:
#
BKDIR=/tmp/backup.$$
CLIST=/root/bin/backup.dump.commands
FLIST=/root/bin/backup.dump.files
TLIST=/root/bin/backup.dump.dirs
XCLUD=/root/bin/backup.dump.excluded
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
OUTDIR=/backup
SERVER="$HOSTNAME"
#DATTIME=$(date +'%Y%m%d.%H%M%S')
DATTIME=$(date +'%Y%m%d')
BKLOG=${OUTDIR}/backup_${SERVER}_${DATTIME}.log
BKTAR=${OUTDIR}/backup_${SERVER}_${DATTIME}.tz
TOBKSERVER=TRUE
BKSERVER=10.0.0.3
BKSVRDIR=data
case "$HOSTNAME" in
fw.miorg.org.bo)
;;
fwc3.miorg.org.bo)
;;
rodolfoap.miorg.org.bo)
rm -r /home/rodolfoap/.thumbnails/normal/* 2> /dev/null
rm -r /home/rodolfoap/.spamassassin/* 2> /dev/null
;;
*)
echo "Server configuration not found. Aborting process."
exit 1
;;
esac
# Delete trailing blanks
sed -i "s/[ \t]*$//" $CLIST
sed -i "s/[ \t]*$//" $FLIST
sed -i "s/[ \t]*$//" $TLIST
sed -i "s/[ \t]*$//" $XCLUD
# cat backup
#!/bin/bash
# -------------------------------------------------------------------
# Bash comprehensive backup script
# (c) Rodolfo Alcazar, Padep/GTZ, 02/2005, 12/2007
#
# -------------------------------------------------------------------
# This script makes a backup, having some parameters:
# FLIST: a files list, with '#' type comments and POSIX descripted
# TLIST: a tar files list, with '#' type comments and POSIX descripted
# CLIST: a commands list, with '#' type comments and POSIX descripted,
# which executes commands and returns stdio output
#
# -------------------------------------------------------------------
# Load local variables before starting script in this file, please:
. /root/bin/backup.conf
# -------------------------------------------------------------------
# Script process...
#
function echolog () {
echo "$@"|tee -a $BKLOG
}
echolog Preparing directories...
rm -r /tmp/backup.* 2> /dev/null
mkdir $BKDIR/
mkdir $OUTDIR/ 2> /dev/null
# -------------------------------------------------------------------
echolog
echolog Part 1 - Backing up system commands output
for COMMAND in $(cat $CLIST|tr ' ' '='|egrep -v '^#|^$')
do
CMDLINE=$(echo $COMMAND|sed 's/\=/ /')
CMDFILE=$(echo $BKDIR/cmd_$COMMAND|sed -e 's/\ /_/' -e 's/\=/_/')
echolog "Running \"$CMDLINE\" and saving it in $CMDFILE..."
$($CMDLINE > $CMDFILE)
done
# -------------------------------------------------------------------
echolog
echolog Part 2 - Backing up directories
for DIRLINE in $(cat $TLIST|egrep -v '^#|^$')
do
if [ -d $DIRLINE ]
then
TARFILE=$(echo tar$DIRLINE.tz|sed -e 's/\//_/g')
echolog Tarring $DIRLINE in $BKDIR/$TARFILE...
tar cvfz $BKDIR/$TARFILE -X $XCLUD $DIRLINE >>$BKLOG 2>>$BKLOG
else
echolog Directory $DIRLINE cannot be found and will not be backed up...
fi
done
# -------------------------------------------------------------------
echolog
echolog Part 3 - Backing up files
for FILE in $(cat $FLIST|grep -v '^#|^$')
do
if [ -e $FILE ]
then
echolog Copying $FILE...
cp $FILE $BKDIR/
else
echolog File $FILE cannot be found and will not be backed up ...
fi
done
# -------------------------------------------------------------------
echolog
echolog Tarring all into $BKTAR ...
tar cvfz $BKTAR $BKDIR >>$BKLOG 2>>$BKLOG
echolog
echolog Deleting temp directory $BKDIR...
rm -r $BKDIR
echolog
echolog Created: $BKTAR
if [ "$TOBKSERVER" == "TRUE" ]
then
echolog Replicating backups to bkserver ...
scp $BKTAR root@$BKSERVER://$BKSVRDIR/
scp $BKLOG root@$BKSERVER://$BKSVRDIR/
fi
echolog Done.
----------------------------------------------
Rodolfo Alcazar - rodolfo.alcazar at padep.org.bo
otbits.blogspot.com / counter.li.org: #367962
----------------------------------------------
„Wenn du fragen musst, wirst du es nie wissen.“
– Louis Armstrong als er gebeten wurde, das rhythmische Konzept „Swing“
zu erklären
Más información sobre la lista de distribución Linux