#!/bin/bash
# IT142970 - roda como root no no sp1-sd-inovatech-4 (192.168.100.14).
# qcow2 no NFS (VMs ja DESLIGADAS) -> nbd -> zstd -> ssh -> dd no volume anexado no IT089947-HELPER.
# Mapa (serial do volume = uuid): vdd=B1A-disk-0 | vde..vdj = SUSE-disk-0..5
set -u
Q=/mnt/pve/NFS01/migrate/images; H=177.85.38.42; K=/root/.ssh/wci-dep
L=/mnt/pve/NFS01/migrate/IT142970/logs; mkdir -p $L
modprobe nbd max_part=8 nbds_max=32 2>/dev/null
cp1(){ # <qcow2> <nbd> <dev-no-helper>
  qemu-nbd -d $2 >/dev/null 2>&1; qemu-nbd -r -f qcow2 -c $2 "$1" || { echo "ERRO nbd $1"; return 1; }; sleep 3
  local t0=$SECONDS
  dd if=$2 bs=4M status=none | zstd -1 -T4 -q | ssh -i $K -c aes128-gcm@openssh.com -o Compression=no \
     -o StrictHostKeyChecking=no -o BatchMode=yes -o ServerAliveInterval=30 ubuntu@$H \
     "unzstd | sudo dd of=$3 bs=4M conv=sparse status=none && sudo sync && echo DESTINO_OK"
  local rc="${PIPESTATUS[*]}"; qemu-nbd -d $2 >/dev/null
  echo "$(date +%T) $(basename $1) -> $3 rc=[$rc] $((SECONDS-t0))s"
}
echo "$(date +%T) INICIO"
( cp1 $Q/230/vm-230-disk-0.qcow2 /dev/nbd10 /dev/vdd ) > $L/b1a.log 2>&1 &
( cp1 $Q/178/vm-178-disk-0.qcow2 /dev/nbd11 /dev/vde; cp1 $Q/178/vm-178-disk-1.qcow2 /dev/nbd11 /dev/vdf; cp1 $Q/178/vm-178-disk-2.qcow2 /dev/nbd11 /dev/vdg ) > $L/suse-a.log 2>&1 &
( cp1 $Q/178/vm-178-disk-5.qcow2 /dev/nbd12 /dev/vdj; cp1 $Q/178/vm-178-disk-3.qcow2 /dev/nbd12 /dev/vdh; cp1 $Q/178/vm-178-disk-4.qcow2 /dev/nbd12 /dev/vdi ) > $L/suse-b.log 2>&1 &
wait
echo "$(date +%T) TODAS_AS_COPIAS_FIM"; cat $L/b1a.log $L/suse-a.log $L/suse-b.log
