Creamos un archivo con extensión .sh en la carpeta que deseemos, el script es el siguiente (le llamaremos /home/miusuario/scripts/backup.sh):
#!/bin/bash
# variables
directorio="/home/respaldos/postgresql";
database="dbbasedatos";
fecha="`date +%Y%m%d%H%M%S`";
usuario="miusuario"
host="11.1.1.1"
export PGPASSWORD=miclave
# generar el dump y crear el log
pg_dump -U $usuario -h $host -F t -d $database|gzip -9 > $directorio/$fecha.tar.gz && echo 'Respaldo realizado con exito.' >> $directorio/bitacora.log;
Aquí una breve explicación:
#Nuestras variables
directorio: el directorio donde generaremos nuestros respaldos.
database: la base de datos a respaldar.
fecha: la fecha y hora actual que la concatenaremos con nuestro nombre de archivo.
usuario: el usuario de postgresql para generar el respaldo (debe tener permisos sobre nuestra base).
host: servidor de base de datos, aquí muy importante si nuestro usuario no tiene acceso al host de localhost nos mostrara un error, deben verificar con que host fue creado.
#Nuestros comandos
export PGPASSWORD: la contraseña de nuestro usuario, en caso de no tener contraseña omitir esta linea.
Ahora viene nuestro comando que realiza toda la operación, para mas detalle puede consultar pg_dump --help a través de la consola.
-U el nombre de usuario
-h el servidor de base de datos
-F t el formato de salida, para nuestro caso es tar
-d la base de datos a respaldar
gzip -9 comprime nuestra salida con el parámetro de la mejor compresión
$directorio/$fecha.tar.gz con nuestros parametros de las variables es donde se generara nuestro respaldo (p.e. /home/respaldos/postgresql/1701191257.tar.gz).
Nota: si nuestro usuario no tiene contraseña, podemos agregar el parámetro de -w (o bien --no-password) a la linea de nuestro comando pg_dump.
Para probarlo podemos ejecutar nuestro bash y ver nuestro resultado.
$ sh backup.sh
Hasta este punto no debería existir algún problema, solo faltaría crear nuestro cron para automatizar nuestra tarea:
$ crontab -e
nuestras lineas:
10 1 * * * /home/respaldos/scripts/backup.sh 1> /dev/null 2> /home/respaldos/errores.log
y listo hemos terminado.
No hay comentarios.:
Publicar un comentario