En el puesto debian (192.168.0.2), donde se destinará los respaldo del servidor MySQL/MariaDB (192.168.0.1), procedemos a configurar un servidor Samba que contendrá los siguientes recursos compartidos:
#/etc/samba/smb.conf
[global]
workgroup = INFORMATICA
server string = Julio Alberto Lascano - (Samba Server %h)
netbios name = DEBIAN-JULIO
map to guest = bad user
#
Depurar la información de registro
# log file
log file = /var/log/samba/log.%m
#
nivel de registro general
log level = 3
[backup-mysql]
comment = solo para grupo administracion backup server mysql
path = /home/julio/backup/mysql
browseable = yes
read only = yes
guest ok = no
write list = @administracion
valid users = @administracion
Hacemos un testparm para validar el contenido del fichero de configuración smb.conf
root@sistem:/home/julio# testparm /etc/samba/smb.conf
A continuación creamos el grupo y el usuario que manejará el acceso a samba.
Creamos el grupo administracion.
root@sistem:/home/julio# groupadd administracion
Añadimos un usuario al grupo para hacer luego las pruebas (creamos el usuario en la máquina y después su password):
root@sistem:/home/julio# useradd administracionuser
root@sistem:/home/julio# passwd administracionuser
Añadimos el usuario administracionuser al grupo administracion. Como ya existen, no usaremos
root@sistem:/home/julio# useradd -g administracion administracionuser
Sino:
root@sistem:/home/julio# usermod -g administracion administracionuser
Crear usuarios locales como usuarios de SAMBA
root@sistem:/home/julio# smbpasswd -a administracionuser
Permisos locales adecuados para los recursos compartidos SAMBA
root@sistem:/home/julio# chmod 775 /home/julio/backup/mysql
Y cambiamos el usuario y grupo propietarios al grupo que puede escribir :
root@sistem:/home/julio# chown -hR root:administracion /home/julio/backup/mysql
Reiniciamos el servidor SAMBA.
root@sistem:/home/julio# /etc/init.d/samba-ad-dc restart
Ahora desde el servidor debian mysql/mariadb (192.168.0.1) verficamos los recursos que está compartiendo el servidor SAMBA (192.168.0.2)
root@sistem:/home/julio# smbclient --list 192.168.0.2
Que nos mostrará una salida similar a esta:
root@spse:/home/julio# smbclient --list 192.168.0.2
Enter root's password:
Domain=[INFORMATICA] OS=[Windows 6.1] Server=[Samba 4.2.14-Debian]
Sharename Type Comment
--------- ---- -------
backup-mysql Disk solo para grupo administracion backup server mysql
IPC$ IPC IPC Service (Julio Alberto Lascano - (Samba Server sistem))
Domain=[INFORMATICA] OS=[Windows 6.1] Server=[Samba 4.2.14-Debian]
Finalizada la configuración del servidor Samba del puesto 192.168.0.2, procederemos a la creación de 2 (dos) scripts. en lenguaje bash.
Luego, serán agregados como tareas diarias automáticas, mediante crontab, en el Servidor MySQL/MariaDB 192.168.0.1
Los scripts :
root@spse:/home/julio/fuentes/bash# ls -l
total 8
-rwxrwx--- 1 root root 589 abr 9 14:47 backupToJulio.sh
-rwxrwxr-x 1 root root 477 abr 4 12:05 mysqldump.sh
root@spse:/home/julio/fuentes/bash#
- mysqldump.sh (Será utilizado para generar los scripts de creación de las bases de datos (estructuras de tablas y datos de las mismas) del servidor MySQL 192.168.0.1)
- backupToJulio.sh (backup bases de datos a otro disco de la red, en este caso el servidor SAMBA 192.168.0.2)
#!/bin/sh
# Esto volcará todas tus bases de datos.
# **************************************
# mysqldump.sh
# **************************************
DATE=$(date +%Y%m%d%H%M)
for DB in $(echo "show databases" | mysql --defaults-file=/etc/mysql/debian.cnf -N)
do
mysqldump --defaults-file=/etc/mysql/debian.cnf --single-transaction $DB > /root/mysql/backup/${DB}_${DATE}.sql
gzip /root/mysql/backup/${DB}_${DATE}.sql
done
# Borrar los respaldos que tengan mas de 5 dias (economiza espacio del server)
find /root/mysql/backup/ -name "*.sql*" -mtime +5 -exec rm -vf {} \;
#!/bin/sh
# **********************************************************
# backup bases de datos a otro disco de la red (192.168.0.2)
# **********************************************************
# backupToJulio.sh
# **********************************************************
# montar con cifs-utils
mount -t cifs //192.168.0.2/backup-mysql /home/julio/papelera -o username=administracionuser,password=
administracionuser
,domain=INFORMATICA
if [ $? = 0 ]; then
# copiar al puesto 192.168.0.2 (que está montado en /home/julio/papelera)
find /root/mysql/backup/ -name "*.sql*" -mtime -1 -exec cp -v {} /home/julio/papelera/ \;
umount /home/julio/papelera/
fi
Solo resta automatizar la ejecución diaria de esto scripts. Para ello, los agragaremos como una tarea cron de root. Acerca de como agragar tareas cron remítase a este tutorial
root@spse:~# crontab -l
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
25 6 * * 1-5 /home/julio/fuentes/bash/mysqldump.sh
59 11 * * 1-5 /home/julio/fuentes/bash/backupToJulio.sh
root@spse:~#
En este caso hemos configurado a cron para que ejecute mysqldump.sh (192.168.0.1) todos los días habiles (LUN-VIE) a las 06:25 AM
Y para respaldar en el otro disco (192.168.0.2) mediante backupToJulio.sh todos los días habiles (LUN-VIE) a las 11:59 AM