Una copia programada te protege de ayer. Una actualización que rompe el sitio lo rompe ahora, y la última copia puede tener veinte horas con un día de pedidos por medio. La copia que importa es la que se toma justo antes del cambio.

Una orden

#!/usr/bin/env bash
# /usr/local/bin/snap
set -euo pipefail
SITE=/var/www/site
OUT=/srv/backup/pre-change/$(date +\%F-\%H\%M)
mkdir -p "$OUT"
tar -czf "$OUT/files.tar.gz" -C "$SITE" .
mysqldump --single-transaction --quick --routines --triggers dbname | gzip > "$OUT/db.sql.gz"
echo "$OUT"
sudo snap && sudo apt-get upgrade

Automatízala donde las herramientas lo permitan

  • Un script de despliegue la ejecuta como primer paso, antes de copiar nada.
  • Actualizaciones de paquetes: ganchos de apt, o una envoltura que uses en lugar de apt.
  • Actualizaciones del gestor de contenidos: casi todos tienen un plugin que hace una instantánea antes; úsalo, y guarda también tu propia copia.

Sepa cómo volver ANTES de avanzar

Anota la orden de reversión junto a la ruta de la instantánea. Si no es una línea que puedas pegar, la reversión no llegará lo bastante rápido como para servir.

# rollback
tar -xzf /srv/backup/pre-change/2026-09-05-0930/files.tar.gz -C /var/www/site
zcat /srv/backup/pre-change/2026-09-05-0930/db.sql.gz | mysql dbname
Restaurar la base de datos deshace todos los pedidos y todos los registros desde la instantánea. En un sitio con tráfico, restaura primero los ARCHIVOS y toca la base solo si el fallo está de verdad en los datos.

Y límpialas después

find /srv/backup/pre-change -maxdepth 1 -type d -mtime +14 -exec rm -rf {} +
Actualiza una cosa cada vez. Cinco plugins a la vez significa que el fallo puede estar en cualquiera, y la reversión pierde las cinco mejoras para encontrar un solo fallo.