Está en la página 1de 32

Operaciones de backup

Introducción
¿Qué es un backup?
En términos simples: es un respaldo.

¿Necesito backups? ¿Por qué?


Claro que sí por razones como estas:

● Eliminación casual o intencional de información.


● Pérdida de información por virus (ejm: ransomware).
● Pérdida por ataques informáticos dirigidos.
● Pérdida de información por fallas de hardware.
● Desastres externos (incendios, inundación, robo físico, etc).
● Necesidad de versiones anteriores de archivos por X razones.
● Cumplimiento de políticas y otras regulaciones legales.
Backups en Linux
¿Cómo o con qué hago backups en Linux?
Existen varias alternativas Open Source como:

● Herramientas nativas (tar, cpio, rsync)


● Software dedicado (mondo rescue, rsnapshot, backupninja, etc.)
● Software de nivel empresarial (Bacula, Amanda)

Otro software de nivel empresarial de tipo comercial (licenciado o


de pago) es:

● IBM Tivoli Storage Manager (TSM)


● Arkeia Network Backup
● Symantec Netbackup (Veritas)
● HP Data Protector
Backups en Linux
¿A qué debo sacar backup?
A lo que consideres es importante para tu entorno, tu trabajo, tu
empresa y tu criterio. A modo general esto puede ser:

● Configuraciones del sistema operativo.


● Archivos de usuarios.
● Instalación y datos de aplicaciones.
● Configuraciones de aplicaciones.
● Registros (logs) del sistema y aplicaciones.
● Bases de datos.
● Imágenes de máquinas virtuales.
● Snapshots (instantáneas) de distintos tipos de datos (bases de
datos, configuraciones, máquinas virtuales, etc).
Backups en Linux
¿Algún ejemplo para poder guiarme?
Cada aplicación tiene sus propias rutas de archivos y/o directorios
pero aquí algunas de las más comunes:

● Configuraciones del sistema operativo.


/etc
/boot
/var/spool/cron

● Archivos de usuarios
/home

● Instalación y datos de aplicaciones.


● Squid (Proxy server)

/etc/squid
/var/log/squid
Backups en Linux
● Instalación y datos de aplicaciones.
● BIND (DNS server)

