dd, clone de dispositivo para unidade menor, sem espaço deixado no dispositivo

5

Eu vi várias perguntas, respostas e guias relacionados ao uso de dd, cat e clonezilla para facilitar a clonagem de partições e dispositivos. Em vez de continuar essas discussões, espero dar perguntas muito direcionadas ao dd behavior neste post.

Estou usando o Ubuntu 18.04 LTS ao vivo, inicializado a partir de USB. Eu tenho um disco rígido de 500GB com o Windows7 (/ dev / sda). Eu redimensionei as partições de modo que um pouco mais de 420GB não seja alocado. Eu pretendo fazer backup da tabela de inicialização e partições para um SSD de 120GB (/ dev / sdb). O SSD não tem partições e mostra 110gb não alocado.

sudo dd if=/dev/sda of=/dev/sdb acerta a falha e transmite "Nenhum espaço deixado no dispositivo". Spot verificação de partições usando gparted, vejo / dev / sdb contém as mesmas partições, rótulos, tamanho e não utilizados. A única diferença notável é o espaço não alocado.

Eu sou capaz de inicializar o Windows pelo SSD, mas resta algumas questões relacionadas ao comportamento dd .

  • o dd tentou copiar o conteúdo do dispositivo que não foi alocado?
  • o dd tem uma ordem de operações? (algo como a partição 1- > 99, em seguida, vários blocos de unidade)
  • por acaso eu tive sorte até agora no uso imediato desta unidade do Windows? estou sendo excessivamente paranoico ao pensar que a unidade está com conteúdo ausente?

Por que vale a pena, eu pretendo manter o HDD para o futuro previsível.

    
por jgrump2012 12.08.2018 / 19:40

2 respostas

9

dd não sabe nada sobre partições ou qualquer outra estrutura no disco. Não reconhece partes "alocadas" ou "não alocadas" do disco. Do ponto de vista de dd , um dispositivo dado como parâmetro consiste em uma série de blocos. Portanto, se você executar dd if=/dev/sda of=/dev/sdb , dd copiará blocos começando do início de /dev/sda para os blocos numerados correspondentemente em /dev/sdb , até que tenha lido todos os blocos de /dev/sda ou até que ocorra um erro. No seu exemplo, porque /dev/sdb foi menor que /dev/sda , dd foi encerrado com a mensagem de erro "Nenhum espaço restante no dispositivo" (em /dev/sdb ).

    
por 12.08.2018 / 21:05
1

Johan Myréen explicou eloqüentemente por que sua abordagem resultou em um erro. Há algumas soluções alternativas para copiar uma unidade para uma menor com dd :

  • Como sugerido por mikeserv, em vez de copiar o dispositivo inteiro (/ dev / sda), você pode simplesmente copiar a partição específica que contém seus dados de interesse, por exemplo, / dev / sda1. Isso tem algumas desvantagens: você precisa saber qual partição contém seus dados e, se você limpar a unidade original e desejar restaurá-la, precisará primeiro recriar a estrutura da partição original (idealmente, você tem anotações de como ela se parecia ) e, em seguida, restaure a partição específica. (Se você planeja rodar seu Windows a partir do SSD, esta é provavelmente sua melhor opção (embora o Windows às vezes se oponha a alterações de hardware e queira ser reinstalado, mas isso aparentemente não é um problema em neste caso).
  • Se você não se importar em armazenar o conteúdo da sua unidade em formato compactado, pode tentar algo como sudo dd if=/dev/sda bs=1M | gzip > /path/to/mounted/backup-drive/sda_backup.gz (se o arquivo de backup não for gravável pelo usuário, use sudo -i para um shell raiz ou envolva o conteúdo comando inteiro com sudo sh -c ' comando ' ; estou definindo bs porque o padrão de 512 bytes é ineficiente para grandes quantidades de dados, em vez de gzip você também pode usar outros programas de compactação ). Isso pode ser restaurado com zcat sda_backup.gz | dd of=/dev/sdx bs=1M , mas você não pode inicializar a partir da partição e até mesmo a montagem é complicada (consulte esta questão para uma discussão interessante sobre este aspecto, a resposta por doug65536 também discute" zero-lavagem "para melhorar a taxa de compressão ).

O problema com seu atual estado de coisas é que você copiou a tabela de partições da unidade grande para a menor, o que significa que ela contém informações incorretas sobre qualquer coisa além de 120 GB e, embora isso não impeça você de Inicializando e usando a partição, não é ideal. Você poderia tentar apenas consertar a tabela de partições com algo como gparted (muito mais rápido do que recopilar) e esperar que nada mais fosse criado ou começar do zero.

    
por 13.08.2018 / 07:17

Tags