Faz o dd copiar tudo, incluindo todos os metadados e todos os blocos "vazios"

6

De repente, algo foi confundido com minhas partições ou apenas uma partição. Eu tenho uma instalação padrão do Ubuntu, em um SSD Kingston, com o sistema de arquivos raiz criptografado com o LUKS, (usando o AES, eu acho). Agora estou tentando montar a partição de um live cd, mas sem sorte.

Estou com tanto medo de causar algum dano adicional que não pode ser desfeito. Então, eu gostaria de fazer uma cópia exata da unidade. Isso significa que todas as tabelas de partição, qualquer tipo de metadado para a partição LUKS, e bem qualquer outro tipo de metadados que eu não conheço. Acho que também quero todos os blocos vazios, para me sentir absolutamente seguro.

Eu sei sobre dd if=/dev/sda of=/dev/sdb , mas não sei se incluirá todos os dados descritos.

Talvez eu precise especificar o tamanho do bloco com -b , mas não entendo como isso funciona e por que é necessário (se for). E eu também não sei como encontrar o tamanho do bloco da partição.

Por favor, diga-me se copia todos dados, e se não, se existe outra maneira.

    
por Mads Skjern 28.07.2015 / 15:24

3 respostas

10

Sim, até mesmo os blocos que não contêm (oficialmente) dados e também todas as informações sobre partições, UUIDs, etc.

Por exemplo a recuperação de dados (ou seja, após a exclusão de arquivos) da unidade copiada por dd seria possível.

Você pode querer ler este sobre as opções noerror e sync .

O tamanho do bloco ( bs= ) não afeta o resultado a menos que haja erros de leitura, mas você deve configurá-lo para "1M" (ou pelo menos "4k") ou levará mais tempo sem um bom motivo. / p>     

por 28.07.2015 / 15:31
4

Basta fazer:

cp /dev/block_device imgfile

Se imgfile estiver localizado em um sistema de arquivos que entende tais coisas, um padrão GNU cp deve escrever a imagem de forma esparsa. Você pode especificar sua preferência, como ...

cp --sparse=always /dev/sda imgfile
A principal utilidade do

dd está em sua capacidade de obter com segurança apenas uma parte especificada de um fluxo, ou de aplicar com eficiência determinadas conversões ao mesmo. Se você quiser uma cópia 1: 1 de todos de um arquivo, então apenas cp it.

    
por 29.07.2015 / 07:11
2

dd não se importa com o que os dados copiados significam. Tabelas de partição, conteúdo de partições, fragmentos de arquivos, espaço vazio no sistema de arquivos, são todos os bytes. dd if=/dev/sda of=/dev/sdb torna /dev/sdb uma cópia exata de /dev/sda , contanto que sdb seja pelo menos tão grande quanto sda (além de alguns itens indesejados que não estarão diretamente acessíveis se sdb for maior). / p>

Toda a magia está nos dispositivos de bloco sdX . dd é apenas uma ferramenta para copiar bytes.

Isso não significa que dd seja a melhor ferramenta para o trabalho. É um tanto propenso a erros e normalmente não é a coisa mais rápida por aí. Eu encontrei cat para ser mais rápido ao copiar entre discos diferentes . dd pode perder dados de maneiras pouco intuitivas (embora eu pense que um sistema Linux moderno é seguro a esse respeito). Usar cat tem a vantagem adicional de haver menos risco de destruir seus dados em um erro de digitação (como trocar if e of ): a saída é especificada pelo familiar operador de redirecionamento de shell (é possível usar essa sintaxe para dd também, a propósito).

cat /dev/sda >/dev/sdb

Se o outro disco for maior, você poderá criar uma imagem do disco em um arquivo:

cat /dev/sda >/path/to/disk.img

Essa imagem de disco não pode ser usada diretamente: você não pode inicializar. Mas copiá-lo de volta para um disco produzirá uma cópia byte a byte do original, já que todo o conteúdo foi copiado nas duas vezes. Você também pode fazer uma montagem de loopback para acessar os arquivos dela. Você pode fazer um dispositivo de loop com partições, mas O Ubuntu só teve as ferramentas para isso nas versões recentes . Se você quiser apenas preservar seus dados, basta copiar as partições individualmente e armazená-las em arquivos individuais.

    
por 29.07.2015 / 02:39