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.