Mostrando entradas con la etiqueta backup. Mostrar todas las entradas
Mostrando entradas con la etiqueta backup. Mostrar todas las entradas

martes, 12 de marzo de 2013

Backup programado de los equipos CISCO usando TFTP

A veces se nos puede olvidar realizar el típico write mem o copy running-config startup-config y ya no te digo nada si tienes que copiar la configuración al servidor tftp (que si no me acuerdo de la IP, ...).

Por eso puedes tomar la decisión de que todos los días se guarde la configuración actual "copy runnig-config startup-config" y además esta configuración la copiamos a un servidor TFTP.

La variable $h indica el nombre del host (router, switch, ...). Recomiento aprovechar para crear carpetas en el servidor TFTP, una para cada host.

La variable $t indica la fecha y hora a la que se realiza la copia de la configuración.


De esta forma obligamos a que se guarde una copia de la configuracion cada vez que realizamos write mem.
archive
 path tftp://IP_SERVIDOR_TFTP/$h/$h-$t
 write-memory


Programamos una tarea que guarda la configuración que se esta ejecutando:

kron policy-list backup
 cli write memory

Programamos la ejecución de la tarea a las 0h todos los días:
kron occurrence backup at 0:00 recurring
 policy-list backup

En principio todas las configuraciones son texto y no deberían ocupar mucho pero si programamos una copia al día son 365 configuraciones al año. Tened cuidado con que no se llene el servidor TFTP, pues dejaría de hacer copias de las configuraciones.


Bibliografía:
http://www.cisco.com/en/US/products/sw/iosswrel/ps1835/products_tech_note09186a008020260d.shtml#ab
http://www.certificationkits.com/cisco-certification/Cisco-CCNP-TSHOOT-Complex-Network-Maintenance.html

lunes, 17 de septiembre de 2012

Cómo modificar la programación de backups en Zimbra

Desde la web del administrador de Zimbra podemos modificar algunos parámetros como por ejemplo el directorio donde almacenamos los backups, el tipo de backup, etc.

Sin embargo si queremos ir al detalle no es posible desde la web.
Para realizar una programación personalizada necesitamos acceder por ssh (podéis usar el cliente putty) al servidor y utilizando el usuario zimbra llamar al comando:

zmschedulebackup



para ver la programación actual ejecutaremos:
zimbra@zimbra01:/root$ zmschedulebackup -q

Current Schedule:

        f 0 1 * * 6 -a all --mail-report
        i 0 1 * * 0-5 --mail-report
        d 28d 0 0 * * * --mail-report

Ó

zimbra@zimbra01:/root$ zmschedulebackup -s
 "-a all --mail-report" f "0 1 * * 6"
 "--mail-report" i "0 1 * * 0-5"
 "--mail-report" d 28d "0 0 * * *"



por defecto la programación es esta:

zimbra@zimbra01:/root$ zmschedulebackup -s
 "-a all --mail-report" f "0 1 * * 6"
 "--mail-report" i "0 1 * * 0-5"
 "--mail-report" d 1m "0 0 * * *"


Esto significa que zimbra por defecto realiza un backup completo (f - full) cada día 6 de la semana a la 1am, realiza también una copia incremental (i - incremental) los días 0 a 5 de la semana a la 1am y elimina (d - delete) todos los backups que sean más antiguos que un mes.

Si queremos cambiar (Reemplazar) la configuración actual de backup por otra, en nuestro caso deseamos que se eliminen las copias más antiguas de 28días. Debemos llamar al comando "zmschedulebackup" con la opción "-R".

zmschedulebackup -R "--mail-report" f "0 1 * * 6" i "0 1 * * 0-5" d 28d "0 0 * * *"

Adjunto la ayuda del comando para que se vean las opciones más claras.


zimbra@zimbra01:/root$ zmschedulebackup --help

Schedule regular backups

