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 [EMAIL PROTECTED]://$BKSVRDIR/ scp $BKLOG [EMAIL PROTECTED]://$BKSVRDIR/ fi echolog Done. ---------------------------------------------- Rodolfo Alcazar - [EMAIL PROTECTED] 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