Muszę wykonać kopię zapasową mojego dysku twardego. Chcę użyć dd
i umieścić obraz na zewnętrznym dysku twardym.
- Czy mogę to zrobić za pomocą
dd
systemu operacyjnego, który znajduje się na samym dysku twardym, czy muszę uruchomić komputer z innego urządzenia, na przykład LiveCD? - Czy ogólnie można bezpiecznie zrobić zdjęcie urządzenia, jeśli jest ono zamontowane i działa?
- Co się stanie, jeśli urządzenie zostanie zamontowane, ale jestem pewien, że podczas działania nie ma żadnych innych operacji we / wy
dd
?
Jestem pewien, że rsync
to najlepsze narzędzie do tworzenia kopii zapasowych, szczególnie przyrostowych.
Ale mnie to interesuje dd
, ponieważ chcę wykonać kopię zapasową również innych urządzeń pamięci masowej, a także skopiować dane przechowywane na niepodzielonym na partycje miejscu. Na przykład mój czytnik e-booków używa niepodzielonego na partycje miejsca do przechowywania Uboota, jądra i innych danych.
backup
dd
disk-image
Marco Sulla
źródło
źródło
Odpowiedzi:
Ogólnie nie jest to bezpieczne. FS zakłada, że operacje są zapisywane w określonej kolejności, dzięki czemu może zapisywać nowe dane pliku, a następnie tworzyć do niego wskaźnik z innych danych, dokładne szczegóły zależą od systemu plików. Wyobraź sobie, że dzieje się tak:
dd
odczytuje z lokalizacji X, która zawiera śmieci lub niektóre danedd
odczytuje z lokalizacji X + 1 link do lokalizacji XZ punktu widzenia kopii zapasowej otrzymujesz śmieciowe dane. Istnieje jednak kilka sposobów obejścia tego:
xfs_freeze
jest jeden i nie znam żadnego innego - ale taka opcja istnieje przynajmniej w teorii)Ostatnia uwaga -
dd
może nie być najlepszym sposobem tworzenia kopii zapasowych. Kopiuje pełny dysk, który często jest marnotrawny, gdy kopiujesz również „śmieci”. Jeśli potrzebujesz obrazów dysku, coś takiego jak partimage może być lepsze. Jeśli nie masz lepszej opcji, użyj albo rsync, tar w trybie różnicowym / przyrostowym itp., Albo pełnego systemu tworzenia kopii zapasowych, takiego jak Bacula , Tarsnap lub jeden z wielu innych. Deduplikacja danych może zdziałać cuda w zakresie rozmiarów kopii zapasowych.źródło
Zależy to od tego, do czego dokładnie służy partycja i jaki jest cel kopii. Powiem jednak, że ogólnie
dd
jest nieodpowiednim narzędziem do tworzenia kopii zapasowych systemów plików . Nie do tego też był przeznaczony.Marnuje dużo czasu na kopiowanie pustych sekcji partycji.
Może to prowadzić do niespójności, jeśli system plików jest obecnie zamontowany, częściowo dlatego, że jest to jednostka poziomu systemu operacyjnego i może nie być zsynchronizowany z podstawowym urządzeniem blokowym. Dzwonienie
sync
początkowo nie pomoże w tym, ponieważ proces ten nie jest natychmiastowy.Użyj
cp -a
lubrsync
zamiast. Następnie musisz oczywiście utworzyć docelową partycję, więc nie jest to tak proste, ale jest o wiele bezpieczniejsze i bardziej elastyczne. Jeśli chcesz utworzyć obraz systemu plików , patrz poniżej.Jeśli zamierzasz skopiować główny system plików, absolutnie nie używaj
dd
. Musisz użyć czegoś takiegorsync -ax
(lubcp -ax
w poszczególnych katalogach najwyższego poziomu), ponieważ istnieje wiele rzeczy, które NIE mogą znajdować się w kopii . W systemie Linux obejmuje to:Niektóre z nich są w rzeczywistości interfejsami jądra, a nie prawdziwymi katalogami na dysku. Jeśli je skopiujesz, skopiujesz kilka informacji, które nie będą miały zastosowania w kopii; jeśli spróbujesz uruchomić system z nim, będzie to tylko marnowanie miejsca, ponieważ prawdziwy interfejs zostanie zamontowany na górze. Inne zawierają tymczasowe informacje używane podczas uruchamiania procesów, które stanowią większy problem, ponieważ system nie będzie w stanie uporządkować śmieci, jeśli je skopiujesz.
Jeśli chcesz utworzyć plik obrazu głównego systemu plików (lub dowolnego systemu plików), utwórz pusty plik obrazu - jest to odpowiednie zastosowanie dla
dd
:To obraz o wielkości 1024 MB (1000000 * 1024). Dostosuj,
count
jeśli chcesz inny rozmiar. Utwórz np.ext
System plików w pliku :Ostrzeże Cię, że to nie jest prawdziwe urządzenie blokowe. Kontynuować. Teraz zamontuj plik obrazu:
/mnt/img
musi istnieć, ale może wszystko. Możesz terazrsync
(lubcp -a
) do/mnt/img
. Zawartość pozostanie w środkuwhatever.img
po jej odmontowaniu.Jednak...
Żeby było jasne, używaj opisanej metody obrazu systemu plików, tylko jeśli potrzebujesz pliku obrazu z jakiegokolwiek powodu. Jeśli Twoim celem jest skopiowanie partycji na inny dysk twardy, nie potrzebujesz obrazu : utwórz nową partycję z pustym systemem plików na tym dysku, zamontuj ją i skopiuj na nią. Zamiast tego możesz po prostu umieścić zawartość systemu plików w pustym katalogu i zarchiwizować go:
Następnie możesz wdrożyć to na istniejącej (pustej lub innej) partycji, umieszczając ją na najwyższym poziomie i używając:
Uważaj, aby zastąpić istniejące pliki, jeśli ich ścieżki pasują do czegoś w archiwum. W przeciwnym razie istniejąca hierarchia katalogów pozostanie taka sama.
źródło
cp
i rsync GNU mają opcję-x
uniknięcia rekurencji w innych systemach plików. Odpowiedź Macieja najlepiej wyjaśnia, dlaczegodd
jest tutaj absolutnie nieodpowiednia (prawie na pewno da się kopię bezużyteczną, chyba że podejmie się środki ostrożności wymienione przez Marka , z powodu zapisów, które inaczej miałyby miejsce podczas kopiowania).dd
nie kopiuje rzeczy, które nie są prawdziwymi katalogami na dysku, więc nie jestem pewien, skąd bierze się twój pierwszy punkt. Np. Podłączone urządzenia/mnt
, węzły/proc
itp. Nie byłyby częścią danych, które sądd
pobierane, ponieważ nie ma ich na dysku. W przypadku odmontowanych systemów plikówdd
jest całkowicie poprawny; otrzymujesz dokładny duplikat. Jedynym powodem, dla którego jest nieodpowiedni dla zamontowanych systemów plików, jest to, że dane w systemie mogą ulec zmianie / zostać częściowo zapisane w długim okresie czasudd
.rsync jest narzędziem z wyboru do tworzenia kopii zapasowych systemu plików i może tworzyć rozruchową kopię zapasową bieżącego działającego systemu operacyjnego.
Niektóre zastrzeżenia:
Niektóre zalety rsync w porównaniu z innymi metodami, takimi jak tar:
Kopie zapasowe obrazów mają swoje miejsce, ale kopiują dysk dokładnie tak, jak są, w tym wszelkie problemy, które możesz mieć. Kopia zapasowa pliku tworzy nowy katalog i powoduje efekt liniowy (defragmentacja) dysku w tym procesie. Jeśli chcesz zrobić 10 identycznych kopii twojego obecnego systemu operacyjnego, użyłbym rsync dla wzorca kopii, a następnie dd (lub podobny) dla reszty.
źródło
Zależy to od tego, co rozumiesz przez „bieżący system operacyjny”. Jeśli po prostu chcesz uniknąć korzystania z dysku rozruchowego i nie przejmujesz się zakłóceniami usług działających na komputerze, możliwe jest:
sync
mount -o ro /
./etc/mtab
; zignoruj go).Używam tej metody do stworzenia archiwum komputera, z którego właśnie zaktualizowałem i nie oczekuję, że użyję dużo więcej. Nie jest to bardzo dobra metoda dla aktywnego systemu: jest powolna (zajmuje godziny lub dni), kopie zapasowe są ogromne (więc nie można przechowywać więcej niż kilku), a korzystanie z kopii zapasowej systemu jest niezwykle uciążliwe w górę. Do codziennych kopii zapasowych polecam coś, co działa na poziomie systemu plików, np
rsnapshot
.źródło
/etc/mtab
się/proc/self/mount
- co będzie działać, nawet gdy masz takie rzeczy jak środowisku chroot fs lub nazw.mount -o remount,ro /
może pisać. Ale kiedy to polecenie powróci, w jakiej sytuacji nastąpiłyby kolejne zapisy?Poważnie używaj Clonezilli . To najlepsze narzędzie typu Norton Ghost oparte na systemie Linux. Wykona zarówno klonowanie partycji, jak i pełne dyski, albo z dysku na dysk lub z dysku na system plików (zapisz jako plik). Obsługuje większość systemów plików Linux, NTFS, FAT32 i więcej. Może zapisywać na dysku wewnętrznym, dysku zewnętrznym, a nawet przez sieć na udziałach SMB lub NFS.
Jest bardzo łatwy w użyciu i pozwoli Ci zaoszczędzić dużo czasu.
Edycja: aby odpowiedzieć na pytanie, nie, nie można
dd
większości systemów plików, gdy są one zamontowane, ponieważ istnieje ryzyko, że skończy się to niespójną kopią systemu plików, ponieważ odczyt z urządzenia blokowego nie jest atomowy. Na przykład, jeśli kopiujesz 100 bloków, system mógł zaktualizować pierwszy blok i ostatni blok, gdy byłeś tylko w połowie, co oznacza, że twoja kopia będzie zawierać zmodyfikowany ostatni blok, ale nie pierwszy.źródło