Jak pisać do systemu plików Mac OSX tylko do odczytu?

11

Mam DMG, do którego muszę zamontować i zapisać plik. Po zamontowaniu Finder pokazuje katalog główny i wszystko jako tylko do odczytu.

Potem odkryłem „mount -w”. Ale kiedy to uruchamiam, pojawia się „mount: nieznany specjalny plik lub system plików”.

Jak zamontować ten obraz dysku jako zapisywalny lub zmusić do niego plik?

lustro
źródło

Odpowiedzi:

16

Prawie wszystkie DMG tylko do odczytu są w rzeczywistości skompresowane ( UDZ0- patrz hdiutil(1)strona podręcznika ), więc ich format pliku nie obsługuje po prostu „odwrócenia”, aby można je było zapisać.

Możesz użyć Narzędzia dyskowego lub

hdiutil imageinfo filename.dmg  

... aby zobaczyć, w jakim formacie jest obraz twojego dysku. Następnie możesz użyć Narzędzia dyskowego lub czegoś podobnego

hdiutil convert filename.dmg -format UDSP -o filename.sparseimage  

... aby przekonwertować go na format do odczytu i zapisu. Zauważ, że konwersja nie odbywa się w miejscu, więc musisz powiedzieć mu, aby umieścił plik wyjściowy w systemie plików, który ma wystarczająco dużo miejsca na nieskompresowaną kopię wszystkich danych z twojego .dmg.

.dmgRozszerzenie nie gwarantuje, że obraz jest rzeczywiście skompresowany, ale to zdecydowanie najbardziej prawdopodobnej możliwości.

Dostępnych jest kilka innych możliwości hdiutil. Na przykład, jeśli w .dmgrzeczywistości nieskompresowane jest tylko do odczytu ( UDRO), może być możliwe wymuszenie na nim montowania do odczytu i zapisu. Ponadto, jeśli chcesz pozostawić swój .dmgskompresowany, ale nadal chcesz zamontować go w zapisywalny sposób, możesz zamontować go za pomocą „pliku cienia”; wszystkie zapisy faktycznie są zapisywane do pliku cienia.

Aktualizacja : wydaje się, że inne odpowiedzi na to pytanie .dmgzawsze oznaczają, UDZ0co po prostu nie jest prawdą. Na hdiutil(1)stronie podręcznika znajduje się lista wewnętrznych formatów, .dmgktóre mogą mieć (pamiętaj, że kilka z nich może mieć różne domyślne rozszerzenia nazw plików .sparseimage, ale jestem pewien, że nie jest to również trudna i szybka reguła).

UDRW - UDIF read/write image  
UDRO - UDIF read-only image  
UDCO - UDIF ADC-compressed image  
UDZO - UDIF zlib-compressed image  
UDBZ - UDIF bzip2-compressed image (OS X 10.4+ only)  
UFBI - UDIF entire image with MD5 checksum  
UDRo - UDIF read-only (obsolete format)  
UDCo - UDIF compressed (obsolete format)  
UDTO - DVD/CD-R master for export  
UDxx - UDIF stub image  
UDSP - SPARSE (grows with content)  
UDSB - SPARSEBUNDLE (grows with content; bundle-backed)  
RdWr - NDIF read/write image (deprecated)  
Rdxx - NDIF read-only image (Disk Copy 6.3.3 format)  
ROCo - NDIF compressed image (deprecated)  
Rken - NDIF compressed (obsolete format)  
DC42 - Disk Copy 4.2 image  
Spiff
źródło
Nie zakładałem UDZ0, ale wszystkie typy oprócz UDRW i UDSP (może UDxx UDSB lub UDT0) są tylko do odczytu. Zakładałem, że wszystkie dmgs zostały skompresowane z COŚ, a więc nie do zapisania ... Nigdy świadomie nie spotkałem DMG NIE
poddanego
@Brian - Używam zaszyfrowanego UDSP rutynowo do przechowywania poufnych informacji na moim laptopie (hasła, informacje bankowe itp.).
KeithB
1
Hej, to pomogło bardzo, dzięki! Znalazłem bardzo łatwy sposób, aby to zrobić, spójrz na moją odpowiedź. Bardzo chciałbym usłyszeć twoje myśli.
MW Felker
1
@ MaxFelker Cieszę się, że pomogła mi twoja sugestia użycia pliku cienia. Dzięki za określenie jednego dobrego sposobu na zrobienie tego.
Spiff
Super przydatne, +1 mój koleś!
MW Felker
5

