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