Portál AbcLinuxu, 10. května 2025 08:55
pepa@local$ ssh -c blowfish ${USER}@${REMOTE} "sudo zfs send ${MPOOL}@snap | \ netcat -c ${LOCAL} 8023" | netcat -w 30 -l -p 8023 ${REMOTE} | \ zfs receive -uvFd backupCelkem to funguje, ale občas ne a na konci přenosu to vyhodí:
read(net): Connection reset by peera zfs receive oznámí chybu ohledně poškozeného streamu. Nefunguje to hlavně u hodně velkého objemu dat (300+ GB). Testování je poněkud náročné, protože to při rychlosti 20 MB/s trvá půl dne. Pokud netcat vyhodím a proháním to jen přes SSH, tak m'kay, jenže to poněkud hodně vytěžuje Intel Atom na $LOCAL. Říkám si, jestli není problém se streamem na začátku spojení - tj. trochu dat se ztratí než netcat naváže spojení - či na jeho konci, tj. netcat na serveru ($LOCAL) se ukončí dříve než do pipe pošle všechna data. Trochu krkolomně by se to možná dalo obejít změnou posloupnosti příkazů: nejprve spustit netcat -l na $LOCAL, potom netcat (bez -c) na $REMOTE, přidat nějaký timeout či kontrolu, že už se žádná data nezapisují, a nakonec zabít jeden z těch netcatů, druhý se ukončí automaticky. Ale zatím se mi to moc nedaří naskriptovat :-/ Nesetkal jste se někdo s něčím podobným?
ssh -c blowfish ${USER}@${REMOTE} "sudo zfs send ${MPOOL}@snap | netcat -c ${LOCAL} 8023"a potom je lokalne pres druhy netcat vyzvednes a posles dal:
netcat -w 30 -l -p 8023 ${REMOTE} | zfs receive -uvFd backupAle nepochopil jsem proc je to cele slepene tou pipou dohromady. Btw. kdysi jsem cetl o nejakem problemu netcatu pri ukoncovani dat..
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.