Como faço para criar uma imagem um pouco idêntica de um pendrive?

21

Eu tenho um pendrive que é ilegível por algum motivo. Quero criar uma imagem para fins de armazenamento, para tentar recuperar os dados da imagem posteriormente.

Como eu criaria uma imagem tão idêntica de um pendrive?


Este é o erro que recebo ao usar dd:

oshirowanen@desktop:~$ sudo dd if=/dev/sdd of=/USB_image
[sudo] password for oshirowanen: 
dd: reading `/dev/sdd': Input/output error
0+0 records in
0+0 records out
0 bytes (0 B) copied, 1.00783 s, 0.0 kB/s
oshirowanen@desktop:~$ 
oshirowanen
fonte
Qual editor hexadecimal você usa?
AJMansfield
Quando você não consegue ler do dispositivo que /dev/sdxaponta para o pendrive, há um problema sério e acho que não existem ferramentas disponíveis para usuários normais, que funcionarão. Veja este link para mais detalhes, askubuntu.com/questions/144852/… ; Não desista imediatamente. Tente de acordo com a lista de coisas que podem facilitar a leitura. Talvez você possa separar o pendrive USB e encontrar um cartão micro SD, que ainda esteja funcionando de acordo com o comentário de @ ubfan1 (na resposta vinculada).
sudodus
você tem 2 opções para resolver seu problema: 1 fácil: execute sudo su e, como root, execute seu comando dd 2 versão mais qualificada, execute dd with status e '' sudo bash -c 'dd status = progress if = / dev / sd * gzip> ~ / Backup-USB.img.gz '
WiKrIe

Respostas:

39

dd isto!

Uso seria algo como sudo dd if=/dev/sdb of=~/USB_image, onde / dev / sdb é o seu drive USB, conforme listado por sudo fdisk -le ~ / USB_image é o arquivo de imagem onde a cópia será feita (um caminho onde o arquivo de imagem será criado).

Para restaurar a imagem em outra unidade USB, basta inverter o processo: sudo dd if=~/USB_image of=/dev/sdbrestaurará ~ / USB_image no dispositivo sdb . Apenas certifique-se de que a nova unidade USB seja tão grande ou maior que a original.

Você também pode montar o arquivo de imagem que acabou de criar em um caminho sem precisar restaurá-lo primeiro para outra unidade USB com mount ~/USB_image /mnt/USB_image -o loop.

Bruno Pereira
fonte
E se fdisk -lnão conseguir ver a unidade USB? No entanto, eu posso vê-lo no programa Utilitário de Disco como / dev / sdd, mas quando tento usar seu comando, ele parece falhar.
oshirowanen
Falhar com que falha?
Bruno Pereira
Adicionado o erro à pergunta original, pois era demais para um comentário.
Oshirowanen
11
Se o fdisk não exibir o dispositivo, use o dmesg para ver o que está acontecendo quando o dispositivo estiver conectado.
j0h
2
Uso @Alex status='progress'com dd no Ubuntu, ou descobrir o PID do seu ddcomando e enviá-lo SIGUSR1sinalizar. Não tenho certeza sobre outras implementações, no entanto.
Sergiy Kolodyazhnyy
7

Use ddrescue. Ele continuará após erros, onde ddsimplesmente falhará.

Além disso, ddrescueestá nos repositórios. No 13.04, digitei sudo apt-get install gddrescue para instalar.

Use sudo fdisk -lou dmesgpara descobrir a localização do dispositivo, por exemplo: e /dev/sdb, em seguida, execute um comando como

ddrescue /dev/sdb /home/user/desktop/bkp.img

existem muitas opções para ddrescue, e você pode querer ler as manpáginas. Também não sei por que seu hardware está falhando e fazendo o dumping dd. Um bloco ruim poderia ddsair, mas também falhas de energia intermitentes. dmesgpode falar mais sobre falhas de hardware que você pode estar enfrentando.

VERIFIQUE se o dispositivo não está montado! quando você tenta recuperar dados, imagens, etc. Isso pode causar problemas.

Há muitas coisas que podem dar errado na recuperação de dados. Publique de volta se você tiver problemas. testdiské um bom utilitário para recuperar dados depois de ter uma imagem.

Apenas para maior clareza, este é um disco rígido USB ou dispositivo USB (memória de estado sólido)?

Os erros de E / S são geralmente indicativos de mau funcionamento do hardware, em vez de corrupções no sistema de arquivos.

Tente também obter a análise de dados SMART do dispositivo, se estiver disponível. Isso pode lhe dizer coisas como se o dispositivo estiver sob aquecimento, ligado por um longo tempo, tiver setores defeituosos, expostos a mais de X não. de Gs etc.

j0h
fonte
USB stick, não há dados SMART para analisar ... Eu também acho que você precisa usar sudopara ddrescue* onde dd simplesmente falhará * não é realmente verdade, pois você pode configurar ddpara ignorar erros de leitura. testdiské incrível quando você pode ler os setores de dados perdidos , não quando a unidade está morta.
Bruno Pereira
# é o símbolo da raiz, portanto não, sudo não é necessário. se fosse $ então sim.
j0h
Também quero observar que, se o ddrescue, ou mesmo o dd falhar, mas você conseguir gerar uma imagem, ainda poderá tentar recuperar os dados nessa imagem.
J0h 13/07
Eu sugeriria o uso de gddrescuecontra, ddrescueuma vez que gddrescueé mais novo e mais capaz de fazer o trabalho que ddrescuefaz.
Bruno Pereira
11
Eu nem conheço homem, leia meu post. gddrescue é o pacote e ddrescue é o comando.
J0h 13/07
2

Você pode criar uma imagem de um pen drive (ou outro dispositivo) usando dd.

Por exemplo

dd if=<usb device> of=usb.img

Você pode adicionar mais parâmetros ddpara otimizar o comando (por exemplo bs).

Uwe Plonus
fonte
2

dd, como mencionado em um pôster anterior, é o caminho nativo a seguir. Você deseja que ele continue com os erros, portanto, iniciá-lo com:

dd if=<usb device> of=<new file on disk with enough space> bs=<should match your blocksize> conv=noerror,sync 

A parte importante é a última: conv=syncdiz ao dd para preencher todos os blocos que poderia ler apenas parcialmente com zeros, para que a imagem resultante possa ter alguns zeros a mais, mas será estruturalmente igual ao disco escamoso, menos seus erros de leitura. conv=noerror cuidou desses erros de leitura, dizendo ao dd para continuar com o próximo bloco. Nesse ponto, o tamanho do bloco é importante, pois se for maior que o necessário para ignorar o erro, os dados legíveis serão perdidos aqui. O tamanho do bloco sempre deve ser um fator de dois - em caso de dúvida, 512kdeve fazer o truque.

Então eu sugiro:

  • armazene uma cópia não modificada dessa imagem em algum lugar seguro
  • fsck uma cópia da imagem do disco
  • montar a imagem do disco
  • verifique seus arquivos - eles estão legíveis sem problemas agora, mas alguns podem estar ausentes ou estar truncados
  • Se o dispositivo em si não puder ser lido, você pode estar sem sorte. Além disso, se o dispositivo contiver algum software proprietário, ele poderá ser configurado para retornar erros de leitura quando acessado nos primeiros blocos.

(Citando-me parcialmente de um artigo escrito em 2010)

Se você não precisar permanecer nativo, poderá sempre tentar ferramentas que estejam tentando facilitar um pouco o processo, como ddrescue (pacote gddrescue) e seu companheiro ddrescueview( sourceforge ) para visualizar os erros.

Tatjana Heuser
fonte
2

Com relação à segunda metade da sua pergunta "Esse é o erro que recebo ao usar o dd": posso ver algumas possibilidades.

  1. Observe a diferença no comando digitado versus a resposta aceita; você está perdendo um ~na frente /USB_image. Em outras palavras, você está tentando gerar a raiz do seu sistema de arquivos em vez de para o diretório inicial.
  2. /dev/sddpode não ser a unidade correta. Execute sudo fdisk -le compare o tamanho da unidade com o tamanho conhecido do pen drive. Por exemplo, eu sei que este é o meu stick USB porque é perto de 16GB: Disk /dev/sdf: 15.8 GB, 15805186048 bytes.
MDMower
fonte