#!/bin/bash
# copia qcow2 -> volume anexado no IT089947-HELPER (serial=prefixo do uuid). uso: copia_helper.sh <qcow2> <serial20> <log>
Q=$1; SER=$2; LOG=$3; H=177.85.38.42; K=/root/.ssh/wci-dep
exec > $LOG 2>&1
modprobe nbd max_part=8 2>/dev/null
exec 9>/tmp/nbd.lock; flock 9; NB=""
for n in $(seq 1 15); do if [ "$(cat /sys/block/nbd$n/size 2>/dev/null)" = 0 ] && [ ! -e /tmp/nbd$n.inuse ]; then NB=/dev/nbd$n; touch /tmp/nbd$n.inuse; break; fi; done
flock -u 9
[ -z "$NB" ] && { echo "ERRO sem nbd livre"; echo FIM_COPIA; exit 1; }
trap "rm -f /tmp/nbd$n.inuse" EXIT
echo "$(date +%T) INICIO $(basename $Q) -> virtio-$SER via $NB"; t0=$SECONDS
qemu-nbd -r -f qcow2 -c $NB "$Q" || { echo "ERRO nbd"; echo FIM_COPIA; exit 1; }; sleep 3
DEV=$(ssh -o BatchMode=yes -i $K ubuntu@$H "ls /dev/disk/by-id/virtio-$SER* 2>/dev/null | head -1")
[ -z "$DEV" ] && { echo "ERRO volume virtio-$SER nao encontrado no helper"; qemu-nbd -d $NB; echo FIM_COPIA; exit 1; }
dd if=$NB bs=4M status=none | zstd -1 -T4 -q | ssh -i $K -c aes128-gcm@openssh.com -o Compression=no -o BatchMode=yes -o ServerAliveInterval=30 ubuntu@$H "unzstd | sudo dd of=$DEV bs=4M conv=sparse status=none && sudo sync && echo DESTINO_OK"
echo "rc=[${PIPESTATUS[*]}] $((SECONDS-t0))s"; qemu-nbd -d $NB >/dev/null; echo "$(date +%T) FIM_COPIA"
