Como gravar em um sistema de arquivos somente leitura do Mac OSX?

11

Eu tenho DMG em que preciso montar e gravar um arquivo. Quando eu o monto, o localizador mostra a raiz e tudo como somente leitura.

Então eu descobri 'mount -w'. Mas quando executo isso, recebo 'mount: arquivo especial desconhecido ou sistema de arquivos'.

Como montar esta imagem de disco como gravável ou forçar um arquivo nela?

o espelho
fonte

Respostas:

16

Quase todos os DMGs somente leitura são realmente compactados ( UDZ0- consulte a hdiutil(1)página de manual), portanto, seu formato de arquivo não suporta simplesmente "inverter um pouco" para torná-los graváveis.

Você pode usar o Utilitário de Disco ou

hdiutil imageinfo filename.dmg  

... para ver em qual formato sua imagem de disco está. Então você pode usar o Disk Utility ou algo como

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

... para convertê-lo em um formato de leitura e gravação. Observe que a conversão não ocorre no local, portanto, você precisará informar o arquivo de saída em um sistema de arquivos que tenha espaço suficiente para uma cópia não compactada de todos os dados do seu .dmg.

A .dmgextensão não garante que a imagem seja realmente compactada, mas essa é de longe a possibilidade mais provável.

Existem várias outras possibilidades disponíveis para você hdiutil. Por exemplo, se você .dmgé realmente somente leitura descompactada ( UDRO), pode ser possível forçá-lo a montar a leitura e gravação. Além disso, se você deseja deixar o seu .dmgcompactado, mas ainda deseja montá-lo de forma gravável, pode montá-lo com um "arquivo de sombra"; todas as gravações são gravadas no arquivo de sombra.

Atualização : Outras respostas sobre esta questão parecem pensar .dmgsempre significa o UDZ0que simplesmente não é verdade. Na hdiutil(1)página de manual, aqui está a lista de formatos internos que um .dmgpode ter (observe que alguns deles podem ter diferentes extensões de nome de arquivo padrão.sparseimage , como , mas tenho certeza de que também não é uma regra rígida).

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
fonte
Eu não assumi UDZ0, mas todos os tipos, exceto UDRW e UDSP (talvez UDxx UDSB ou UDT0) são somente leitura. Presumi que todos dmgs foram comprimido com alguma coisa, e por isso não gravável ... Eu nunca vêm conscientemente através de um DMG não comprimido ...
Brian Postow
@Brian - Eu uso um UDSP criptografado rotineiramente para armazenar informações confidenciais no meu laptop (senhas, informações bancárias, etc.).
KeithB
1
Ei, isso ajudou muito, obrigado! Encontrei uma maneira super fácil de fazer isso, dê uma olhada na minha resposta. Gostaria de ouvir seus pensamentos.
MW Felker 02/09
1
@ MaxFelker Fico feliz que minha sugestão de usar um arquivo de sombra tenha ajudado. Obrigado por explicar uma boa maneira de fazê-lo.
Spiff
Super útil, +1 meu cara!
MW Felker
5

Aqui está o método que acabei de usar para um projeto e foi de longe a melhor maneira de fazer isso. Encontre aqui:

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

Anexar arquivo dmg somente leitura usando o hdiutil

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

Modifique seu DM. Use a linha de comando para adicionar, editar ou excluir conteúdo - fazê-lo na GUI pode ter efeitos colaterais estranhos ou problemas de permissão. Além disso, pode ser necessário executar o comando sudo

Desconecte a unidade montada pelo comando abaixo ou ejete-a do Finder

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

Convertendo / gravando um dmg sombreado em DMG somente leitura

hdiutil convert -format UDZO -o /path/to/new.dmg /path/to/your.dmg -shadow
MW Felker
fonte
Estou na Sierra e isso não funciona para mim. Ele cria o arquivo ".shadow" e monta o dmg, mas a unidade montada ainda é somente leitura. Eu até tentei tornar o .dmg gravável e verifiquei que o arquivo .shadow era gravável.
TechTavvySam #
1

se houver "espaço" suficiente no DMG Rd-onry, você poderá converter para um DMG R / W usando o Disk Utility e convertê-lo novamente em um DMG compactado, se desejar. Caso contrário, você pode "expandir" o DMG usando o hdiutil

junh1024
fonte
-2

Você não pode escrever para um DMG. Isso não faz sentido. Você precisa copiar tudo, editar e criar um novo DMG.

Desculpe.

Brian Postow
fonte
Isso não é verdade. Você pode criar arquivos .dmg de leitura e gravação. Além disso, você não precisa copiar tudo, pode simplesmente converter a imagem do disco em um formato gravável. Veja minha resposta.
Spiff
1
@ Spiff, suponho, mas sua solução é EFICAZMENTE a mesma que a minha, pois precisa descompactar, adicionar o novo arquivo e compactar novamente. Se não estiver no local, então você não está realmente escrito ao DMG existente ...
Brian Postow
Sua resposta contém informações falsas.
Brian
1
-1, mas se você alterar a linha "Você não pode escrever para um DMG" para algo realmente verdadeiro, como "Você não pode escrever para um DMG somente leitura", mudarei meu voto. Obrigado!
Dan Rosenstark
-2

Uma imagem DMG comum não é gravável, pois não há como adicionar espaço a ela. A solução, conforme observado por @Brian_Postow, é copiar todo o conteúdo e criar um novo arquivo DMG. Se você planeja fazer muito isso, da próxima vez, crie uma imagem esparsa, pois elas podem ser gravadas.

Chris Nava
fonte
1
Isso não é exatamente verdade. A extensão .dmg não significa necessariamente que é somente leitura. Veja minha resposta.
Spiff
Eu deveria ter dito "padrão" em vez de "regular". Boas informações sobre como convertê-los embora.
Chris Nava 28/05