dd para clonar para sdcard menor

4

Um dos meus Raspberry Pi's está usando um cartão SD de 4GB para o sistema de arquivos root / boot.

Como visto quando montado em outro sistema:

Disk /dev/sdc: 3904 MB, 3904897024 bytes
121 heads, 62 sectors/track, 1016 cylinders
Units = cylinders of 7502 * 512 = 3841024 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000714e9

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               2          17       57344    c  W95 FAT32 (LBA)
/dev/sdc2              17         800     2938880   83  Linux

Isso mostra que eu estou apenas (e deliberadamente) usando 3 GB dos 4 GB disponíveis e que os cicladores em uso estão alinhados com o começo (se a memória flash funcionar dessa maneira).

No passado, usei o comando cp para migrar um sistema de arquivos existente para um sistema de arquivos de destino menor (já formatado), mas prefiro a simplicidade do comando dd .

Q1: Posso usar com segurança o dd para clonar esse disco para outro cartão SD de 4 GB ligeiramente menor (44 MB a menos)?

Se o disco de origem tivesse uma segunda partição que preenchesse todo o espaço restante no disco, mas tivesse um sistema de arquivos que fosse usado apenas parcialmente, tenho certeza de que com o tempo eu poderia acabar com arquivos espalhados até o final da partição (potencialmente sobrescrevendo os limites do disco de destino físico).

Q2a: há talvez um comando mover-arquivos-para-iniciar-tipo-defrag que eu possa executar para garantir que o final da partição não seja usado?

Q2b: se eu soubesse que o final da partição não estava sendo usado, eu poderia truncar a partição com dd com segurança para o disco de destino menor e corrigir o desalinhamento depois com um simples fsck ?

    
por captcha 14.07.2014 / 08:38

2 respostas

3

Se você está absolutamente certo de que o final da última partição se encaixa na unidade de destino, você pode copiar a unidade por atacado. Não use dd , que é mais lento (a menos que seja usado com opções adicionais e nem sempre, mesmo assim) e mais propenso a erros; simplesmente use cat .

cat /dev/sdc >/dev/sdz

Substitua /dev/sdz pelo caminho correto para a unidade que você deseja substituir. Certifique-se de acertar, já que um erro de digitação de uma única letra pode acabar com o seu sistema! Geralmente, você pode acessar os discos por meio das entradas /dev/disk/by-id/ ou /dev/disk/by-path/ , cujo nome contém uma indicação do modelo de disco e como a unidade está conectada - isso reduz consideravelmente o risco de erros.

Seria menos propenso a erros criar uma tabela de partição no novo disco (com fdisk ou outra ferramenta de sua escolha), certificando-se de que as partições de destino têm o mesmo tamanho (ou maior) do que as partições de origem , e copie cada partição, por exemplo (se você mantiver os mesmos números de partição)

cat /dev/sdc1 >/dev/sdz1
cat /dev/sdc2 >/dev/sdz2

Só porque uma partição (mais precisamente, um sistema de arquivos - Que pontos de montagem existem em um sistema Linux típico? fornece um pouco de fundo) não está completo não significa que você pode copiar o início dele e deixar de lado o fim. Você não pode prever onde os arquivos vão acabar e os sistemas de arquivos contêm dados de controle; copiar um sistema de arquivos truncado lhe dará um sistema de arquivos quebrado (e não conte com fsck para consertar isso - ele poderá usar algo útil, mas não poderá restaurar os arquivos cujo conteúdo estava fora da parte copiada). / p>

Se você quiser copiar ou mover uma partição para um espaço menor ou simplesmente reduzir uma partição, primeiro reduza o sistema de arquivos que ela contém. Por exemplo, para um sistema de arquivos ext2 / ext3 / ext4, execute resize2fs para reduzir o sistema de arquivos. Reduzir o sistema de arquivos é a operação “mover os arquivos para iniciar o tipo de desfragmentação” desejada. Em seguida, você pode usar uma ferramenta como fdisk para reduzir a partição ou copiar o sistema de arquivos para uma partição menor. Apenas certifique-se de que o tamanho da partição seja maior que o sistema de arquivos. O GNU parted pode, às vezes, reduzir um sistema de arquivos e a partição contida de uma só vez (depende do sistema de arquivos e do tipo de partição).

    
por 14.07.2014 / 22:33
1

Você pode usar dd para criar cópias das partições e não de todo o dispositivo.

dd if=/dev/sad1 of=/tmp/boot.img
dd if=/dev/sad2 of=/tmp/root.img

Quanto a Q2b :

Eu fiz isso várias vezes, nunca tive um problema, mas ainda assim isso não é recomendado.

    
por 14.07.2014 / 18:35