Jak zmniejszyć plik obrazu po przydzieleniu pełnego miejsca

13

Próbuję wykonać kopię zapasową karty SD Raspberry Pi (Raspbian). Korzystam z Win32DiskImager, aby z powodzeniem odczytać obraz (z czytnika kart SD) na mój dysk twardy - ale teraz problem z rozmiarem. Obraz jest po prostu większy niż oryginalna karta SD i może być zapisany tylko na większej karcie SD, co w przypadku kopii zapasowej ma ten sam problem.

Jak po utworzeniu pliku .img mogę ponownie usunąć całe nieużywane miejsce? (czy to dlatego, że użyłem raspi-config do przydzielenia całej dostępnej przestrzeni do katalogu głównego?)

Próbowałem dowiedzieć się, jak wyglądają partycje w Cygwin, ale nie mogę uruchomić fdisk (-bash: fdisk: nie znaleziono polecenia) - (po przeczytaniu obrazu karty 16 Gb zawierającej niepodzielone miejsce na koniec: możliwe obcinanie? )

Renier Delport
źródło

Odpowiedzi:

12

Więc najlepszym sposobem, jaki znalazłem, jest użycie GParted (możesz albo użyć systemu operacyjnego opartego na Linuksie, albo uruchomić z GParted Live USB). Łatwo jest znaleźć szczegółowe instrukcje, jak szczegółowo wykonać każdy z tych kroków, ale oto ogólna metoda, którą znalazłem do pracy:

  1. Uruchom GParted, znajdź kartę SD na liście urządzeń i zmniejsz główną partycję do tak małej, jak to tylko możliwe.
  2. Weź wartość ostatniego sektora tej partycji i pomnóż go przez rozmiar sektora (512 dla mnie; zakładam, że jest to standard, chociaż możesz to sprawdzić w ustawieniach GParted dla twojego urządzenia): to da ci całkowity rozmiar w bajtach kopiować.
  3. Podziel całkowitą liczbę bajtów przez 4096 (zaokrąglij w górę, jeśli zajdzie taka potrzeba - lepiej zająć trochę więcej miejsca niż za mało), a to da ci „liczbę” do wprowadzenia następującego polecenia w terminalu w systemie Linux środowisko (Prawdopodobnie możesz to zrobić z terminalu systemu operacyjnego GParted Live USB lub w Cygwin bez sudo, o ile działasz jako administrator):

sudo dd if=/dev/mmcblk0 of=/path/to/your/file.img bs=4k count=<count>

W razie potrzeby zmień lokalizację urządzenia wejściowego. To powinno dać ci ostateczny plik obrazu, który jest najmniejszy z możliwych, bez pomijania pustej przestrzeni.

Mike Roberts
źródło
Mogę sprawdzić, czy to działa. Właśnie próbowałem kilka minut temu, aby przejść z karty 8 GB na kartę 4 GB. Powinno to działać, pod warunkiem że Twoje dane są mniejsze niż karta docelowa.
PNDA
Sortuj zapomniałem o tym poście, odkąd przeprowadziłem się. Wypróbuję to w przyszłości. Wygląda na to, że jest to powszechny problem, więc dziękuję za Twój wkład.
Renier Delport
To powinno być oznaczone jako poprawna odpowiedź! Dzięki!
rodripf
jakikolwiek sposób w systemie Windows?
Flash Thunder,
1
Możesz uruchomić z GParted Live USB.
Mike Roberts,
7

Istnieje ładne narzędzie o nazwie pishrink, które zmniejsza rozmiar obrazu dd w największym możliwym stopniu poprzez zmniejszenie partycji root. Jeśli uruchomisz przywrócony obraz przy pierwszym rozszerzeniu partycji do jej maksymalnego rozmiaru, ponownie. Jeśli korzystasz z systemu Windows, po prostu użyj Linuksa na Raspberry, aby zmniejszyć obraz.

framp
źródło
0

Najnowsza wersja Win32DiskImager ma opcję Partycje tylko do odczytu. Zapisuje tylko zużyte miejsce, a nie puste.

  1. Zmniejsz partycję na karcie SD z GParted.
  2. Utwórz obraz za pomocą Win32DiskImager z większej karty.
  3. Napisz obraz za pomocą Win32DiskImager na mniejszej karcie, używając wyżej wspomnianej opcji.
Pavol Fejko
źródło
-1

Prosta odpowiedź brzmi: nie możesz. Jeśli chcesz zmniejszyć obraz, użyj kompresji, co robi większość (na gzipie NIX działa dobrze). Na tej stronie znajdziesz wiele dyskusji na ten temat.

Alternatywą jest tworzenie kopii zapasowych tylko plików. Moje podejście zostało opisane poniżej. /raspberrypi//a/28087/8697

Milliways
źródło
1
możesz (jeśli zawartość danych jest mniejsza niż nowa karta SD)
Wilf
2
Kompresja nie pomoże. Miejsce na plik IMG nie jest kwestią miejsca na dysku. To kwestia miejsca na karcie SD, do której należy zapisać plik IMG
Thomas Weller,
@ Thomas Kompresowanie pliku IMG spowoduje, że będzie on mniejszy, więc (mam nadzieję) zmieści się na karcie SD, na której chcesz go zapisać ... czy coś mi brakuje?
user253751,
@immibis: Możesz spakować plik IMG, aby zajmował mniej miejsca na dysku twardym komputera. Jeśli zapiszesz skompresowane dane na kartach SD, nie uruchomi się. Dane muszą mieć poprawny format, aby się uruchomić, i nie są w formacie gzip.
Thomas Weller,
@Thomas Oh, myślałem, że OP chciał przechowywać kopie zapasowe na innej karcie SD z jakiegoś powodu, a nie je przywracać.
user253751,