Por que o dd está criando um arquivo enorme quando tento criar uma imagem de disco de backup?

1

Eu tenho tentado fazer com que CUDA funcione no meu sistema e no processo de mexer com drivers nvidia Eu quebrei o ubuntu o bastante para ter que reformatar minha partição de unidade várias vezes. Eu já fui atingido com esse bastão vezes o suficiente que eu estou tentando fazer o backup da minha partição uma vez que eu instalei todas as minhas ferramentas e programas e outras coisas, usando dd (como recomendado por um amigo).

No entanto, quando corri

sudo dd if=/dev/sda4 of=~/backup.img

Eventualmente recebi um erro dizendo que minha unidade ficou sem espaço. Isso foi estranho para mim, já que a partição é bem grande e eu tenho apenas uma nova instalação do Ubuntu junto com alguns (pequenos) programas nela.

Eu imaginei que o que poderia estar acontecendo é que ele estava tentando recursivamente escrever uma cópia do que já havia escrito, então tentei gravar o arquivo diretamente em outra partição:

sudo dd if=/dev/sda4 of=/media/Ye\ Olde\ Data/ubuntu\ reinstall\ backup/backup.img

Mas isso levou uma eternidade e abortei o processo assim que o arquivo chegou ao tamanho que eu tinha certeza de que era grande demais para conter apenas os dados que eu queria.

O que está acontecendo? É que / media tem as outras partições montadas e, portanto, está tratando as outras partições como parte de / dev / sda4? É que o dd copia a partição inteira byte-by-byte, ignorando quais bytes realmente possuem arquivos neles?

E, seja qual for o caso, como posso fazer o que estou tentando fazer corretamente?

Ah, e aqui está a informação do meu disco, caso isso seja importante:

sudo sfdisk -l /dev/sda

Disk /dev/sda: 62260 cylinders, 255 heads, 63 sectors/track
Warning: extended partition does not start at a cylinder boundary.
DOS and Linux will interpret the contents differently.
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sda1   *      0+     12-     13-    102400    7  HPFS/NTFS/exFAT
/dev/sda2         12+  14602-  14590- 117187500    7  HPFS/NTFS/exFAT
/dev/sda3      29192+  62260-  33069- 265622493+   5  Extended
/dev/sda4      14602+  29191-  14590- 117193728   83  Linux
/dev/sda5      61228+  62260-   1032-   8287232   82  Linux swap / Solaris
/dev/sda6      29192+  61227   32036- 257329138+   7  HPFS/NTFS/exFAT
    
por mavix 24.04.2014 / 02:17

2 respostas

5

Se você copiar uma partição com dd , o arquivo de saída será tão grande quanto a partição. dd faz uma cópia física do disco, não tem conhecimento do espaço em branco ou usado.

Se você comprimir o arquivo resultante, você economizará muito espaço, já que o espaço em branco irá se comprimir muito bem (cuidado, isto será computacionalmente muito pesado). Você pode até compactar a saída de dd instantaneamente, com algo na linha de dd if=/dev/sdaX | gzip -c > compressed_file.gz .

realmente importante:

  

Além disso, você não pode (nunca) fazer um dd em um live (montado)   partição, os dados gravados serão totalmente inconsistentes e   absolutamente não é útil para um backup. Pense nisso: blocos de dados são   continuamente alocado, movido e excluído; é como tirar uma foto   com um longo tempo de exposição a um alvo em movimento.

     

Para copiar a partição com dd você deve inicializar a partir de uma diferente -   USB ao vivo ou o que quer que seja.

O que eu faria para resolver o problema em questão? (observe apenas instruções genéricas, porque você precisa saber o que está fazendo)

Primeira opção compre o Norton Ghost, ou explore as opções opensource: partimage e clonezilla (nunca testei a mim mesmo).

Segunda opção faça isso manualmente:

  1. crie uma partição extra para backups, chame-a / dev / sdX (ou use uma partição de dados comum, o que for).

  2. para backup:

    • inicializar com o live usb
    • monte a partição raiz real em / real
    • monte a partição extra em / extra
    • faça um grande tar na linha de (cd /real && tar cvf /extra/mybck.tar.gz)
  3. para restaurar

    • inicializar com o live usb
    • monte a partição raiz real em / real
    • monte a partição extra em / extra
    • restaure, na linha de (cd /real && tar xvpf /extra/mybck.tar.gz) , tenha cuidado com a opção p para preservar os metadados
    • chroot in / real
    • update grub ou o bootloader que você está usando

Você pode substituir tar pelo seu arquivador preferido, apenas certifique-se de que respeitará a propriedade / modo dos arquivos. rsync vale a pena explorar.

    
por Rmano 24.04.2014 / 04:54
1

O DD provavelmente não é a ferramenta certa para fazer um backup. Como Rmano disse, está fazendo uma cópia direta de / dev / sda4 (provavelmente para / dev / sda4).

Sua resposta está no local.

Confira o rsync para fazer backups.

    
por lbaile200 24.04.2014 / 16:27