Как записать в файловую систему Mac OSX только для чтения?

11

У меня есть DMG, мне нужно смонтировать и записать файл в. Когда я его монтирую, искатель показывает рут и все только для чтения.

Затем я обнаружил 'mount -w'. Но когда я запускаю это, я получаю «mount: unknown special file or file system».

Как я могу смонтировать этот образ диска как доступный для записи или принудительно вставить в него файл?

зеркало
источник

Ответы:

16

Практически все DMG только для чтения сжимаются ( UDZ0- см. Справочную hdiutil(1)страницу), поэтому их формат файла не поддерживает простое «переворачивание», чтобы сделать их доступными для записи.

Вы можете использовать Дисковую утилиту или

hdiutil imageinfo filename.dmg  

... чтобы увидеть, в каком формате находится образ вашего диска. Тогда вы можете использовать Дисковую утилиту или что-то вроде

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

... чтобы преобразовать его в формат чтения-записи. Обратите внимание, что преобразование не происходит на месте, поэтому вам нужно будет указать выходной файл в файловой системе, в которой достаточно места для несжатой копии всех данных из вашей .dmg.

.dmgРасширение не гарантирует , что изображение на самом деле сжатые, но это, безусловно , наиболее вероятной возможностью.

Есть несколько других возможностей, доступных для вас hdiutil. Например, если вы .dmgна самом деле несжатый доступ только для чтения ( UDRO), может быть возможно заставить его монтировать чтение-запись. Кроме того, если вы хотите оставить свой .dmgсжатый файл, но при этом хотите смонтировать его для записи, вы можете смонтировать его с помощью «теневого файла»; все записи на самом деле записываются в теневой файл.

Обновление : Другие ответы на этот вопрос, кажется, .dmgвсегда думают, UDZ0что просто не соответствует действительности. На hdiutil(1)странице man приведен список внутренних форматов, которые .dmgмогут иметь (обратите внимание, что некоторые из них могут иметь различные расширения по умолчанию, например .sparseimage, но я уверен, что это не жесткое правило).

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
источник
Я не предполагал UDZ0, но все типы, кроме UDRW и UDSP (возможно, UDxx UDSB или UDT0), доступны только для чтения. Я предположил, что все dmgs были сжаты с НЕЧТОМ, и поэтому не доступны для записи ... Я никогда не сталкивался с
несжатым
@Brian - я регулярно использую зашифрованный UDSP для хранения конфиденциальной информации на моем ноутбуке (пароли, банковские данные и т. Д.).
KeithB
1
Эй, это очень помогло, спасибо! Я нашел супер простой способ сделать это, взгляните на мой ответ. Хотелось бы услышать ваши мысли.
М.В. Фелкер,
1
@MaxFelker Рад, что мое предложение об использовании теневого файла помогло вам. Спасибо за написание одного хорошего способа сделать это.
Spiff
Супер полезно, +1 мой чувак!
М.В. Фелкер,
5

Вот метод, который я только что использовал для проекта, и был безусловно лучшим способом сделать это. Нашел это здесь:

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

Прикрепите файл dmg только для чтения, используя hdiutil

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

Модифицируйте свою DM. Используйте командную строку для добавления, редактирования или удаления содержимого - выполнение этого в графическом интерфейсе может иметь странные побочные эффекты или проблемы с разрешениями. Кроме того, вам может понадобиться sudo команды

Отсоедините смонтированный диск командой ниже или извлеките ее из Finder

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

Преобразование / запись затененного DMG в DMG только для чтения

hdiutil convert -format UDZO -o /path/to/new.dmg /path/to/your.dmg -shadow
М.В. Фелкер
источник
Я на Сьерре, и это не работает для меня. Он создает файл «.shadow» и монтирует dmg, но подключенный диск все еще доступен только для чтения. Я даже попытался сделать запись в .dmg и убедилась, что файл .shadow доступен для записи.
TechSavvySam
1

если в Rd-onry DMG достаточно «места», вы можете преобразовать его в R / W DMG с помощью Дисковой утилиты и преобразовать его обратно в сжатый DMG, если хотите. В противном случае вы можете «расширить» DMG, используя hdiutil

junh1024
источник
-2

Вы не можете написать в DMG. это не имеет никакого смысла. Вам нужно все скопировать, отредактировать и создать новый DMG.

Сожалею.

Брайан Постов
источник
Это просто неправда. Вы можете создавать файлы для чтения и записи .dmg. Кроме того, вам не нужно копировать все, вы можете просто преобразовать образ диска в записываемый формат. Смотрите мой ответ.
Spiff
1
@Spiff, я полагаю, но ваше решение ЭФФЕКТИВНО так же, как мое, так как оно должно распаковать, добавить новый файл и повторно сжать. Если это не на месте, то вы НЕ ДЕЙСТВИТЕЛЬНО пишете в существующий DMG ...
Брайан Постоу
Ваш ответ содержит ложную информацию.
Брайан
1
-1 но если вы измените строку «Вы не можете написать в DMG» на что-то, что на самом деле верно, например «Вы не можете написать в DMG только для чтения», я изменю свой голос. Спасибо!
Дэн Розенстарк
-2

Обычное изображение DMG недоступно для записи, так как нет возможности добавить к нему место. Как отмечает @Brian_Postow, решение состоит в том, чтобы скопировать все содержимое и создать новый файл DMG. Если вы планируете делать это много, в следующий раз создайте разреженное изображение, так как оно доступно для записи.

Крис Нава
источник
1
Это не совсем так. Расширение .dmg не обязательно означает, что оно доступно только для чтения. Смотрите мой ответ.
Spiff
Я должен был сказать «по умолчанию» вместо «обычный». Хорошая информация о преобразовании их, хотя.
Крис Нава