linux:scripts:protocolobackup

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
linux:scripts:protocolobackup [24/02/2012 07:29] – [esclavo] matelinux:scripts:protocolobackup [27/02/2012 10:20] (actual) – [scripts] mate
Línia 4: Línia 4:
  
 == esclavo == esclavo
-  * (1) crear una cuenta de usuario específica para copias de seguridad. Aquí dejaremos los archivos que se generan localmente (tar para archivos, mysqldump para bases de datos): ''$ useradd -c "Usuario de backup" -m -d /home/bck bck'' +  * (1) crear cuenta específica para backups: ''$ useradd -c "Usuario de backup" -m -d /home/bck bck'' 
-  * (4) configurar los scripts necesarios para el volcado de datos+  * (4) crear directorio de ficheros de backups, configurar el ''bck.ini''
   * (5) configurar en la cuenta de ROOT los cron a ejecutar   * (5) configurar en la cuenta de ROOT los cron a ejecutar
-    * 01:00 -> eliminar ficheros de backup anteriores a 1 mes: ''00 01 * * * find /home/bck/ -type f -mtime +30 -exec rm -f {} \; > /dev/null 2>&1'' +    * 01:00 -> eliminar ficheros de backup anteriores a 1 mes: ''00 01 * * * find /home/bck/backups -type f -mtime +30 -exec rm -f {} \; > /dev/null 2>&1'' 
-    * 03:00 -> volcado TAR : ''00 03 * * * > xxx /dev/null 2>&1'' +    * 02:00 -> volcado logs? 
-    * 03:30 -> volcado BBDD: ''30 03 * * * > xxx /dev/null 2>&1''+    * 03:00 -> volcado TAR : ''00 03 * * * /home/bck/bck-files.sh > /dev/null 2>&1'' 
 +    * 03:45 -> volcado BBDD: ''45 03 * * * /home/bck/bck-mysql.sh > /dev/null 2>&1'' 
 +    * 04:15 -> encriptación si es necesaria: ''15 04 * * * /home/bck/bck-gpg.sh > /dev/null 2>&1''
 == master == master
   * (0) [[linux:ssh:start|crear certificado]]   * (0) [[linux:ssh:start|crear certificado]]
-  * (2) copiarlo en el servidor remoto, en la cuenta creada a tal efecto<code>$ copy-ssh-id -i rsa_192.168.3.199.pub bck@192.168.3.163</code> +  * (2) copiarlo en el servidor remoto, en la cuenta creada a tal efecto: ''$ copy-ssh-id -i rsa_192.168.3.199.pub bck@192.168.3.163'' 
-  * (3) copiar los scripts de backup+  * (3) copiar los scripts de backup: ''$ scp -i rsa_192.168.3.199 /home/bck/bck* bck@192.168.3.163:/home/bck''
   * (6) generar nuevo script de conexión y descarga de archivos del esclavo   * (6) generar nuevo script de conexión y descarga de archivos del esclavo
     * ¿sincronización o mantener histórico en master?     * ¿sincronización o mantener histórico en master?
     * en esclavo solo los últimos 30 días     * en esclavo solo los últimos 30 días
 +
 +== scripts
 +<code bash bck.ini>
 +# BACKUP FILES
 +# directorios de los que hacer backup, separado por espacio, sin / final
 +LISTA="/etc /home/mate"
 +
 +# RUTAS
 +# Local Directory for Dump Files
 +LOCALDIR=/home/bck/
 +
 +# BDD
 +# Hostname
 +DBHOST='localhost'
 +# dbuser
 +DBUSER='root'
 +# dbpass
 +dbpasswd=''
 +
 +
 +# MISCELANEA
 +# Nombre del servidor
 +HOSTNAME='pandora'
 +# Estampacion de fecha
 +FECHA=`eval date +%y%m%d`
 +</code>
 +
 +<code bash bck-files.sh>
 +#!/bin/bash
 +
 +#
 +# file system backup
 +#
 +
 +source /home/bck/bck.ini
 +
 +# crea un tar de los directorios especificados en LISTA
 +for directorio in $LISTA
 +do
 +    DESTINO=`echo $directorio | sed -e 's/\//-/g'`
 +    tar zcpf $LOCALDIR$FECHA-$HOSTNAME$DESTINO.tar.gz $directorio/*
 +done
 +
 +exit 0
 +</code>
 +
 +<code bash bck-gpg.sh>
 +#!/bin/bash
 +FICHEROS=`ls *.tar.gz`
 +# FECHA=`eval date +%y%m%d`
 +
 +
 +for FICHERO in $FICHEROS
 +do
 +  #encripta
 +  gpg -r "Miguel Angel Torres" --encrypt $FICHERO
 +
 +  # borrado fichero original
 +  # rm -f ~/$FICHERO
 +
 +  # renombrado
 +  # mv $FICHERO.gpg $FECHA-$FICHERO.gpg
 +
 +  # borrado fichero encriptado
 +  # rm -f $FECHA-$FICHERO.gpg
 +done
 +
 +</code>
 +
 +<code bash bck-mysql.sh>
 +#!/bin/bash
 +
 +#
 +# APP
 +#
 +
 +source /home/bck/bck.ini
 +
 +# DBS=`mysql -u$DBUSER -h$DBHOST -e"show databases"`
 +DBS=`mysql -u$DBUSER -p"$DBPASSWD" -h"$DBHOST" -e"show databases"`
 +# existe version SED para eliminar /Database/
 +
 +for DATABASE in $DBS
 +do
 +        if [ $DATABASE != "Database" ]; then
 +                FILENAME=$FECHA-$HOSTNAME-mysql-$DATABASE.sql.gz
 +                mysqldump -u$DBUSER -p"$DBPASSWD" -h"$DBHOST" $DATABASE | gzip --best > $LOCALDIR$FILENAME
 +        fi
 +done
 +
 +chmod 400 $LOCALDIR*.gz
 +
 +#tar --remove-files -cf $TARPREFIX-$SUFFIX.tar $SUFFIX-*.gz
 +tar --remove-files -cf $LOCALDIR$FECHA-$HOSTNAME-mysql.tar $LOCALDIR$FECHA-$HOSTNAME-mysql*.gz
 +
 +exit 0
 +
 +</code>
 +== mejoras
 +  * parametrizar ficheros que se encriptan
 +  * quitar GZIP del mysqldump y hacer un TAR -cz ¿?
  
  • linux/scripts/protocolobackup.1330097385.txt.gz
  • Darrera modificació: 24/02/2012 07:29
  • per mate