Oto metoda, której właśnie użyłem w projekcie i był to zdecydowanie najlepszy sposób na zrobienie tego. Znaleziono to tutaj:

http://myjeeva.com/best-possible-way-edit-read-only-dmg.html

Załącz plik dmg tylko do odczytu za pomocą hdiutil

hdiutil attach -owners on /path/to/your.dmg -shadow

Zmodyfikuj swój DM. Użyj wiersza poleceń, aby dodawać, edytować lub usuwać zawartość - wykonywanie tego w GUI może mieć dziwne skutki uboczne lub problemy z uprawnieniami. Ponadto może być konieczne sudo poleceń

Odłącz zamontowany dysk za pomocą poniższego polecenia lub Wyrzuć go z Findera

# fill disk number at <number>
hdiutil detach /dev/disk<number>

Konwersja / zapis ukrytego dmg w DMG tylko do odczytu

hdiutil convert -format UDZO -o /path/to/new.dmg /path/to/your.dmg -shadow
MW Felker
źródło
Jestem w Sierra i to nie działa dla mnie. Tworzy plik „.shadow” i montuje dmg, ale podłączony dysk jest nadal tylko do odczytu. Próbowałem nawet zapisać plik .dmg i sprawdziłem, czy plik .shadow jest zapisywalny.
TechSavvySam
1

jeśli w Rd-onry DMG jest wystarczająco dużo „miejsca”, możesz przekonwertować na R / W DMG za pomocą Narzędzia dyskowego i, jeśli chcesz, przekonwertować go ponownie na skompresowany DMG. W przeciwnym razie możesz „rozwinąć” DMG za pomocą hdiutil

junh1024
źródło
-2

Nie możesz pisać do DMG. to nie ma sensu. Musisz skopiować wszystko, edytować i stworzyć nowy DMG.

Przepraszam.

Brian Postow
źródło
To po prostu nieprawda. Możesz tworzyć pliki .dmg do odczytu i zapisu. Ponadto nie musisz kopiować wszystkiego, możesz po prostu przekonwertować obraz dysku na zapisywalny format. Zobacz moją odpowiedź.
Spiff
1
@Spiff, jak sądzę, ale twoje rozwiązanie jest EFEKTYWNIE takie samo jak moje, ponieważ musi się zdekompresować, dodać nowy plik i ponownie skompresować. Jeśli nie jest na miejscu, NAPRAWDĘ nie piszesz do istniejącego DMG ...
Brian Postow
Twoja odpowiedź zawiera fałszywe informacje.
Brian
1
-1, ale jeśli zmienisz wiersz „Nie możesz pisać na DMG” na coś, co jest prawdą, na przykład: „Nie możesz pisać na tylko DMG”, zmienię swój głos. Dzięki!
Dan Rosenstark
-2

Zwykłego obrazu DMG nie można zapisać, ponieważ nie ma możliwości dodania do niego miejsca. Rozwiązanie wskazane przez @Brian_Postow polega na skopiowaniu całej zawartości i utworzeniu nowego pliku DMG. Jeśli planujesz to często robić, następnym razem utwórz rzadki obraz, ponieważ można je zapisać.

Chris Nava
źródło
1
To nie do końca prawda. Rozszerzenie .dmg niekoniecznie oznacza, że ​​jest tylko do odczytu. Zobacz moją odpowiedź.
Spiff
Powinienem powiedzieć „domyślne” zamiast „zwykłe”. Dobre informacje na temat ich konwersji.
Chris Nava