Muszę przenieść cały główny system plików linuksa z uszkodzonego dysku twardego na inny komputer z otwartą, dostępną partycją. Byłem prawie pewien, wiąże się to tar
a ssh
, ale nie pamiętam dokładnie, jak to zrobić.
Obrazuję prawdopodobnie za pomocą Live CD na nowym / docelowym hoście, aby uruchomić coś takiego:
ssh user@failingharddrivehost "some tar command | piped into something else"
ssh user@failingsys "tar cfz - /" > oldsys.tar.gz
Odpowiedzi:
Użyj rsync. Z nowego hosta możesz korzystać
rsync -avP --numeric-ids --exclude='/dev' --exclude='/proc' --exclude='/sys' root@failedharddrivehost:/ /path/to/destination/
Nie próbowałbym angażować czegoś takiego jak tar, ponieważ prawdopodobnie nie zadziała, gdy są uszkodzone pliki.
źródło
Jeśli oba komputery są w tej samej (bezpiecznej) sieci LAN, zalecam inne podejście przy użyciu
netcat
. Zwykle jest to znacznie szybsze, ponieważ nie szyfruje danych.który otwiera port nasłuchiwania 1234 na dobrej maszynie
netcat -l -p 1234
i przesyła dane przychodzącetar
do wyodrębnienia (zachowując mtime i uprawnienia). Zły host wysyła dane do tego portu, również używająctar
inetcat
. I zawarte pewne--exclude
parametry, jak/proc
i/sys
są wirtualne systemy plików, a więc bezużyteczne na nowego gospodarza. (szczególnie plik reprezentujący pamięć RAM w (/proc/kcore
) doda niepotrzebną ilość danych).Należy jednak (również) rozważyć
dd
zrzut zrzutów z uszkodzonych partycji dysku:gdzie trzeba było zastosować
/dev/sda1
odpowiednie urządzenie. Zrób to również z innymi partycjami na uszkodzonym dysku.Dzięki temu zrzutowi masz pewność, że nie przegapiłeś żadnych ważnych metadanych (takich jak ACL), które
tar
nie zostaną przechwycone.źródło
Dlaczego łączysz się z wykluczaniem katalogu? Czy nie jest lepszy pomysł zamontować to samo urządzenie w innym katalogu? nowoczesne jądra na to pozwalają. na przykład zamontowałeś
/ dev / sda1 as / then do: mkdir / CLEANROOT mount / dev / sda1 / CLEANROOT
po tym masz: / dev / sda1 as / / dev / sda1 as / CLEANROOT
Jest to ten sam system plików widoczny w dwóch miejscach, ale / CLEANROOT nie ma addytywnych montowań. Następnie możesz tar lub rsync / CLEANROOT bez żadnych wykluczeń zamiast kopiować / z wykluczeniami.
Oczywiście musisz skopiować kolejne partycje danych, jeśli takie masz.
Kopiowanie partycji jest pierwszym krokiem do odzyskania serwera. innym jest regeneracja sektorów rozruchowych, w przeciwnym razie system nie uruchomi się z skopiowanego dysku. Przydatny jest tryb ratunkowy, gdy uruchamiasz komputer z instalacyjnej / ratunkowej płyty CD lub pendrive.
źródło
Czy masz fizyczny dostęp do hosta, który uległ awarii?
Jeśli to zrobisz, uruchom komputer z płyty CD na żywo. Następnie użyj:
wykluczyć Składnia jest następująca:
tar --exclude='/dev'
.rsync -zvr --exclude /dev/ / destination_computer_name_or_ip
nc -l 4242 | gunzip | cat > my_full_disk_backup_of_PC_named_foo
dd if=/dev/sda of=- bs=1M | gzip | nc -p 4242 name_of_the_destination
Jeśli nie możesz uruchomić z płyty CD na żywo, niektóre z powyższych rozwiązań pozostaną takie same, ale:
Na przykład
tar --exclude='/dev' --exclude='/proc'
źródło
#mount /dev/sda1 /mnt/fedora
mount: unknown filesystem type 'LVM2_member'
Oto opis sposobu kopiowania plików przy użyciu
tar
issh
. Zasadniczo uruchomiłbyś jedną z następujących czynności, w zależności od tego, czy chcesz skopiować lokalny -> zdalny czy zdalny -> lokalny:źródło
powinieneś rozważyć użycie rsync
polecenie podążania zakłada 2 rzeczy:
rsync / new_partition:/wherever/you/want/
Uwaga: końcowe / jest ważne, w przeciwnym razie twoje pliki znajdą się na jednym poziomie katalogu powyżej
źródło
-a
parametru (i być może-A
), ponieważ zachowuje czasy, własność, dowiązania symboliczne (i być może listy ACL) itp. Oraz-e ssh
parametr, ponieważ dane powinny zostać przesłane na inny komputer. A więcrsync -aAv -e ssh root@failingharddrivehost:/ /good_computer/newpartition_mountpoint