añadido script para backup
This commit is contained in:
Executable
+32
@@ -0,0 +1,32 @@
|
||||
#!/usr/bin/env bash
|
||||
# Backup diario. Se ejecuta EN EL SERVIDOR (cron): dump consistente de MySQL
|
||||
# con el contenedor vivo + copia de .env, en /srv/backups/may, que es la
|
||||
# carpeta que zerobyte monta por SSH desde la otra máquina.
|
||||
# Instalación, zerobyte y restauración: SIGUIENTES-PASOS.md → "Backups".
|
||||
set -euo pipefail
|
||||
umask 077
|
||||
|
||||
BACKUP_DIR=/srv/backups/may
|
||||
APP_DIR=$(cd "$(dirname "$0")/.." && pwd)
|
||||
STAMP=$(date +%F_%H%M)
|
||||
|
||||
mkdir -p "$BACKUP_DIR/mysql" "$BACKUP_DIR/config"
|
||||
|
||||
# --single-transaction: snapshot InnoDB consistente sin bloquear ni parar nada.
|
||||
# MYSQL_PWD se expande DENTRO del contenedor (comillas simples): la contraseña
|
||||
# no pasa por este script ni por la lista de procesos del host.
|
||||
TMP="$BACKUP_DIR/mysql/.easyappointments_$STAMP.part"
|
||||
docker exec may-ea-mysql sh -c \
|
||||
'MYSQL_PWD="$MYSQL_ROOT_PASSWORD" exec mysqldump --single-transaction --quick \
|
||||
--routines --triggers --events --databases easyappointments' > "$TMP"
|
||||
grep -q 'Dump completed' "$TMP" # mysqldump lo escribe al final: si falta, quedó truncado
|
||||
mv "$TMP" "$BACKUP_DIR/mysql/easyappointments_$STAMP.sql"
|
||||
|
||||
# Lo único necesario para restaurar que no está en git.
|
||||
install -m 600 "$APP_DIR/.env" "$BACKUP_DIR/config/env"
|
||||
|
||||
# Retención local corta; el histórico largo son los snapshots de zerobyte.
|
||||
find "$BACKUP_DIR/mysql" -name '*.sql' -mtime +7 -delete
|
||||
find "$BACKUP_DIR/mysql" -name '.*.part' -mtime +1 -delete
|
||||
|
||||
echo "$(date -Is) OK easyappointments_$STAMP.sql"
|
||||
Reference in New Issue
Block a user