#!/bin/bash # # Paso 5 del cutover: delta de uploads. # # El grueso (5,9 GB / 47.920 ficheros) se pre-sincronizo el 31-jul. Aqui solo viaja # lo publicado desde entonces. Dos saltos igual que el dump: CDMON -> WSL -> Hetzner, # para no dejar la contrasena de CDMON escrita en el servidor. # # --partial y ServerAliveInterval porque un rsync largo contra este enlace se corta # EN SILENCIO (la primera pasada del 31-jul murio a 36.289 de 47.920 sin error en el # log). Por eso al final se comparan los recuentos de los dos lados: no vale con que # rsync diga que termino. # # Los .php se excluyen a proposito: en uploads solo hay 2 y son importadores de un # solo uso, no tienen que viajar. # set -euo pipefail set -a; . ~/.hermes/profiles/feadulta/.env 2>/dev/null; set +a STAGE=/tmp/fea-uploads-staging SRV=root@188.40.120.157 DEST=/var/lib/docker/volumes/r2ssjifwj0r0ghyoqd528uaa_wordpress-files/_data/wp-content/uploads echo "== antes:" printf " WSL : "; find "$STAGE" -type f | wc -l printf " Hetzner : "; ssh -o BatchMode=yes "$SRV" "find $DEST -type f | wc -l" printf " CDMON : "; sshpass -p "$FEA_PROD_SSH_PASS" ssh -o StrictHostKeyChecking=no feadulta@134.0.10.170 'find /web/wp-content/uploads -type f | wc -l' echo "" echo "== delta CDMON -> WSL:" T0=$(date +%s) sshpass -p "$FEA_PROD_SSH_PASS" rsync -a --partial --info=stats2 --exclude='*.php' \ -e "ssh -o StrictHostKeyChecking=accept-new -o ServerAliveInterval=20 -o ServerAliveCountMax=6" \ feadulta@134.0.10.170:/web/wp-content/uploads/ "$STAGE/" \ | grep -E 'Number of (regular files transferred|deleted)|Total transferred file size' | sed 's/^/ /' echo " $(( $(date +%s) - T0 ))s" echo "" echo "== delta WSL -> Hetzner (como www-data, uid 33):" T1=$(date +%s) rsync -a --partial --info=stats2 --exclude='*.php' --chown=33:33 \ -e "ssh -o BatchMode=yes -o ServerAliveInterval=20 -o ServerAliveCountMax=6" \ "$STAGE/" "$SRV:$DEST/" \ | grep -E 'Number of (regular files transferred|deleted)|Total transferred file size' | sed 's/^/ /' echo " $(( $(date +%s) - T1 ))s" echo "" echo "== VERIFICACION por recuento (no fiarse de que rsync diga que termino):" a=$(sshpass -p "$FEA_PROD_SSH_PASS" ssh -o StrictHostKeyChecking=no feadulta@134.0.10.170 'find /web/wp-content/uploads -type f ! -name "*.php" | wc -l') b=$(find "$STAGE" -type f | wc -l) c=$(ssh -o BatchMode=yes "$SRV" "find $DEST -type f | wc -l") echo " CDMON (sin .php): $a" echo " WSL : $b" echo " Hetzner : $c" [ "$a" = "$c" ] && echo " OK: origen y destino cuadran" || echo " !! NO CUADRAN, revisar antes de seguir" echo "" echo "== propietario en destino (no debe haber nada que no sea www-data):" ssh -o BatchMode=yes "$SRV" "find $DEST ! -user 33 | head -5 | sed 's/^/ /'; echo ' ficheros con otro dueno: '\$(find $DEST ! -user 33 | wc -l)"