9 de Diciembre, 2004

El backup.sh de blackshell

En cada sistema que administro tengo uno distinto, porque en realidad nunca acabo contento con el resultado.

Todo porque cuando una copia de seguridad hace falta, malo. Aun así lo importante es que no todo se pierda y que con los ficheros guardados a buen recaudo y la memoria del sistema volvamos a tenerlo todo OK en tiempo récord.

Para estas cosas, la memoria y documentar la configuración, lo mejor es un Wiki, pero aun así tendría que hacer backup de él :).

El backup.sh que estoy usando actualmente en este servidor:

#!/bin/sh

BAK_DIR="/var/root"
BAK_TMP="/tmp"
WWW_DIR="/var/www"
REMOTE_BAK="user@IP:REMOTE_BAK_DIR"

# copiar ficheros conf
echo "Copiando ficheros:"

CP_FILES="/usr/share/sendmail/cf/mysendmail.mc /etc/pf.conf /etc/dhcpd.conf\
 /var/www/conf/*.conf /etc/ddclient.conf /etc/dhclient.conf\
 /etc/hostname.vr0 /etc/hostname.vr1 /etc/hostname.wi0\
 /etc/rc.local /etc/rc.conf.local /etc/squid/squid.conf\
 /etc/stunnel/stunnel.conf /etc/ssl/private/stunnel.pem\
 /var/named/etc/named.conf /etc/rndc.conf /etc/rndc.key /root/bin/*\
 /root/etc/* /etc/crontab /etc/mail/access /etc/mail/local-host-names\
 /etc/mail/aliases /etc/fetchmailrc /usr/patches/* /etc/bogom.conf\
 /var/spool/bogofilter/Makefile /var/spool/bogofilter/wordlist.db"

for cp_file in $CP_FILES; do
        cp_subdir="$BAK_DIR/$(echo $cp_file | \
                awk -F/ '{ print $(NF-2) "_" $(NF-1) }' -)"
        if [ ! -d $cp_subdir ]; then
                echo "  creando $cp_subdir..."
                mkdir $cp_subdir
        fi

        if [ -f $cp_file ]; then
                echo "  $cp_file"
                cp -f $cp_file $cp_subdir
        fi
done

# bases de datos
echo "Volcando DB:"

DB="blackshell"

for db in $DB; do
        echo "  $db"
        mysqldump -u dbuser -h localhost --password=dbpasswd\
         $db > $BAK_DIR/$db-dump.sql
done

# web
echo "Empaquetando www:"

TAR_WEB="htdocs htdocs-works"

for tar_file in $TAR_WEB; do
        echo "  $tar_file"
        cd $WWW_DIR && tar cf $BAK_DIR/$tar_file.tar $tar_file/
done

# comprimirlo todo
echo "Comprimiendo..."

DATE=$(date +%A)
cd $BAK_DIR && tar cfz $BAK_TMP/backup_$DATE.tar.gz .

# enviarlo
echo "Enviando..."

scp $BAK_TMP/backup_$DATE.tar.gz $REMOTE_BAK

# lipiar
echo "Limpiando..."

rm -r $BAK_DIR/* && rm $BAK_TMP/backup_$DATE.tar.gz\
 && echo OK

# EOF

No es genial y requiere de una sesión shell interactiva (me pide la contraseña para el scp), pero me vale por ahora.

Actualizado 2005-06-19

Anotación por Juan J. Martínez.

Hay 4 comentarios

Gravatar

No se porque puñetas no me funciona el TB, así que te lo pongo así:

Yo me hice un script para hacer backup's remotos con ssh y rsync, aquí te dejo en enlace por si te sirve de algo:
http://ilitel.com/josefu/blog/archives/2004/08/17/backups-remotos-con-rsync-y-ssh/

por josefu, en 2004-12-10 00:05:20

Gravatar

Sé que se puede hacer el tema de ssh automático con ssh-keygen (lo hacía con la movida del NFS), pero aun no me he puesto :P
Por cierto, el TB de wordpress está roto (creo). Échale un ojo a:
http://zootropo.f2o.org/archivos/2004/08/15/trackback/
donde creo que explican el problemilla que tiene WP al enviar los trackbacks.

por Juanjo, en 2004-12-10 00:17:43

Gravatar

Como comenta Juanjo, es posible automatizar la autenticación con ssh. Echale un vistzo a esto:
http://www.clubdelphi.com/users/saiyine/trucoslinux.php#clavespublicasssh

por Goatse, en 2004-12-12 04:00:58

Gravatar

Goatse: Si lees el artículo de Josefu, verás que él hace exactamente eso.
Yo también lo utilizaba en el montado automatizado de NFS (búsca en el archivo de blackshell).

por Juanjo, en 2004-12-12 13:21:04

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.