Existem muitos artigos na web que descrevem uma linha de comando para criar uma imagem ISO de um disco DVD-Vídeo como esta:
dd if=/dev/sr0 of=mydvd.iso conv=noerror,sync,notrunc
Eu gostaria de entender por que notrunc
é necessário. Pelo que sei, e pela man
página do comando, notrunc
evita que o arquivo de saída seja truncado. Basicamente, isso significa que, se o arquivo existir, dd
apenas sobrescreve o que já está lá; se houver conteúdo que dd
não seja tocado (talvez buscando outro ponto no arquivo), o conteúdo original será deixado intacto.
Ao fazer uma ISO, certamente você deseja começar com um arquivo novo, limpo e vazio?
A única coisa que consigo pensar é no caso de um disco realmente ruim, o uso notrunc
permite que você execute o mesmo comando dd várias vezes no mesmo arquivo de saída para preencher bits diferentes a cada vez. Se o arquivo de saída não existir, notrunc
não terá efeito.
É isso ou há algum outro motivo que todos especificam notrunc
?
(Não estou perguntando como contornar CSS, ARccOS ou qualquer outra coisa; apenas sobre dd
uso)
Responder1
Se eu tivesse que adivinhar, com base neste comentário doArtigo da Wikipédia sobredd
:
A opção de conversão notrunc significa não truncar o arquivo de saída - ou seja, se o arquivo de saída já existir, apenas substitua os bytes especificados e deixe o restante do arquivo de saída em paz.
o uso de notrunc
é por motivos de desempenho. Não faz sentido reescrever o arquivo inteiro apenas para atualizar alguns bytes/kbytes/megabytes/etc.
OBSERVAÇÃO:A resposta definitiva a esta pergunta deve ser as perguntas e respostas do StackOverflow que@garethTheRedreferenciado nos comentários, intitulado:Por que usar conv=notrunc ao clonar um disco com dd?. A resposta é excelente e inclui um programa C++ que demonstra o efeito que O_TRUNC
tem em dispositivos e arquivos de bloco.
Responder2
Não é necessário se você deseja copiar um DVD inteiro para um arquivo que posteriormente conterá apenas a carga desse DVD. Na verdade, notrunc é um risco para a privacidade e pode causar estouro de mídia se você substituir um arquivo antigo que seja maior que a carga útil do DVD. Neste caso, os blocos excedentes do arquivo antigo permanecerão anexados ao conteúdo do DVD copiado. Assim, eles seriam copiados para um novo DVD junto com o sistema de arquivos.
Bastante útil é o conselho no comentário de starfry de copiar apenas os blocos do sistema de arquivos ISO 9660 (se for realmente ISO 9660) porque a mídia DVD pode fornecer mais blocos do que os do sistema de arquivos.