/var/named
/etc/*named*
● Apache (Web server)

/etc/httpd/conf
/etc/httpd/conf.d
/var/www/html
/var/log/httpd
● Samba (Servidor de archivos)

/etc/samba
● OpenLDAP (Servidor de directorios LDAP)

/etc/ldap
/var/lib/ldap
Backups en Linux
● Instalación y datos de aplicaciones.
● Postfix(MTA, servidor SMTP)

/etc/postfix
/var/log/maillog
● Cyrus IMAP (Servidor POP3 e IMAP)

/etc/cyrus.conf /etc/imapd.conf
/var/spool/imap
/var/lib/imap
/var/log/maillog
● MySQL (Servidor de bases de datos)

/etc/my.cnf
/var/lib/mysql
● Registros (logs) del sistema y aplicaciones.
/var/log
Backups en Linux
● Bases de datos
● MySQL

/var/lib/mysql
● PostgreSQL

/var/lib/pgsql/data
Tipos de backups
La siguiente es una definición que podría variar en la literatura de una u otra
solución de backup pero normalmente se puede tener el consenso de estos 3
tipos de backups:

●Completo (Full)
Respalda la información en su totalidad. No se discrimina nada.

● Diferencial
Respalda solo la información que ha variado desde la fecha del
último backup completo.

● Incremental
Respalda solo la información que ha variado desde el último
backup, cualquiera que haya sido (Completo, Diferencial o
Incremental).
Dispositivos y medios de
almacenamiento
Los respaldos suelen realizarse a algún medio de almacenamiento para el cual
se puede usar opcionalmente un dispositivo especializado. Entre ellos tenemos:

● Medios ópticos: CDROM, DVD, Bluray


Dependiendo del tamaño de los backups, es posible usar uno de
estos medios. La desventaja es que suele ser un proceso manual
y los medios son propensos a ser dañados fácilmente además de
tener poca capacidad.
Dispositivos y medios de
almacenamiento
●Medios magnéticos: discos duros
Son los más usados hoy en día, ya sean discos internos (SATA,
SAS), externos (SATA interfaz USB) o en red (SATA en NAS o
SAN). Son relativamente fáciles de conseguir y configurar, sin
embargo no están diseñados para almacenar datos por más de 5
años en promedio.
Dispositivos y medios de
almacenamiento
● Medios magnéticos: cintas
Son las más comunes en empresas medianas y grandes que se
toman en serio sus respaldos. Son de gran capacidad y las cintas
están hechas para tener un tiempo de vida de 30 años o incluso
mucho más en condiciones ambientales apropiadas.
Requiere el uso de un dispositivo especializado (unidad de cintas)
que escriba y lea los cartuchos.
Software de respaldos: tar
● Es una herramienta nativa de Linux y presente en todos los
sistemas operativos UNIX (Ejm: Solaris, FreeBSD, AIX, etc).
● En Linux, tar soporta backups completos e incrementales.
● Es labor del administrador configurar scripts propios que creen la
lógica de los respaldos en una manera organizada, sostenible en
el tiempo y automatizada.
● Ejemplo de backup completo con el script /scripts/bkfull.sh:
#!/bin/bash
DIRS="/etc /home /var/log /var/spool/cron"
DATE=$(date +%Y%m%d)
BKDIR=/backup
MAXFULL=4
SNAP=$BKDIR/.snap-file
mkdir -p $BKDIR 2> /dev/null
rm -f $SNAP
tar --listed-incremental=$SNAP -czf $BKDIR/backup-full-${DATE}.tar.gz
$DIRS
ls -tr $BKDIR/backup-full-*.tar.gz | head -n -${MAXFULL} | xargs rm -f
Software de respaldos: tar
● Ejemplo de backup incremental con el script /scripts/bkincr.sh:
#!/bin/bash
DIRS="/etc /home /var/log /var/spool/cron"
DATE=$(date +%Y%m%d)
BKDIR=/backup
MAXINCR=7
SNAP=$BKDIR/.snap-file
mkdir -p $BKDIR 2> /dev/null
tar --listed-incremental=$SNAP -czf $BKDIR/backup-incr-${DATE}.tar.gz
$DIRS
ls -tr $BKDIR/backup-incr-*.tar.gz | head -n -${MAXINCR} | xargs rm -f

● Programación de los scripts en /etc/crontab:


0 0 * * 1-6 root /scripts/bkincr.sh
0 0 * * 7 root /scripts/bkfull.sh
Software de respaldos: rsnapshot
● Es un software de backup sencillo, basado en rsync, que permite
respaldar información de equipos locales y remotos a través de
SSH.
● Se caracteriza además por usar enlaces duros para ahorrar
espacio en disco.
● Su configuración es simple y permite tener listo un sistema de
respaldos en pocos minutos.
● En CentOS, se instala desde el repositorio EPEL:
# yum install epel-release
# yum install rsnapshot
● Su archivo de configuración está en /etc/rsnapshot.conf
● Para poder hacer respaldos de hosts remotos es necesarios
configurar el acceso SSH con el usuario root utilizando un par de
llaves privadas/públicas.
Software de respaldos: rsnapshot
● Este es un ejemplo de las directivas a configurar:

snapshot_root /backup/rsnapshot
cmd_ssh /usr/bin/ssh
interval daily 7
interval weekly 4
# Backup del servidor local
backup /etc/ localserver/
backup /var/log/ localserver/
backup /data/ localserver/
# Backup del servidor srvapp01
backup root@srvapp01:/home/ srvapp01/ exclude=backup
backup root@srvapp01:/etc/ srvapp01/
backup root@srvapp01:/var/log/ srvapp01/
# Backup del servidor srvwinpdc
backup /mnt/srvwinpdc/data srvwinpdc/
backup /mnt/srvwinpdc/Users srvwinpdc/
Software de respaldos: rsnapshot
● Para respaldar el servidor Windows, srvwinpdc, instalamos:
# yum install cifs-utils

● Luego configuramos /etc/fstab para montarlo automáticamente:


# vi /etc/fstab
----------------------------------------------------------------
//srvwinpdc/C /mnt/srvwinpdc cifs
defaults,credentials=/etc/smb.auth 0 0
----------------------------------------------------------------

● Creamos luego el archivo de credenciales:


# vi /etc/smb.auth
------------------------
username=winadmin
password=P4ssw0rd./+
------------------------
Software de respaldos: rsnapshot
● Creamos el punto de montaje, ajustamos permisos y montamos:
# mkdir /mnt/srvwinpdc
# chmod 600 /etc/smb.auth
# mount /mnt/srvwinpdc

● Ejecutamos un primer respaldo de tipo daily para probar:


# rsnapshot daily

● Programación de los respaldos con rsnapshot en /etc/crontab:


0 0 * * 1-6 root /bin/rsnapshot daily
0 0 * * 7 root /bin/rsnapshot weekly
Software de respaldos: Bacula
Desde binarios
Bacula se instala desde binarios utilizando YUM:

# yum install bacula-client bacula-storage bacula-director


bacula-console bacula-console-bat mariadb-server -y

Eso incluye los paquetes de Bacula y el motor de BD MariaDB (MySQL).


Software de respaldos: Bacula
Instalación en Windows
Descargar la versión de Bacula para Windows (solo el servicio Client) desde
http://www.bacula.org y ejecutarlo con los parámetros por defecto (Siguiente, siguiente...)
Software de respaldos: Bacula
Instalación en Windows
Software de respaldos: Bacula
Instalación en Windows
Software de respaldos: Bacula
Instalación en Windows
Software de respaldos: Bacula
Servicio Storage (/etc/bacula/bacula-sd.conf)
Se crea un dispositivo de almacenamiento en disco interno con una configuración como
la siguiente:

Device {
Name = FileStorage
Media Type = File
Archive Device = /bacula/File
LabelMedia = yes
Random Access = Yes
AutomaticMount = yes
RemovableMedia = no
AlwaysOpen = no
}

Acá se define un dispositivo de nombre FileStorage y tipo de medio de


almacenamiento File (archivos), en el directorio /bacula/File con algunos parámetros
complementarios normalmente constantes.
Software de respaldos: Bacula
Servicio Director (/etc/bacula/bacula-dir.conf)
Se crea la asociación para que el Director escriba los datos usando el dipositivo de
almacenamiento definido en la diapositiva anterior:

Storage {
Name = File
Address = 192.168.1.99
SDPort = 9103
Password = "@@SD_PASSWORD@@"
Device = FileStorage
Media Type = File
}

Acá se define la IP y puerto del servicio Storage así como la clave para autenticarse a él.
De los varios dispositivos que puede tener dicho Storage, va a usar aquell llamado
FileStorage y cuyo medio de almacenamiento sea de tipo File. Esta asociación del
Director con el Storage recibe el nombre File también.
Software de respaldos: Bacula
Servicio Director (/etc/bacula/bacula-dir.conf)
Ahora se define un Pool (grupo de volúmenes) para los respaldos de prueba que
usaremos:

Pool {
Name = Total
Pool Type = Backup
Storage = File
Recycle = yes
Autoprune = yes
Volume Retention = 12 months
Volume Use Duration = 12 hours
Maximum Volume Bytes = 50G
Maximum Volumes = 100
Label Format = Total-
}

El Pool tiene como nombre Total y de tipo Backup (para respaldos). Los volúmenes de
este Pool los escribe usando la asociación Director<->Storage de nombre File y les
asignará a ellos una serie de parámetros de retención y/o rotación particulares.
Software de respaldos: Bacula
Servicio Director (/etc/bacula/bacula-dir.conf)
Ahora se define un Fileset para decidir qué cosa respaldar:
FileSet {
Name = srvbacula_fileset
Include {
Options {
wildfile = "*.gz"
exclude = yes
}
Options {
compression=GZIP
signature=SHA1
}
File = /etc
File = /home
File = /root
File = /var/spool/cron
File = /var/log
}
}

El FileSet se llama srvbacula_fileset y respalda las rutas /etc, /home, /root,


/var/spool/cron y /var/log pero excluyendo los comprimidos de extensión .gz.
Software de respaldos: Bacula
Servicio Director (/etc/bacula/bacula-dir.conf)
Ahora se define un Client, es decir, a quién realizar el respaldo:

Client {
Name = srvbacula
Address = 192.168.1.21
FDPort = 9102
Catalog = MyCatalog
Password = "ClaveSeguraDelCliente"
File Retention = 30 days
Job Retention = 6 months
AutoPrune = yes
}

Este cliente se llama srvbacula el cual escucha en una IP y puerto específicos. Usa el
catálogo por defecto de Bacula y se autentica a él con una clave robusta. Adicionalmente
se define unos parámetros por defecto de rotación de archivos para todos los trabajos de
este cliente.
Software de respaldos: Bacula
Servicio Director (/etc/bacula/bacula-dir.conf)
Finalmente, la definición del trabajo de respaldo que será programado para su ejecución:

Job {
Name = srvbacula_job
JobDefs = DefaultJob
Client = srvbacula
FileSet = srvbacula_fileset
Pool = Total
}

Este trabajo agrupa las definiciones ya existentes como el cliente, fileset, pool y otros
atributos heredados de una plantilla (DefaultJob) que se convierte en la unidad
programable de respaldo para su ejecución.
Software de respaldos: Bacula
Inicio de servicios previos
Se debe iniciar la base de datos MariaDB:

# systemctl start mariadb

Inicialización del catálogo


Antes que se ejecute Bacula por primera vez se debe inicializar el catálogo. Esto consiste
en crear la base de datos, sus tablas y asignar los permisos necesarios.

# cd /usr/libexec/bacula
# ./create_mysql_database -p
# ./make_mysql_tables -p
# ./grant_mysql_privileges -p

Verificar sintaxis e iniciar Bacula


Verificar si la configuración está bien y luego iniciar los servicios Client, Storage y
Director:

# bacula-dir -t ; bacula-sd -t ; bacula-fd -t


# systemctl start bacula-fd ; systemctl start bacula-sd
# systemctl start bacula-dir

También podría gustarte