#!/bin/bash # # Paso 1-2 del cutover: traer el dump de BD del dia. CDMON -> WSL -> Hetzner. # # Dos saltos a proposito: scp/sftp no funcionan contra la jaula de CDMON, y no # queremos dejar la contrasena de CDMON escrita en el Hetzner. Se verifica el # sha256 en los tres puntos y la integridad del gzip en dos. # # Uso: bash 01-traer-dump.sh [nombre-del-dump] # sin argumento coge el mas reciente de /web/wp-content/updraft/ # set -euo pipefail set -a; . ~/.hermes/profiles/feadulta/.env 2>/dev/null; set +a WORK=/home/rafa/migracion-wp SRV=root@188.40.120.157 ORIG=feadulta@134.0.10.170 mkdir -p "$WORK" s() { sshpass -p "$FEA_PROD_SSH_PASS" ssh -o StrictHostKeyChecking=accept-new "$ORIG" "$@"; } DUMP="${1:-}" if [ -z "$DUMP" ]; then # sin xargs ni basename: la jaula de CDMON tiene un PATH minimo DUMP=$(s 'ls -t /web/wp-content/updraft/*-db.gz | head -1 | sed "s|.*/||"') fi echo "== dump elegido: $DUMP" echo "== en origen:" s "php -r \"\\\$p='/web/wp-content/updraft/$DUMP'; echo ' ',filesize(\\\$p),' bytes sha256=',hash_file('sha256',\\\$p),\\\"\n\\\";\"" echo "== descargando a la WSL:" T0=$(date +%s) s "cat /web/wp-content/updraft/$DUMP" > "$WORK/$DUMP" T1=$(date +%s); echo " descarga: $((T1-T0))s" echo "== integridad en la WSL:" ls -l "$WORK/$DUMP" | awk '{print " ", $5, "bytes"}' sha256sum "$WORK/$DUMP" | awk '{print " sha256=", $1}' gzip -t "$WORK/$DUMP" && echo " gzip: integro" echo "== subiendo al Hetzner:" ssh -o BatchMode=yes "$SRV" 'mkdir -p /data/feadulta-migracion' T2=$(date +%s) scp -q "$WORK/$DUMP" "$SRV:/data/feadulta-migracion/" T3=$(date +%s); echo " subida: $((T3-T2))s" echo "== verificacion en destino:" ssh -o BatchMode=yes "$SRV" "cd /data/feadulta-migracion && ls -l $DUMP | awk '{print \" \", \$5, \" bytes\"}' && sha256sum $DUMP | awk '{print \" sha256=\", \$1}' && gzip -t $DUMP && echo ' gzip: integro'" echo "" echo "== total: $(( $(date +%s) - T0 ))s" echo "$DUMP" > "$WORK/DUMP-DEL-DIA" echo " (nombre guardado en $WORK/DUMP-DEL-DIA para el paso siguiente)"