Często zdarza mi się taka sytuacja:
- Mam serwer źródłowy z dyskiem twardym o pojemności 320 GB i 16 GB pamięci RAM ( dokładne specyfikacje są dostępne tutaj , ale ponieważ jest to problem, na który często wpadam również na innych komputerach, wolałbym, aby odpowiedź działała na każdym „rozsądna” maszyna z systemem Linux)
- Mam serwer zapasowy z kilkoma terabajtami miejsca na dysku twardym ( dokładne specyfikacje tutaj , patrz wyłączenie odpowiedzialności powyżej)
Chcę przenieść 320 GB danych z serwera źródłowego na serwer docelowy (w szczególności dane z /dev/sda
).
- Dwa komputery są fizycznie obok siebie, więc mogę poprowadzić kable między nimi.
- Jestem w sieci LAN i korzystam z nowego routera , co oznacza, że prędkość mojej sieci powinna „idealnie” wynosić 1000 Mb, prawda?
- Bezpieczeństwo nie stanowi problemu. Jestem w sieci lokalnej i ufam wszystkim komputerom w sieci, w tym routerowi.
- (opcjonalnie) Niekoniecznie potrzebuję podpisanej sumy kontrolnej danych, ale podstawowe sprawdzanie błędów (takie jak upuszczone pakiety lub dysk staje się nieczytelny) powinno raczej zostać wykryte niż po prostu zniknąć w danych wyjściowych.
Szukałem tego pytania w Internecie i przetestowałem kilka poleceń. Ten, który pojawia się najczęściej, to:
ssh user@192.168.1.100 'dd bs=16M if=/dev/sda | gzip' > backup_sda.gz
Ta komenda okazała się zbyt wolna (działała przez godzinę, dane dostały tylko około 80 GB). Pakiet testowy 1 GB zajął około 1 minuty i 22 sekund, a po skompresowaniu był dwukrotnie szybszy. Wyniki mogły być również zniekształcone przez fakt, że przesłany plik jest mniejszy niż ilość pamięci RAM w systemie źródłowym.
Co więcej (i to zostało przetestowane na testowanych egzemplarzach 1 GB), mam problemy, jeśli użyję gzip
polecenia i dd
; plik wynikowy ma inną sumę kontrolną po wyodrębnieniu w celu, niż bezpośrednio w potoku. Wciąż próbuję dowiedzieć się, dlaczego tak się dzieje.
/dev/sda
jako obraz czy tylko pliki? Dlaczego rsync nie ma opcji? Jest /dev/sda
montowany podczas gdy ty dd
?