Copias de seguridad automatizada por medio de contenedor de los gestores de bases de datos MariaDB y PostgreSQL
Instalacion
Instalacion Desatendida
- Instalando bkpxdb via curl
sh -c "$(curl -fsSL https://raw.githubusercontent.com/GorillaTi/bkpxdb/refs/heads/main/install.sh)"
- Instalando bkpxdb via wget
sh -c "$(wget https://raw.githubusercontent.com/GorillaTi/bkpxdb/refs/head s/main/install.sh -O -)"
Instalacion Manual
Crear los directorios base necesarios
mkdir -p bkpxdb bkpxdb/src/list bkpxdb/logs/app bkpxdb/logs/cron
Cambiarse al directorio bkpxdb
cd bkpxdb
Descargando archivos necesarios
- db_list.csv
wget -nc -O "src/list/db_list.csv" https://raw.githubusercontent.com/GorillaTi/bkpxdb/refs/heads/main/src/list/db_list.csv.example
- bkpxdb-cron
wget -nc -O "data/config/bkpxdb-cron" https://raw.githubusercontent.com/GorillaTi/bkpxdb/refs/heads/main/src/cront.example
- crontab
wget -nc -O "src/crontab" https://raw.githubusercontent.com/GorillaTi/bkpxdb/refs/heads/main/src/crontab.example
- .conf
wget -nc -O "src/.conf" https://raw.githubusercontent.com/GorillaTi/bkpxdb/refs/heads/main/src/.conf.example
- docker-compose.yml
wget -O "docker-compose.yml" https://raw.githubusercontent.com/GorillaTi/bkpxdb/refs/heads/main/docker-compose.yml
Estructura de directorios y archivos
bkpxdb
+-- data
| +-- config
| +-- bkpxdb-cron
+-- docker-compose.yml
+-- logs
| +-- app
| +-- cron
+-- src
+-- .conf
+-- crontab
+-- list
+-- db_list.csv
+-- db.lst
+-- data
| +-- config
| +-- bkpxdb-cron
+-- docker-compose.yml
+-- logs
| +-- app
| +-- cron
+-- src
+-- .conf
+-- crontab
+-- list
+-- db_list.csv
+-- db.lst
Para visualizar use el comando
tree -a
Iniciar el servicio
docker compose up -d
Cambiando Permisos del archivo bkpxdb-cron
- Con el contenedor en ejecucion
docker exec -it bkpxdb chown root:root /etc/cron.d/bkpxdb-cron
- Sin el contenedor en ejecucion
sudo chown root:root /data/config/bkpxdb-cron
Configuracion Basicas
Configuracion archivo db_list.csv
vim src/list/db_list.csv
Ejemplo:
sysadmin;$Sistemas.123;172.16.20.20;3303;sysadmin;mysql
pgadmin;$Password.123;172.16.20.21;5433;sysadmin;pg
pgadmin;$Password.123;172.16.20.21;5433;sysadmin;pg
Es un archivo csv separado por comas con la siguiente estructura
Sintaxis archivo db_list.csv
sysadmin;$Sistemas.123;172.16.20.20;3303;sysadmin;mysql
| | | | | |
| | | | | |__ Tipo DB (mysql,mdb,pg)
| | | | |__________ Usuario
| | | |________________ Puerto
| | |________________________ IP Servidor
| |_______________________________________ Contrasena
|________________________________________________ Usuario
| | | | | |
| | | | | |__ Tipo DB (mysql,mdb,pg)
| | | | |__________ Usuario
| | | |________________ Puerto
| | |________________________ IP Servidor
| |_______________________________________ Contrasena
|________________________________________________ Usuario
Configuracion archivo crontab
docker exec -it bkpxdb vim crontab/crontab
Ejemplo:
# Copias de seguridad programadas
# Todos los dias a las 23:30
30 23 * * * root /app/scripts/backup.sh
# Todos los dias a las 13:30
30 13 * * * root /app/scripts/backup.sh
# Todos los dias a las 19:30
30 19 * * * root /app/scripts/backup.sh
# Pruebas de funcionamiento de cron
* * * * * root date >> /var/log/cron/cron.log 2>&1
* * * * * root /app/scripts/cron-test.sh
*/10 * * * * root truncate -s 0 /var/log/cron/cron*.log
# New line charter required!
# Todos los dias a las 23:30
30 23 * * * root /app/scripts/backup.sh
# Todos los dias a las 13:30
30 13 * * * root /app/scripts/backup.sh
# Todos los dias a las 19:30
30 19 * * * root /app/scripts/backup.sh
# Pruebas de funcionamiento de cron
* * * * * root date >> /var/log/cron/cron.log 2>&1
* * * * * root /app/scripts/cron-test.sh
*/10 * * * * root truncate -s 0 /var/log/cron/cron*.log
# New line charter required!
Sintaxis de crontab
* * * * * NOMBRE_USUARIO COMANDO/SCRIPT-A-EJECUTAR
| | | | | | |____ Comando a ejecutar
| | | | | |___________________ Usuario que ejecutara el job
| | | | |_____________________ Dia de la semana (0 - 6) (0 es domingo, o utilice nombres)
| | | |_______________________ Mes (1 - 12),* significa cada mes
| | |_________________________ Dia del mes (1 - 31),* significa cada dia
| |___________________________ Hora (0 - 23),* significa cada hora
|_____________________________ Minuto (0 - 59),* significa cada minuto
| | | | | | |____ Comando a ejecutar
| | | | | |___________________ Usuario que ejecutara el job
| | | | |_____________________ Dia de la semana (0 - 6) (0 es domingo, o utilice nombres)
| | | |_______________________ Mes (1 - 12),* significa cada mes
| | |_________________________ Dia del mes (1 - 31),* significa cada dia
| |___________________________ Hora (0 - 23),* significa cada hora
|_____________________________ Minuto (0 - 59),* significa cada minuto
Cargando configuracion
Situarse en el directorio dkpxdb y ejecutar el comando
docker exec -it bkpxdb cron-config
Ejecucion manual
docker exec -it bkpxdb /app/scripts/backup.sh
Funcionalidades futuras
- Envio de los archivos
logspor medio de correo electronico. - Copia automatizada de los archivos de copia de seguridad a un dispositivo de almacenamiento de red.
Revision de Logs
tail -f logs/app/error.log
Archivos de Logs:
- logs/app/error.log
- logs/app/info.log
- logs/app/warning.log
- logs/cron/cron-test.log
- logs/cron/cron.log