Usage: zmschedulebackup [-q|-D|-s|-F| [{-A|-R} [zmbackup options] { <backup-type> } { <backup-schedule> } ] ]
  -q: query (default command) - prints existing schedule
  -s: save schedule to text format for easy restoration
  -F: flush - remove current schedule (cancel all scheduled backups)
  -A: append - adds specified backup to current schedule
  -R: replace - replace current schedule with specified schedule
  -D: default - replace current schedule with DEFAULT schedule

  Options that will be passed to zmbackup:
  -n: no compression - Backs up blobs as individual files rather than in zip files.
  -z: compress - Backs up blobs in compressed zip files.  Ignored if --zipStore is specified.
  --zipStore: - Backup up blobs in zip files without compression.
  -t: target - backup target location (default is /opt/zimbra/backup)
  -a: account - account specific (default is all)
  --mail-report: Send an email report to the admin user.
  --server: server - Mail server hostname. Default is localhost.
  --sync: Runs full backup synchronously.
  --excludeBlobs: Exclude blobs from full backup; if unspecified, use server config
  --includeBlobs: Include blobs in full backup; if unspecified, use server config
  --excludeHsmBlobs: Exclude blobs on HSM volumes from full backup; if unspecified, use server config
  --includeHsmBlobs: Include blobs on HSM volumes in full backup; if unspecified, use server config
  --excludeSearchIndex: Exclude search index from full backup; if unspecified, use server config
  --includeSearchIndex: Include search index in full backup; if unspecified, use server config

  Backup Mode (Standard or Auto-Grouped) comes from global/server config zimbraBackupMode

  Cron schedule:
        backup-type: <i|f|d arg>
        i: incremental backup (not needed in Auto-Grouped backup mode)
        f: full backup
        d <arg>: delete backups. <arg> is n{d|m|y}
        backup-schedule: crontab style time specifier, QUOTED.  See crontab(5)
                Fields are:
                        minute         0-59
                        hour           0-23
                        day of month   1-31
                        month          1-12
                        day of week    0-7 (0 or 7 is Sun, or use names)

        Default schedule in Standard backup mode is:
        f    0 1 * * 6
        i    0 1 * * 0-5
        d 1m 0 0 * * *

        Default schedule in Auto-Grouped backup mode is:
        f    0 1 * * 0-6
        d 1m 0 0 * * *

miércoles, 9 de febrero de 2011

Script para realizar backup de nagios

#!/bin/bash
#
#Script de backup de nagios
#

#CONFIGURAR VARIABLES

FECHA=`date +%Y%m%d%H%M%S`
BACKUP_DIR=/root/backups
BACKUP_FILE=$BACKUP_DIR/$FECHA.backup-nagios.tar.gz

FILES_APACHE="/etc/cron.daily/apache2 /etc/apache2 /etc/logrotate.d/apache2 /etc/php5/apache2 /etc/default/apache2 /usr/sbin/apache2 /usr/lib/apache2 /usr/lib/apache2/mpm-prefork/apache2 /usr/lib/apache2/mpm-itk/apache2 /usr/lib/apache2/mpm-event/apache2 /usr/lib/apache2/mpm-worker/apache2 /usr/share/apache2 /usr/share/bug/apache2 /var/run/apache2 /var/lock/apache2 /var/lib/update-rc.d/apache2 /var/cache/apache2"
FILES_NAGIOS="/etc/nagios  /etc/nagios3  /etc/nagios-plugins /usr/lib/nagios /usr/lib/nagios3 /usr/share/nagios /usr/share/nagios3 /usr/share/nagios-plugins /usr/share/nagios-snmp-plugins /var/run/nagios3 /var/lib/update-rc.d/nagios3 /var/lib/nagios3 /var/cache/nagios3 /var/lib/nagios"
FILES_NAGIOSQL="/etc/nagiosql /usr/share/lintian/overrides/nagiosql /usr/share/nagiosql /usr/share/doc/nagiosql"
FILES_NAGVIS="/etc/nagvis /usr/share/nagios3/htdocs/nagvis /usr/share/lintian/overrides/nagvis /usr/share/nagvis /usr/share/nagvis/htdocs/nagvis /var/lib/nagvis"
FILES_PNP4NAGIOS="/etc/pnp4nagios /usr/lib/pnp4nagios /usr/share/pnp4nagios /var/lib/pnp4nagios /var/lib/pnp4nagios /var/spool/pnp4nagios"
FILES_PHPMYADMIN="/etc/phpmyadmin /usr/share/phpmyadmin /usr/share/dbconfig-common/data/phpmyadmin /var/lib/phpmyadmin"

#Backup de archivos
tar cvfz $BACKUP_FILE $FILES_APACHE $FILES_NAGIOS $FILES_NAGIOSQL $FILES_NAGVIS $FILES_PNP4NAGIOS $FILES_PHPMYADMIN

Script backup bases de datos mysql

#script que guarda copia de todas la bases de datos
#!/bin/bash
## BEGIN CONFIG
##
FECHA=`date +%Y%m%d%H%M%S`HOST=localhost
USER=root
PASS=secretodeusuario
BACKUP_DIR=/root/backups

## END CONFIG ##
if [ ! -d $BACKUP_DIR ];
then
        mkdir -p $BACKUP_DIR
fi

# Backup de MySQL
MYSQL_DBS=$(mysqlshow -h $HOST -u $USER -p$PASS | awk ' (NR > 2) && (/[a-zA-Z0-9]+[ ]+[|]/) && ( $0 !~ /mysql/) { print $2 }');

for DB in $MYSQL_DBS ;
do
        echo "* Backuping MySQL data from $DB@$HOST..."
        mysqldump -h $HOST -u $USER -p$PASS $DB > $BACKUP_DIR/$FECHA.mysql_$DB.sql
done
ls -l $BACKUP_DIR

sábado, 9 de octubre de 2010

Script para realizar backups de un servidor web

