Lubię tworzyć kopię zapasową obrazu po raz pierwszy, kiedy tworzę kopię zapasową systemu. Po tym pierwszym użyciu używam rsync do tworzenia przyrostowych kopii zapasowych.
Moja zwykła kopia zapasowa obrazu jest następująca:
Zamontuj i wyzeruj puste miejsce:
dd if=/dev/zero of=temp.dd bs=1M
rm temp.dd
umount i dd dysk podczas kompresji
dd if=/dev/hda conv=sync,noerror bs=64K | gzip -c > /mnt/sda1/hda.ddimg.gz
aby przywrócić system do normy, zwykle zrobię
gunzip -c /mnt/sda1/hda.img.gz | dd of=/dev/hda conv=sync,noerror bs=64K
Jest to naprawdę proste i pozwala mi zaoszczędzić „cały dysk”, ale tak naprawdę po prostu zaoszczędzić miejsce.
Oto problem. Powiedzmy, że robię powyższe, ale nie w czystym systemie i nie otrzymuję kopii zapasowych rsync wkrótce, a na obrazie znajdują się pliki, do których chcę uzyskać dostęp. Powiedzmy, że nie mam miejsca do rozpakowania i dodania obrazu do napędu, ale chcę zamontować obraz, aby uzyskać z niego pojedyncze pliki ... Czy to możliwe?
Zwykle nie można skompresować obrazu dd, co pozwoli ci po prostu zamontować obraz za pomocą -o loop
... ale to nie jest mój przypadek ...
Wszelkie sugestie dotyczące montażu skompresowanego obrazu w locie?
Czy użycie AVFS do „zamontowania” pliku gz, a następnie zamontowanie wewnętrznej pracy dd.img (nie wydaje mi się, że tak ... ale wymagałoby weryfikacji ...)?
źródło
SquashFS
do tego rodzaju rzeczy. Usuwa również duplikaty plików.Odpowiedzi:
Zależy to od tego, czy obraz dysku jest obrazem pełnego dysku, czy tylko partycją.
Mycie partycji
Jeśli dysk jest w dobrym stanie, uzyskasz lepszą kompresję, jeśli umyjesz puste miejsce na dysku zerami. Jeśli dysk nie działa, pomiń ten krok.
Jeśli obrazujesz cały dysk, będziesz chciał umyć każdą partycję na dysku.
UWAGA: Należy uważać, chcesz ustawić
of
do pliku w zamontowanej partycji, NIE partycji sobie!Tworzenie obrazu partycji
Gdzie
sda
jest nazwa urządzenia i1
numer partycji. Dostosuj odpowiednio do swojego systemu, jeśli chcesz obrazować inne urządzenie lub partycję.Tworzenie obrazu całego dysku
Gdzie
sda
jest nazwa urządzenia. Dostosuj odpowiednio do swojego systemu, jeśli chcesz obrazować inne urządzenie.Kompresja
Utwórz obraz „squashfs”, który zawiera pełny nieskompresowany obraz.
Kompresja strumieniowa
Aby uniknąć tworzenia osobnego pliku tymczasowego o pełnym rozmiarze dysku, możesz przesyłać strumieniowo do obrazu squashfs.
Montowanie skompresowanego obrazu partycji
Najpierw zamontuj obraz squashfs, a następnie zamontuj obraz partycji zapisany w zamontowanym obrazie squashfs.
Teraz masz zamontowany skompresowany obraz, zamontuj sam obraz (czyli wewnątrz obrazu squashfs)
Teraz twój obraz jest zamontowany pod
compressed_image
.EDYCJA: Jeśli chcesz po prostu przywrócić obraz dysku na partycję w tym momencie (zamiast montować go, aby przeglądać / czytać zawartość), po prostu
dd
obraz wsquash_mount/sda1_backup.img
miejscu docelowym zamiast robićmount
.Montowanie skompresowanego obrazu całego dysku
Wymaga to użycia pakietu o nazwie kpartx. kpartx pozwala montować pojedyncze partycje na pełnym obrazie dysku.
Najpierw zamontuj zgniecioną partycję, która zawiera pełny obraz dysku
Teraz musisz utworzyć urządzenia dla każdej partycji na pełnym obrazie dysku:
Spowoduje to utworzenie urządzeń dla partycji na pełnym obrazie dysku,
/dev/mapper/loopNpP
gdzie N to numer przypisany do urządzenia pętli zwrotnej, a P to numer partycji. Na przykład:/dev/mapper/loop0p1
.Teraz masz sposób na zamontowanie poszczególnych partycji na pełnym obrazie dysku:
źródło
-p
lub,-pf
aby przekazać pseudo-plik. Pseudo plik może być wykorzystywany do tworzenia węzłów urządzeń, których inaczej nie można zrobić bez rootowania (przydatne do budowania obrazów w ramach procesu kompilacji) lub do przesyłania strumieniowego danych wyjściowych niektórych poleceń do obrazu. Jednym z przykładów podanych w dokumentacji (/usr/share/doc/squashfs-tools/examples/pseudo-file.example
na Debianie / Ubuntu) jestinput f 444 root root dd if=/dev/sda1 bs=1024 count=10
skopiowanie pierwszych 10 KB z obrazu dysku do pliku o nazwie „wejście” w obrazie squashfs.Jeśli obraz jest tylko do odczytu , możesz również użyć nbdkit ( strona podręcznika man ) i jego wtyczki xz (xz powinien zapewnić lepszą kompresję i losowy czas dostępu niż gzip).
Utwórz skompresowany obraz partycji
--block-size
Opcja 16 MiB powinien zapewnić dobrą wydajność dostępu losowego.Uwaga: możesz użyć alternatywnych programów do kompresji xz, takich jak pixz, który zapewnia kompresję równoległą, po prostu upewnij się, że dzieli dane wyjściowe na wiele małych bloków, w przeciwnym razie nbdkit będzie musiał zdekompresować dużo danych. Na przykład we wrześniu 2015 r. Pxz nie obsługuje tego.
Podawaj za pomocą nbdkit
Połącz się z serwerem NBD
Zamontuj go tylko do odczytu
Po zakończeniu
Zatrzymaj nbdkit , naciskając Ctrl+ C(lub z kill ).
źródło
Próbować
archivemount
archivemount to oparty na FUSE system plików dla wariantów Uniksa, w tym Linuksa. Jego celem jest montowanie archiwów (tj. Tar, tar.gz itp.) W punkcie montowania, w którym można je odczytać lub zapisać do nich, jak w każdym innym systemie plików. Dzięki temu dostęp do zawartości archiwum, który może być skompresowany, jest przezroczysty dla innych programów, bez ich dekompresji.
http://linuxaria.com/howto/how-to-mounts-an-archive-for-access-as-a-file-system
Po zamontowaniu archiwum możesz używać jego zawartości jak zwykłego pliku. Może zdobądź tablicę partycji lub przekonwertuj, zamontuj obraz za pomocą narzędzi qemu.
squashfs przydatne do uruchamiania z obrazu, ale o wiele skomplikowane do tworzenia kopii zapasowych.
źródło
dd if=/dev/hda conv=sync,noerror bs=64K | gzip -c > /mnt/sda1/hda.ddimg.gz
Ta odpowiedź uzupełnia odpowiedź Cristiana Ciupitu . Jeśli używasz kompresji xz z rozsądnym rozmiarem bloku, możesz uzyskać dostęp do obrazu dysku za pomocą guestfish lub innych narzędzi libguestfs , takich jak to:
źródło
Nie całkiem. Nie można tak naprawdę szukać określonego bloku w skompresowanym pliku bez uprzedniej dekompresji całości, co utrudnia użycie skompresowanego obrazu jako urządzenia blokowego.
Możesz użyć czegoś podobnego
dump
irestore
(lubtar
, naprawdę), z których wszystkie używają formatu przesyłania strumieniowego ... dzięki czemu możesz uzyskać dostęp do poszczególnych plików, skutecznie skanując nieskompresowany strumień. Oznacza to, że jeśli żądany plik znajduje się na końcu skompresowanego archiwum, możesz długo czekać, ale nie wymaga on faktycznej dekompresji wszystkiego na dysk.Korzystanie
tar
z kopii zapasowych może wydawać się nieco staromodne, ale masz dużą elastyczność.źródło
Kolejny dodatek do odpowiedzi Cristiana Ciupitu :
Jeśli użyjesz
nbdkit
do zamontowania pełnego obrazu dysku (vs. obrazu partycji), może być konieczne określenie rozmiaru bloku (rozmiar sektora dysku) podczas łączenia się z serwerem NBD, ponieważ domyślnie jest to1024
bajt. Aby512
zamiast tego użyć bajtów:Następnie dysk będzie wyglądał jak
/dev/nbd0
i powinieneś móc przeglądać tablicę partycji za pomocąfdisk -l
. Jednak partycji nie można jeszcze zamontować - użyjkpartx
(z odpowiedzi doug65536 ), aby utworzyć urządzenia dla partycji, np .:Wreszcie partycje pojawią się w
/dev/mapper/
i możesz je zamontować jak zwykle. Pamiętaj, aby użyć trybu tylko do odczytu (-o ro
), ponieważ wtyczka xz obsługuje tylko odczyty:źródło