restore da imagem de disco de entrada com dd, para espaço não alocado ou partição específica

3

Eu já criei uma imagem com dd para o disco de entrada a imagem para o windows 10, e eu restauro do modo de recuperação do Ubuntu

Quando eu quero restaurar as janelas, eu apago o hdd e removo todas as partições

wget -O- 'http://your_webhosting.com/Windows10template.img.gz' | gunzip | dd of=/dev/sda

O tamanho da imagem é de 5 GB comprimido (formato gz), 20 GB não compactado

Eu tive três partições

 Device     Boot     Start        End    Sectors   Size Id Type
    /dev/sda1  *         2048    1026047    1024000   500M  7 HPFS/NTFS/exFAT
    /dev/sda2         1026048  208089944  207063897  98.8G  7 HPFS/NTFS/exFAT
    /dev/sda3       208089949 1953520064 1745430116 832.3G  f W95 Ext'd (LBA)
    /dev/sda5       208090012 1953520064 1745430053 832.3G  7 HPFS/NTFS/exFAT

Tudo que eu precisava era restaurar a imagem criada a partir do disco de entrada para sda1 e sda2 apenas, e mantenha sda5 (meus próprios arquivos)

Eu removi sda1 e sda2 e criei uma nova partição sda1 de 100GB e restaurou a imagem com

wget -O- 'http://your_webhosting.com/Windows10template.img.gz' | gunzip | dd of=/dev/sda1

mas nada mudou. Minhas partições agora são assim

Device     Boot     Start        End    Sectors   Size Id Type
/dev/sda1            2048  195311615  195309568  93,1G 83 Linux
/dev/sda3       208089949 1953520064 1745430116 832,3G  f W95 Ext'd (LBA)
/dev/sda5       208090012 1953520064 1745430053 832,3G  7 HPFS/NTFS/exFAT

O método normal e de trabalho apagou completamente o disco rígido. Eu preciso de um método de trabalho para restaurá-lo para uma única partição ou espaço não alocado

/dev/sda1

Como fazer isso com dd ?

UPDATE

$ fdisk -l Windows10template.img
Disk Windows10template.img: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x266de740

Device                 Boot   Start      End  Sectors  Size Id Type
Windows10template.img1 *       2048  1026047  1024000  500M  7 HPFS/NTFS/exFAT
Windows10template.img2      1026048 41940991 40914944 19,5G  7 HPFS/NTFS/exFAT
    
por ezak 03.01.2017 / 09:43

2 respostas

2

Como os limites de partição na imagem de backup da unidade se alinham com um subconjunto daqueles do layout de disco atual, seria relativamente simples cortar a parte relevante da gunzip de saída e gravá-la nas partes corretas de /dev/sda com dd , mas não vou escrever uma resposta que ajude apenas você a sobrescrever os dados de qualquer outra pessoa. Mesmo para você, existe um grande risco de fazer um cálculo incorreto de offset ou digitar um número errado para o mesmo resultado.

Em vez disso, seria muito melhor descompactar a imagem da unidade em uma mídia de armazenamento grande o suficiente e operá-la. Você pode fazer isso mesmo no modo de recuperação. Mas seria muito mais fácil se você fizesse isso com uma interface gráfica do usuário (por exemplo, de um DVD / USB) - mesmo que você acabe fazendo isso em um terminal.

Suponho que haja pelo menos 25 GB (suficiente para manter compactada e descompactada a imagem de backup) no sistema de arquivos em /dev/sda5 .

  1. Monte o sistema de arquivos em /dev/sda5 .

    • No terminal que funciona com:

      udisksctl mount --block-device /dev/sda5 --options rw
      

      udisksctl dirá onde a unidade foi montada.

    • Como alternativa, você pode usar o gerenciador de arquivos ou os Gnomes Disks para montar o sistema de arquivos.

    Assumirei que o ponto de montagem está localizado em /media/ubuntu/my-data . Ajuste os seguintes comandos de acordo com o ponto de montagem atual.

  2. Faça o download da imagem da unidade compactada com um navegador da Web ou seu cliente HTTP favorito no sistema de arquivos montado anteriormente, e. g .:

    wget -P /media/ubuntu/my-data 'http://your_webhosting.com/Windows10template.img.gz'
    
  3. Descompacte a imagem e armazene a saída no mesmo sistema de arquivos. Você pode usar um gerenciador de arquivos como o File-Roller ou uma ferramenta de linha de comando, e. g .:

    gunzip /media/ubuntu/my-data/Windows10template.img.gz
    
  4. Configure um dispositivo de loop para a imagem da unidade descompactada:

    sudo losetup -f --show /media/ubuntu/my-data/Windows10template.img
    

    losetup mostrará o caminho para o dispositivo de loop. Eu suponho que seja /dev/loop7 . Ajuste os seguintes comandos de acordo com o caminho real do dispositivo.

  5. Diga ao kernel para detectar a tabela de partições dentro do dispositivo de loop (respaldado pela imagem da unidade):

    sudo partprobe /dev/loop7
    

    O kernel adicionará nós de dispositivos de bloco adicionais para as partições detectadas, i. e. /dev/loop7p1 e /dev/loop7p2 .

  6. Copie as partições expostas anteriormente individualmente para o dispositivo de destino. Você pode usar um gerenciador de partições como Gnome Disks ou GParted ou dd . Para o último isso vai fazer:

    sudo dd if=/dev/loop7p1 of=/dev/sda1 bs=8M
    sudo dd if=/dev/loop7p2 of=/dev/sda2 bs=8M
    

    Verifique novamente se você digitou o caminho do dispositivo de destino correto e se o /dev/sda é realmente o que você acha que é! Não confie no kernel para reatribuir o mesmo nome a um dispositivo de bloco nas reinicializações do sistema!

    Você pode verificar a identidade de /dev/sda observando seu layout de partição (por exemplo, com fdisk /dev/sda ou Gnome Disks) ou usar os identificadores de dispositivo exclusivos e (principalmente) estáveis em /dev/disk/by-* .

  7. Verifique se /dev/sda1 e /dev/sda2 contêm os dados pretendidos.

  8. Você está feito. Reinicie no Windows ou faça o que for.

  9. Limpe a imagem da unidade restante quando e como quiser. Remova o dispositivo de loop para ele (se você não reinicializou nesse meio tempo) ou ele não será realmente excluído até que você faça isso:

    sudo losetup -d /dev/loop7
    
por David Foerster 03.01.2017 / 12:13
4

dd é uma ferramenta muito poderosa, mas também muito perigosa. Por favor, backup , o que é novo na unidade de destino (por exemplo, na partição / dev / sda5) antes de começar a adulterar o dd.

Acho que o método menos perigoso seria

  1. clone 'tudo' da imagem de backup para uma unidade extra

  2. clone a primeira partição da unidade extra para a primeira partição da unidade de destino.

  3. Mas você danificou a cabeça da unidade (o primeiro mibibyte), então também é necessário clonar essa parte da imagem de backup para a unidade de destino. Você pode usar count=N para copiar apenas N blocos e o tamanho de bloco padrão é de 512 bytes.

Outro método mais rápido, porém mais arriscado, seria clonar a primeira parte do backup, do head end até o final da primeira partição.

    
por sudodus 03.01.2017 / 10:45