Este script lo utilizo para hacer backups de servidores web, en este caso ademas es servidor FTP.

Envidentemente se puede ampliar si el directorio que utilizamos como backup es un recurso compartido o es un disco duro USB, puesto que aprovecharíamos para montar y desmontar los medios dentro del mismo script, cosa que recomiendo bastante a la hora de realizar backups.

Otra manera es modificando el comando tar para que realice la copia en una unidad de cintas.

###################################################################
#    Script de copias de seguridad de las web                     #
###################################################################
#
# Este script siempre utiliza rutas completas de
# archivos para que pueda ser ejecutado desde
# cualquier lugar del sistema de archivos
#
###################################################################
##
## Definir VARIABLES
##

SERVIDOR=servidorweb #nombre del servidor

FECHA=`date +%Y%m%d_%H%M%S`
NUM_BACKUPS=10                                             # numero de backups que queremos rotar
                                                        # con cron decidimos cuando se ejecuta cada backup
SALIDA_TAR=1
SALIDA_MYSQL=1
EMAIL_INFORME=micorreo@midominio.com                       #Correo al que enviamos alertas
ASUNTO="BACKUP ERROR# en servidor web $SERVIDOR"        #Asunto del correo de alerta
EMAIL_FROM=webmaster@midominio.web                        #Quien envia el correo de alerta

#Directorio donde guardamos el backup
COMPRIMIR="tar cvfz "
EXT_BACKUP="tar.gz"
DIR_BACKUP="/root/backups"
DIR_BACKUP_RAIZ=$DIR_BACKUP/raiz

DIR_INFORMES=/root/informes
EXT_INFORME="txt"

#CONFIGURACION DEL SERVIDOR
ETC_FILE1="/etc/passwd"
ETC_FILE2="/etc/group"
ETC_FILE3="/etc/shadow"
ETC_FILE4="/etc/vsftpd.conf"

ETC_DIR1="/etc/apache2"
ETC_DIR2="/etc/phpmyadmin"

#directorio donde estan las web
DIR_WEB="/home"

#Base de Datos de la WEB
BBDD=bbdd_web
BBDD_USUARIO=root
BBDD_PASSWD=Clave#de#mySQL
BACKUP_FILE_SQL=$DIR_BACKUP_RAIZ/backup.$SERVIDOR.$FECHA.sql


#############
#   MAIN
#############

##Averiguar cual fue la ultima copia
FILE_ULTIMO="$DIR_BACKUP/ultimo_backup.txt"  #archivo que guarda el numero de la última copia
ULTIMO=`cat $FILE_ULTIMO`
if [ $ULTIMO -lt $NUM_BACKUPS ]
then
NUEVO=`expr $ULTIMO + 1`
else
NUEVO=1
fi

## Nombres de archivo para la copia nueva y su log
FILE_BACKUP=$DIR_BACKUP/$NUEVO.backup_$SERVIDOR.$FECHA.$EXT_BACKUP
FILE_INFORME_BACKUP=$DIR_INFORMES/$NUEVO.backup_$SERVIDOR.$FECHA.$EXT_INFORME

##
## Borrar la copia mas vieja
##
echo Hacer limpieza de backups anteriores >> $FILE_INFORME_BACKUP
rm -vf $DIR_BACKUP/$NUEVO.backup_$SERVIDOR.*.$EXT_BACKUP >> $FILE_INFORME_BACKUP
rm -vf $DIR_INFORMES/$NUEVO.backup_$SERVIDOR.*.$EXT_INFORME >> $FILE_INFORME_BACKUP
rm -vfR $DIR_BACKUP_RAIZ

echo Crear estructura de directorios >> $FILE_INFORME_BACKUP
mkdir $DIR_BACKUP_RAIZ

echo Exportar la BBDD de la web de BICBERRILAN >> $FILE_INFORME_BACKUP
mysqldump --opt --password=$BBDD_PASSWD --user=$BBDD_USUARIO $BBDD > $BACKUP_FILE_SQL
SALIDA_MYSQL=$?

echo Comprimir el directorio raiz del backup >> $FILE_INFORME_BACKUP
$COMPRIMIR $FILE_BACKUP $DIR_WEB $BACKUP_FILE_SQL $ETC_FILE1 $ETC_FILE2 $ETC_FILE3 $ETC_FILE4 $ETC_DIR1 $ETC_DIR2 >> $FILE_INFORME_BACKUP
SALIDA_TAR=$?

echo $NUEVO > $FILE_ULTIMO

#COMANDO PARA ENVIAR CORREO
ENVIAR_MAIL=mailx -s $ASUNTO $EMAIL_INFORME  -- -f $EMAIL_FROM < $FILE_INFORME_BACKUP

if [ $SALIDA_TAR!=0 ]; then
        $ENVIAR_MAIL
else
        if [ $SALIDA_MYSQL!=0 ]; then
                $ENVIAR_MAIL
        fi
fi