Pergunta

Eu tenho backups de arquivos arquivados em meios ópticos (CDs e DVDs). Todas elas possuem arquivos de recuperação par2, armazenados em mídias separadas. Mesmo nos casos em que não existem arquivos par2, pequenos erros durante a leitura em uma unidade óptica pode ser lido bem em outra unidade.

A coisa é, quando a leitura de mídia com defeito, o tempo de leitura é muito, muito longo, porque os dispositivos tendem a repetir várias vezes.

A pergunta é: como posso controlar o número de tentativas (ou seja, definido como Não tentativas ou apenas uma tentativa)? Alguns chamada de sistema? Uma biblioteca eu posso baixar? Eu tenho que trabalhar na camada SCSI?

A questão é principalmente sobre Linux, mas os ponteiros Win32 será mais do que bem-vindos também.

Foi útil?

Solução

man readom, um programa que vem com cdrecord:

   -noerror
          Do not abort if the high level error checking in readom found an
          uncorrectable error in the data stream.

   -nocorr
          Switch  the  drive  into  a mode where it ignores read errors in
          data sectors that are a result of uncorrectable  ECC/EDC  errors
          before reading.  If readom completes, the error recovery mode of
          the drive is switched back to the remembered old mode.
   ...

   retries=#
          Set the retry count for high level retries in readom to #.   The
          default  is  to do 128 retries which may be too much if you like
          to read a CD with many unreadable sectors.

Outras dicas

A melhor disponível ferramenta é dd_rhelp. Apenas

dd_rhelp /dev/cdrecorder /home/myself/DVD.img

, tomar uma xícara de chá e observar os gráficos agradáveis.

O informações do pacote rpm dd_rhelp:

dd_rhelp usa ddrescue em todo o seu disco, e as tentativas de reunir o máximo dados válidos antes de tentar para as idades em badsectors. Se você deixar o trabalho dd_rhelp por tempo infinito, tem um efeito semelhante ao de uma simples dd_rescue. Mas porque você não pode ter esse tempo infinito, dd_rhelp salta sobre setores defeituosos e de resgate dados válidos. No longo prazo, ele analisa todo o seu dispositivo com dd_rescue.

Você pode Ctrl-C-lo sempre que quiser, e reprise-lo à vontade, dd_rhelp retoma a trabalho, uma vez que depende dos arquivos de log dd_rescue cria. Além disso, o progresso é mostrado em um quadro ASCII do seu dispositivo de ser resgatado.

Eu usei-o muito a mim mesmo e é muito, muito realiable.

Você pode instalá-lo do DAG a Red Hat como distribuições.

Ao verificar se hdparm poderia modificar o número de tentativas (não parece tão), eu pensei que, dependendo do tipo de erro, reduzindo a velocidade do CD-ROM pode potencialmente reduzir o número de erros de leitura, o que poderia, na verdade, aumentar a velocidade média de leitura. No entanto, se alguns setores estão completamente ilegível, então, mesmo reduzindo a velocidade do CD-ROM não vai ajudar.

Desde dd foi sugerida, Devo observar que eu sei da existência e tem sg_dd usado, mas a minha pergunta não era sobre os comandos (1) ou (1m), mas chamadas de cerca de sistema (2) ou bibliotecas (3).

Editar

Outro utilitário de linha de comando linux que é de ajuda, é sdparm. O seguinte sinalizador parece tentativas de hardware desativar:

sudo sdparm --set=RRC=0 /dev/sr0

onde /dev/sr0 é o dispositivo para a unidade óptica no meu caso.

Uma vez que você está perguntando sobre o acesso nível de driver, você deve olhar para comandos SCSI, ou talvez um ASPI como API. No windows software VSO (desenvolvedores do blindread / BlindWrite abaixo) desenvolveram uma melhor API muito, Patin-Couffin, que fornece bloqueado o acesso de baixo nível:

http://en.wikipedia.org/wiki/Patin-Couffin

Isso pode ajudar a começar. No entanto, no final do dia, a unidade é ligada a comandos SCSI, mesmo que seja realmente USB, SATA, ATA, IDE, ou de outra forma. Você também pode procurar termos relacionados com ATAPI, que foi uma das primeiras especificações para este CD-ROM camada de interface SCSI.

Eu ficaria surpreso se você não poderia encontrar uma biblioteca linux adequado ou exemplo de lidar com os comandos de nível inferior usando os termos e conceitos da pesquisa acima.


Resposta Mais:

Blindread / BlindWrite foi desenvolvido no auge dos regimes de protecção cd-rom muitas vezes usando setores intencionalmente ruim ou informações de erro para verificar o CD original.

Ele permitirá que você defina uma enorme quantidade de parâmetros, incluindo tentativas. Tenha em mente que a unidade de CD-ROM em si determina quantas vezes a repetição, e eu não tenho certeza que este é configurável através de software para muitos (a maioria?) Unidades de CD-ROM.

Você pode copiar o disco para o formato ISO, ignorando os erros e, em seguida, usar utilitários ISO para ler os dados.

-Adam

Dê uma olhada na ASPI interface. Disponível em Windows e Linux.

dd (1) é seu amigo.

dd if = / dev / CD-ROM de imagem = bs = 2352 conv = noerror, notrunc

A unidade ainda pode repetir um pouco, mas eu não acho que você vai ficar melhor sem modificar firmware.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top