fundo
Estou copiando alguns CDs / DVDs de dados para arquivos ISO para usá-los mais tarde, sem a necessidade deles na unidade.
Estou procurando na Net por procedimentos e encontrei muito:
Uso de
cat
para copiar um meio: http://www.yolinux.com/TUTORIALS/LinuxTutorialCDBurn.htmlcat /dev/sr0 > image.iso
Use
dd
para fazer isso (aparentemente o mais utilizado): http://www.linuxjournal.com/content/archiving-cds-iso-commandlinedd if=/dev/cdrom bs=blocksize count=count of=/path/to/isoimage.iso
Use apenas
pv
para fazer isso: Vejaman pv
para obter mais informações, embora aqui esteja um trecho:Taking an image of a disk, skipping errors: pv -EE /dev/sda > disk-image.img Writing an image back to a disk: pv disk-image.img > /dev/sda Zeroing a disk: pv < /dev/zero > /dev/sda
Não sei se todos devem ser equivalentes, embora tenha testado alguns deles (usando a md5sum
ferramenta) e, pelo menos, dd
e nãopv
sejam equivalentes. Aqui estão os arquivos gerados e da unidade usando cada procedimento:md5sum
md5 do procedimento dd: 71b676875b0194495060b38f35237c3c
MD5 do procedimento PV: f3524d81fdeeef962b01e1d86e6acc04
EDIT: Essa saída foi de outro CD que a saída fornecida. De fato, eu percebi que existem alguns fatos interessantes que eu forneço como resposta.
De fato, o tamanho de cada arquivo é diferente em comparação.
Portanto, existe um melhor procedimento para copiar um CD / DVD ou estou apenas usando os comandos incorretamente?
Mais informações sobre a situação
Aqui estão mais informações sobre o caso de teste que estou usando para verificar os procedimentos que encontrei até agora:
isoinfo -d i /dev/sr0
Saída: https://gist.github.com/JBFWP286/7f50f069dc5d1593ba62#file-isoinfo-output-19-aug-2015
dd
para copiar os meios de comunicação, com somas de verificação de saída e saída de informações do arquivo: https://gist.github.com/JBFWP286/75decda0a67605590d32#file-dd-output-with-md5-and-sha256-19-aug-2015
pv
para copiar os meios de comunicação, com somas de verificação de saída e saída de informações do arquivo: https://gist.github.com/JBFWP286/700a13fe0a2f06ce5e7a#file-pv-output-with-md5-and-sha256-19-aug-2015
Qualquer ajuda será apreciada!
cmp file1 file2
? você usoudd
com o erradocount=
(ou realmente alguma contagem que não é necessária se você quer a coisa toda?). Leia erros no dmesg?dd
comando exato que você usou (qual o tamanho do bloco? O que conta?), (2) os tamanhos e somas de verificação de todas as saídas e (3) qualquer informação independente que você tenha sobre a quantidade de dados no disco óptico de origem. ... ... ... ... ... ... PS Por que você está usandocount=
emdd
? Você deseja copiar toda a imagem do disco, não é?count=
diz "copie isso e pare".isoinfo -d -i /dev/cdrom
para saber o número da contagem e usá-lo - na verdade, ele diz que não se deve usar apenasdd
. "De qualquer forma, se você quiser uma imagem ISO adequada desse CD, precisará corrigir o tamanho e a contagem de blocos antes de criar sua imagem."Respostas:
Todos os seguintes comandos são equivalentes. Eles lêem os bytes do CD
/dev/sr0
e os gravam em um arquivo chamadoimage.iso
.Por que você usaria um sobre o outro?
Simplicidade. Por exemplo, se você já conhece
cat
oucp
não precisa aprender outro comando.Robustez. Este é um pouco de uma variante da simplicidade. Qual é o risco de mudar o comando para mudar o que ele faz? Vamos ver alguns exemplos:
set -o noclobber
verifique se você não substituiu nada; no entanto, você pode substituir um dispositivo se escrever acidentalmente>/dev/sda
(para um CD, que é somente leitura, não há riscos, é claro). Isso fala em favor decat /dev/sr0 >image.iso
(é difícil errar de uma maneira prejudicial) sobre alternativas comotee </dev/sr0 >image.iso
(se você inverter os redirecionamentos ou esquecer a entrada na qual a entradatee
será gravada/dev/sr0
).cat
: você pode acidentalmente concatenar dois arquivos. Isso deixa os dados facilmente recuperáveis.dd
:i
eo
estão perto do teclado, e um pouco incomum. Não há equivalentenoclobber
,of=
substituirá felizmente qualquer coisa. A sintaxe de redirecionamento é menos suscetível a erros.cp
: se você trocar acidentalmente a fonte e o destino, o dispositivo será substituído (novamente, assumindo um dispositivo não somente leitura). Secp
for chamado com algumas opções como-R
ou-a
que algumas pessoas adicionam por meio de um alias, ele copiará o nó do dispositivo em vez do conteúdo do dispositivo.Funcionalidade adicional. A única ferramenta aqui que possui funcionalidade adicional útil é
pv
, com suas poderosas opções de relatório.Mas aqui você pode verificar quanto foi copiado observando o tamanho do arquivo de saída de qualquer maneira.
Atuação. Este é um processo vinculado à E / S; a principal influência no desempenho é o tamanho do buffer: a ferramenta lê um pedaço da fonte, grava o pedaço no destino, repete. Se o pedaço for muito pequeno, o computador gasta seu tempo alternando entre tarefas. Se o pedaço for muito grande, as operações de leitura e gravação não poderão ser paralelas. O tamanho ideal do pedaço em um PC é tipicamente de alguns megabytes, mas obviamente depende muito do sistema operacional, do hardware e do que mais o computador está fazendo. Fiz benchmarks de cópias de disco rígido para disco rígido há um tempo atrás, no Linux, que mostrou que para cópias dentro do mesmo disco,
dd
com um tamanho de buffer grande, tem a vantagem, mas para cópias em disco cruzado,cat
conquistou qualquerdd
tamanho de buffer.Existem algumas razões pelas quais você é
dd
mencionado com tanta frequência. Além do desempenho, eles não são razões particularmente boas.cat
(ele estava com mais ferramentas orientada a linha comohead
,sed
, etc.), mas as pessoas tendem a evitá-lo em dados binários por causa de sua associação com o processamento de texto. Isso não é um problema em sistemas modernos, como Linux, OSX, * BSD ou qualquer coisa que seja compatível com POSIX.dd
é um pouco "de nível inferior" do que outras ferramentas comocat
e acessa dispositivos diretamente. Isto é completamente falso:dd
ecat
etee
e os outros todos leitura bytes a partir de sua entrada e escrever os bytes para a sua saída. A verdadeira magia está em/dev/sr0
.dd
possui uma sintaxe de linha de comando incomum, portanto, explicar como funciona dá mais uma oportunidade de brilhar, explicando algo que acabou de ser escritocat /dev/sr0
.dd
com um tamanho de buffer grande pode ter um desempenho melhor, mas nem sempre é o caso (consulte alguns benchmarks no Linux ).Um grande risco
dd
é que ele pode ignorar silenciosamente alguns dados . Eu acho quedd
é seguro enquantoskip
oucount
não for aprovado, mas não tenho certeza se esse é o caso em todas as plataformas. Mas não tem vantagem, exceto pelo desempenho.Portanto, basta usar
pv
se você quiser um relatório de progresso sofisticado oucat
se não quiser.fonte
pv < /dev/sr0 > image.iso
o mesmo quepv /dev/sr0 > image.iso
(o último é encontrado nas páginas de manual do pv)?pv /dev/sr0 …
podem incluir o nome do arquivo nos relatórios de progresso, enquantopv </dev/sr0
não podem.cp
pode ser um alias paracp -R
, que (pelo menos no GNU cp, como root) fazcp
com que copie o nó do dispositivo em vez de seu conteúdo./dev
são nós de dispositivos. Por exemplo,cp -R /dev/sr0 image.iso
criariaimage.iso
um arquivo através do qual a unidade de CD é acessada, assim como/dev/sr0
, em vez de um arquivo regular contendo cópia do conteúdo do CD com o qual você se encontracp /dev/sr0 image.iso
.dd
batidacat
, mas apenas por uma pequena margem.Existem fatos interessantes neste caso, especialmente os seguintes:
dd
epv
), as somas de verificação são idênticas .dd
procedimento, abrir a unidade e fechá-la com o mesmo disco e, em seguida, terminar o teste com opv
procedimento. Fazendo exatamente isso, obtive cópias idênticas nos dois procedimentos.dd
sem ocount=X
parâmetro para corretamente no final do disco e fornece a mesma imagem de disco quepv
(as somas de verificação são idênticas), por isso é melhor eu usardd
parâmetros sem ou apenaspv
.Então, por enquanto, parece
pv
edd
pode conseguir uma cópia em CD / DVD com os mesmos resultados.fonte