Backups Linux rsync Tutorial

Backups automáticos en Linux con rsync y cron

Configurá backups automáticos de tu servidor Linux usando rsync y cron. Incluye backup de archivos, bases de datos MySQL/PostgreSQL y rotación automática.

9 de abril de 2026 9 min de lectura Host Crafter

¿Por qué necesitás backups propios?

Aunque tu proveedor haga backups, no es suficiente depender solo de ellos. La regla 3-2-1: 3 copias, en 2 medios distintos, 1 fuera del sitio.

Nota: Los comandos de instalación de herramientas varían según el OS. rsync, tar y cron están disponibles en todas las distribuciones Linux. Los ejemplos de instalación cubren Ubuntu/Debian y Rocky Linux/RHEL.

Estructura del sistema de backups

Creá el directorio de backups:

mkdir -p /backups/{archivos,bases-de-datos}
chmod 700 /backups

Script de backup completo

nano /usr/local/bin/backup-servidor.sh
#!/bin/bash

# ─── CONFIGURACIÓN ─────────────────────────────────────────────────────────
BACKUP_DIR="/backups"
SITIO_DIR="/var/www/tusitioweb.com"
DB_NAME="nombre_base_de_datos"
DB_USER="usuario_db"
DB_PASS="contraseña_db"
RETENER_DIAS=7
FECHA=$(date +%Y-%m-%d_%H-%M)
LOG="/var/log/backup-servidor.log"

log() {
  echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG"
}

# ─── BACKUP DE ARCHIVOS ────────────────────────────────────────────────────
log "Iniciando backup de archivos..."
ARCHIVO_DEST="$BACKUP_DIR/archivos/sitio_$FECHA.tar.gz"
tar -czf "$ARCHIVO_DEST" "$SITIO_DIR" 2>>"$LOG"
log "OK: $ARCHIVO_DEST ($(du -sh $ARCHIVO_DEST | cut -f1))"

# ─── BACKUP DE BASE DE DATOS MySQL ────────────────────────────────────────
log "Iniciando backup de MySQL..."
DB_DEST="$BACKUP_DIR/bases-de-datos/${DB_NAME}_$FECHA.sql.gz"
mysqldump -u "$DB_USER" -p"$DB_PASS" --single-transaction --routines --triggers \
  "$DB_NAME" | gzip > "$DB_DEST" 2>>"$LOG"
log "OK: $DB_DEST ($(du -sh $DB_DEST | cut -f1))"

# ─── ROTACIÓN DE BACKUPS ANTIGUOS ─────────────────────────────────────────
log "Eliminando backups de más de $RETENER_DIAS días..."
find "$BACKUP_DIR" -type f -mtime +$RETENER_DIAS -delete
log "Backup finalizado."

Dale permisos de ejecución:

chmod +x /usr/local/bin/backup-servidor.sh

Backup de PostgreSQL

Reemplazá la sección de base de datos por:

PGPASSWORD="$DB_PASS" pg_dump -U "$DB_USER" "$DB_NAME" | gzip > "$DB_DEST"

Probar el script

bash /usr/local/bin/backup-servidor.sh
ls -lh /backups/archivos/
ls -lh /backups/bases-de-datos/

Automatizar con cron

crontab -e

Todos los días a las 3 AM:

0 3 * * * /usr/local/bin/backup-servidor.sh

Cada 6 horas:

0 */6 * * * /usr/local/bin/backup-servidor.sh

Enviar backups a un servidor remoto

La copia local no protege contra fallas de disco. Enviá los backups a un lugar externo.

Opción A: rsync a otro servidor

rsync -avz --delete /backups/ usuario@IP_SERVIDOR_REMOTO:/backups/sitio/

Cron después del backup:

0 4 * * * rsync -avz /backups/ usuario@IP_REMOTO:/backups/sitio/ >> /var/log/backup-rsync.log 2>&1

Opción B: rclone a Object Storage (S3-compatible)

rclone tiene un instalador universal que funciona en todas las distribuciones:

curl https://rclone.org/install.sh | sudo bash
rclone config
rclone sync /backups/ remote:mi-bucket-backups/

Verificar que los backups funcionan

La regla más importante: verificá que podés restaurarlos.

# Verificar integridad
gzip -t /backups/bases-de-datos/nombre_db_2026-04-09.sql.gz
echo $? # Debería ser 0

# Restaurar en un entorno de prueba
gunzip -c /backups/bases-de-datos/nombre_db.sql.gz | mysql -u usuario -p db_test

Monitorear el estado

tail -f /var/log/backup-servidor.log

Los planes VPS de Host Crafter incluyen backups automáticos diarios. Si necesitás mayor frecuencia, consultanos.

¿Listo para ponerlo en práctica?

Backups automáticos incluidos en VPS