#!/bin/bash # Configuración ORIGEN="/home/informatica/docker/pyfleet/database/pyfleet.db" DESTINO="/mnt/backup/backup_mysql" LOG="/mnt/backup/logs/backup_pyfleet.log" # Crear directorio de destino si no existe # mkdir -p "$DESTINO" # Fecha para el nombre del backup FECHA=$(date +"%Y-%m-%d_%H-%M") BACKUP="$DESTINO/pyfleet_$FECHA.db" echo "$(date): Iniciando backup..." >> "$LOG" # Comprobar que existe la base de datos if [ ! -f "$ORIGEN" ]; then echo "$(date): ERROR: No existe $ORIGEN" >> "$LOG" exit 1 fi if ! cp "$ORIGEN" "$BACKUP"; then echo "$(date): ERROR: Falló el backup" >> "$LOG" rm -f "$BACKUP" exit 1 fi # Comprobar resultado if [ $? -ne 0 ] || [ ! -s "$BACKUP" ]; then echo "$(date): ERROR: Falló el backup" >> "$LOG" rm -f "$BACKUP" exit 1 fi echo "$(date): Backup creado: $BACKUP" >> "$LOG" # Mantener solamente las 3 copias más recientes ls -1t "$DESTINO"/pyfleet_*.db 2>/dev/null | tail -n +4 | xargs -r rm -f echo "$(date): Limpieza completada. Se mantienen las 3 últimas copias." >> "$LOG" #Dar permisos al script #sudo chmod +x /home/informatica/docker/pyfleet/backup_fleet.sh #Probar manualmente #sudo /home/informatica/docker/pyfleet/backup_pyfleet.sh #Comprobar backup #ls -lh /mnt/backup/backup_mysql #Crontab #sudo crontab -e #domingos a las 03:00 #0 3 * * 0 /usr/local/bin/backup_sqlite.sh #Comprobar que esta programado #sudo crontab -l #corregir ejecucion #file /home/informatica/docker/pyfleet/backup_fleet.sh #Si aparece algo como: #with CRLF line terminators #ese es probablemente el problema. #Corrígelo con: #sudo sed -i 's/\r$//' /home/informatica/docker/pyfleet/backup_fleet.sh