From 1e7c190f1bed687acce6b1419811e4fb329e3d12 Mon Sep 17 00:00:00 2001 From: David Itehua Xalamihua Date: Sun, 15 Jun 2025 15:47:55 -0600 Subject: [PATCH] inicio repositorio gitea --- README.md | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++ formha_bu.sh | 44 +++++++++++++++++++++++++++++ 2 files changed, 122 insertions(+) create mode 100644 README.md create mode 100644 formha_bu.sh diff --git a/README.md b/README.md new file mode 100644 index 0000000..c1b4a64 --- /dev/null +++ b/README.md @@ -0,0 +1,78 @@ +### ENTORNO PREPARATIVO DE SCRIPT BACKUP FORMHA Y FOLDER UPLOADS + +#### Con permisos de administrador (NO RECOMENDADO) + +```bash +# 1.- EDITAR EL ARCHIVO .pgpass +sudo nano /root/.pgpass + +# 2.- Añadir la linea con el siguiente formto: host:puerto:base_de_datos:usuario:contraseña EJEMPLO: +127.0.0.1:5432:db_ejemplo:usr1:pswdUsr1 + +# 3.- Guardas y cierras +``` + +Cambiamos los permisos del archivo .pgpass: +```bash +sudo chmod 600 /root/.pgpass +``` + +##### 🔐 **Cambia los permisos del archivo `/root/.pgpass` a `600`**: +- `sudo`: ejecuta el comando con privilegios de **superusuario**, ya que estás modificando un archivo dentro de `/root`. +- `chmod 600`: establece los **permisos del archivo** para que **solo el propietario pueda leer y escribirlo**. +- `/root/.pgpass`: es el **archivo de contraseñas de PostgreSQL** que se usa para evitar que `pg_dump`, `psql`, etc. pidan contraseña al ejecutarse. +##### 🧾 ¿Qué significa `600`? + +- **`6`** = lectura (`r`) + escritura (`w`) = `rw-` para el **dueño (root)**. +- **`0`** = sin permisos para **grupo**. +- **`0`** = sin permisos para **otros usuarios**. + +Luego le das permisos de ejecución al script **`formha.bu.sh`** mediante el comando: +```bash +sudo chmod +x /ruta/al/script/bu_formha.sh +``` + +Creas la tarea en **crontab**: +```bash +sudo crontab -e +``` + +Añades la línea donde ejecutar la tarea, en este caso he decidido que cada viernes a las 7 pm se haga el respaldo: +```bash +0 19 * * 5 /ruta/al/script/bu_formha.sh +``` + +#### Sin permisos de administrador +Edita el archivo .pgpass + +```bash +# 1.- EDITAR EL ARCHIVO .pgpass +nano /home/usr_name/.pgpass + +# 2.- Añadir la linea con el siguiente formto: host:puerto:base_de_datos:usuario:contraseña EJEMPLO: +127.0.0.1:5432:db_ejemplo:usr1:pswdUsr1 + +# 3.- Guardas y cierras +``` + +Cambiamos los permisos del archivo .pgpass: +```bash +chmod 600 /home/usr_name/.pgpass +``` + +Luego le das permisos de ejecución al script **`formha.bu.sh`** mediante el comando: +```bash +chmod +x /ruta/al/script/bu_formha.sh +``` + +Creas la tarea en **crontab**: +```bash +crontab -e +``` + +Añades la línea donde ejecutar la tarea, en este caso he decidido que cada viernes a las 7 pm se haga el respaldo: +```bash +0 19 * * 5 /ruta/al/script/bu_formha.sh +``` + + diff --git a/formha_bu.sh b/formha_bu.sh new file mode 100644 index 0000000..99e286e --- /dev/null +++ b/formha_bu.sh @@ -0,0 +1,44 @@ +#!/bin/bash +set -e +trap 'curl -d "🚨 [$d] Error en el proceso de backup formha (línea $LINENO)" ntfy.xala.dev/alerts' ERR + +# 1.- Establecer fecha para el nombre del archivo +d=$(date +"%d.%m.%Y-%H.%M") + +# 2.- Establecer directorio de respaldo +dir="/home/dix/backups-db" + +mkdir -p "$dir" + +{ + curl -H "X-Ttl: 604800" -d "🤖 [$d] Inicia el proceso de backup formha" ntfy.xala.dev/alerts + + # 3.- Borrar archivos antiguos + if [ -n "$(ls -A "$dir")" ]; then + rm -rfv "$dir"/* + fi + + # 4.- Crear nuevo directorio de backup + n_folder_backup="$dir/formha_backup_$d" + mkdir -pv "$n_folder_backup" + + # 5.- Copiar archivos de uploads + cp -rv "/var/www/formha/static/uploads/"* "$n_folder_backup" + + # 6.- Crear backup de la base de datos + n_file_bu_sql="$n_folder_backup/db_formha_backup_$d.sql" + # export PGPASSWORD='tu_contraseña' # si no usas .pgpass + pg_dump -h 127.0.0.1 -U postgres -d formha -f "$n_file_bu_sql" + + # gzip -v "$n_file_bu_sql" + + # 7.- Enviar archivos a Google Drive + # rclone copy "$dir" formha_db_backups:/formha-db-backups + rclone copy "$dir" formha_db_backups:/formha-db-backups + + # 9.- Eliminar archivos locales + rm -rfv "$dir"/* + + + curl -H "X-Ttl: 604800" -d "✅ [$d] Backup formha finalizado correctamente" ntfy.xala.dev/alerts +}