~/docs /Backups y Restore

Backups y Restore

Backups y Restore

Imported from Notion: Backups y Restore

updated:: 2026.07.10

Que resuelve

Guia practica para hacer backups verificables con tar, rsync, checksums y pruebas de restauracion.

Regla basica

Un backup no esta validado hasta que has probado a restaurarlo.

Estrategia minima

CapaObjetivo
Copia localRecuperacion rapida
Copia externaResistencia a fallo de disco
VersionadoRecuperar estados anteriores
Prueba de restoreConfirmar que sirve

tar

Crear archivo comprimido

tar -czf {BACKUP}.tar.gz {DIR}

Ver contenido

tar -tzf {BACKUP}.tar.gz

Extraer

tar -xzf {BACKUP}.tar.gz -C {DEST}

Preservar permisos

sudo tar --same-owner -xzf {BACKUP}.tar.gz -C {DEST}

rsync

Copia basica

rsync -avh {SOURCE}/ {DEST}/

Copia con borrado en destino

rsync -avh --delete {SOURCE}/ {DEST}/

Simular sin cambiar nada

rsync -avhn --delete {SOURCE}/ {DEST}/

Copia remota por SSH

rsync -avh -e ssh {SOURCE}/ {USER}@{HOST}:{DEST}/

Checksums

Generar checksums

find {DIR} -type f -print0 | sort -z | xargs -0 sha256sum > SHA256SUMS

Verificar checksums

sha256sum -c SHA256SUMS

Bases de datos

PostgreSQL

pg_dump -Fc {DB_NAME} > {DB_NAME}.dump

Restaurar PostgreSQL

pg_restore -d {DB_NAME} {DB_NAME}.dump

MySQL/MariaDB

mysqldump {DB_NAME} > {DB_NAME}.sql

Restaurar MySQL/MariaDB

mysql {DB_NAME} < {DB_NAME}.sql

Restore controlado

Restaurar a directorio temporal

mkdir -p /tmp/restore-test
tar -xzf {BACKUP}.tar.gz -C /tmp/restore-test

Comparar directorios

diff -qr {SOURCE} /tmp/restore-test/{DIR_NAME}

Rotacion simple

Nombre con fecha

BACKUP_NAME="{APP}-$(date +%F_%H%M%S).tar.gz"

Borrar backups antiguos

find {BACKUP_DIR} -type f -name '*.tar.gz' -mtime +{DAYS} -delete
warning

Prueba siempre el find sin -delete antes de borrar backups antiguos.

Checklist antes de automatizar

  • Que se copia.

  • Que se excluye.

  • Donde se guarda.

  • Cuanto se retiene.

  • Como se restaura.

  • Quien recibe alertas si falla.

Variables

VariableDescripcion
{SOURCE}Directorio origen
{DEST}Directorio destino
{BACKUP}Nombre del backup
{BACKUP_DIR}Directorio de backups
{DB_NAME}Base de datos
{APP}Nombre de aplicacion
{DAYS}Dias de retencion

Errores comunes

SintomaCausa probableSolucion
Backup incompletoApp escribiendo durante copiaUsa dump/snapshot o ventana de mantenimiento
Restore falla por permisosNo preservaste ownerUsa sudo tar --same-owner
Disco llenoSin rotacionDefine retencion
Backup corruptoSin verificacionUsa checksums y restore test

Checklist final

  • Backup creado.

  • Checksum generado.

  • Restore probado.

  • Retencion definida.

  • Copia externa disponible.

- EOF -