Odpowiedzi:
Kopiowanie ze źródła do miejsca docelowego, w którym działa sshd:
dd if=/dev/sda | gzip | ssh root@target 'gzip -d | dd of=/dev/sda'
Kopiowanie ze źródła do celu przez sshd_host, gdy cel nie jest uruchomiony sshd.
nc -l -p 62222 | dd of=/dev/sda bs=$((16 * 1024 * 1024))
ssh -L 62222:target:62222 sshd_host &
Źródło: dd if=/dev/sda | nc -w 3 localhost 62222
dd - jeśli = jest źródłem, of = jest miejscem docelowym, bs = jest rozmiarem bloku. Różne rozmiary bloków mogą poprawić wydajność. 16 jest zwykle dość rozsądnym punktem wyjścia. Możesz także użyć count =, aby wskazać liczbę bloków do skopiowania.
nc - -p wskazuje port używany przez usługi. -l służy do uruchomienia usługi. -w ustawia czas oczekiwania na dane w potoku przed zamknięciem.
ssh - -L konfiguruje tunel na zdalnym hoście. Format argumentu jest local_port:target_host:target_port
. Twój program lokalny (nc) łączy się z portem lokalnym, połączenie to jest tunelowane i połączone z portem docelowym na hoście docelowym.
Zdefiniowane opcje są tylko tymi używanymi do tego. Więcej informacji znajdziesz na stronach podręcznika użytkownika.
Kilka uwag:
source machine dd -> nc -> ssh -> ssh tunnel -> sshd server -> nc on target -> dd
Jeśli chcesz używać netcat bez ssh. Zakładam, że jest to najszybszy, a nie bezpieczny sposób, możesz skopiować i przywrócić cały dysk w następujący sposób:
Na komputerze A o adresie IP 192.168.0.1
cat /dev/hdb | nc -p 9000
Na komputerze B
nc -l 192.168.0.1 9000 > /dev/hdb
Pamiętaj, że według man nc opcja -l to:
-l Służy do określania, że nc powinien nasłuchiwać połączenia przychodzącego zamiast inicjować połączenie ze zdalnym hostem. Używanie tej opcji w połączeniu z opcjami -p, -s lub -z jest błędem .
netcat nie jest potrzebny.
na maszynie src:
dd if=/dev/sdX bs=1M | ssh root@dstMachine " dd of=/dev/sdY bs=1M"
Zakładam, że żadna z partycji na sdX i sdY nie jest zamontowana. możesz uruchomić oba pola za pomocą knoppiksa lub innej podobnej dystrybucji na żywo.
dd - pobiera dane z jeżeli [ile nie zostało - bierze ze standardowego wejścia] wysyła dane o [o ile nie zostało - dane są wysyłane na standardowe]. bs - rozmiar bloku ... przyspieszy sprawę.
ssh - wykonuje polecenie podane w cudzysłowie na zdalnym urządzeniu, wszystkie dane pompowane do stdin ssh zostaną tunelowane do zdalnej maszyny i porowione jako stdin do komendy tam wykonanej.
Host A to ten, który obrazuje, host B to ten, na którym obraz będzie przechowywany:
root@A# dd if=/dev/sda | ssh root@B "dd of=/some/file"
Przywrócenie na dysk po prostu zamieniłoby te dwa.
Podstawowa kopia z netcat jest opisana tutaj .
Jeśli chcesz zaangażować SSH , możesz użyć przekierowania portów ,
-R [bind_address:]port:host:hostport
Ale ogólnie rzecz biorąc, możesz po prostu wykonać transfer SSH (bez netcata).
Tak długo, jak systemy plików są odmontowane, dd działa dobrze.
(from server1) dd if=/dev/sda bs=32k | ssh <server2> dd of=/dev/sda bs=32k
Musisz wcześniej skonfigurować uwierzytelnianie klucza hosta, w przeciwnym razie monit o podanie hasła spowoduje niepowodzenie kopiowania.
Wykonanie tego na zamontowanym woluminie spowoduje słabe wyniki.
Lub możesz użyć clonezilli i „zamontować” swój zdalny magazyn za pomocą sshfs.
Wypróbowałem kombinację powyższych opcji i udostępniam Ci wyniki. od najszybszego do najwolniejszego przy użyciu kombinacji rozmiaru bloku dd, algorytmu kompresji gzip i gzip.
Jak widać gzip poprawił mi tylko użycie szybkiego algorytmu w połączeniu z wielkością bloku 1M.
time dd bs=1M if=/dev/HypGroup00/stage-snapshot | gzip --fast | ssh hyp5 'gzip -d | dd bs=1M of=/dev/HypGroup00/stage'
12884901888 bytes (13 GB) copied, 326.045 s, 39.5 MB/s
time dd if=/dev/HypGroup00/stage-snapshot | gzip --fast | ssh hyp5 'gzip -d | dd of=/dev/HypGroup00/stage'
12884901888 bytes (13 GB) copied, 370.158 s, 34.8 MB/s
time dd if=/dev/HypGroup00/stage-snapshot | ssh hyp5 dd of=/dev/HypGroup00/stage
12884901888 bytes (13 GB) copied, 370.274 s, 34.8 MB/s
time dd bs=1M if=/dev/HypGroup00/stage-snapshot | ssh hyp5 dd bs=1M of=/dev/HypGroup00/stage
12884901888 bytes (13 GB) copied, 372.906 s, 34.6 MB/s
time dd bs=1M if=/dev/HypGroup00/stage-snapshot | gzip | ssh hyp5 'gzip -d | dd bs=1M of=/dev/HypGroup00/stage'
12884901888 bytes (13 GB) copied, 520.116 s, 24.8 MB/s
Wykorzystano dwa szybkie serwery połączone z GigE za pomocą przełącznika Enterprise GigE za pomocą dysków lokalnych za pośrednictwem LVM.
Wygląda na to, że używasz młota do kruszenia orzechów - a może lepszą analogią jest cięcie trawnika nożyczkami :)
Zdecydowanie polecam przyjrzeć się niektórym narzędziom do wykonywania takiej pracy, chyba że masz doskonałe powody, aby zrobić to samodzielnie.
Trinity Rescue Kit to darmowy liveCD, który obsługuje dyski do przetwarzania obrazu w trybie multiemisji i może robić, co chcesz (a nawet każdy, kto myśli na tych samych liniach), bez przechodzenia na systemy obrazowania z pełnym otworem.