Niedawno chciałem skopiować maszynę wirtualną z jednego hypervisora na innego. Były to 3 wolumeny LVM o rozmiarach od 50 do 100GB. Dawno temu zrobiłem sobie skrypty do backupu - jeden kompresuje wolumeny LVM - a drugi pozwala odtworzyć z dekompresja na drugim serwerze. Tyle że przy tak dużej maszynce będzie to trwało masakrycznie długo - fajnie byłoby móc równocześnie kopiować i odtwarzać (live)…

I wtedy przypomniało mi się narzędzie netcat - zrobiłem snapshoty wolumenów i mogłem zaczynać. W najbardziej podstawowej wersji potrzebowałem tylko tyle:

  • na źródle:
    dd if=/dev/vgsas/vm1-sys | pv --size 50G | nc -l -p 8888
    
  • na docelowym:
    nc 192.168.1.10 8888 | dd of=/dev/vgsas/vm1-sys
    

Lub wariacje z kompresją:

  • na źródle:
    dd if=/dev/vgsas/vm1-sys | pv --size 50G | pigz -2 | nc -l -p 8888
    
  • na docelowym:
    nc 192.168.1.10 8888 | pigz -d | dd of=/dev/vgsas/vm1-sys
    

No dobra - pv nie jest najbardziej podstawowe… Ale umożliwia podgląd postępu wysyłania/obierania (zależy, z której strony go wrzucić) co przy tak długim procesie jest niezmiernie przydatne.
Do kompresji zalecałbym pigz (czyli Parallel GZIP) z ratio dostosowanym do przepustowości sieci - po gigabicie się nie opłacało nawet na ośmiordzeniowcu.