Como reduzir um arquivo de imagem após alocar espaço total

13

Estou no processo de experimentar o backup de um cartão SD Raspberry Pi (Raspbian). Estou usando o Win32DiskImager para ler a imagem (do leitor de cartão SD) no meu disco rígido, com sucesso - mas agora o problema é o tamanho. A imagem é apenas maior que o cartão SD original e só pode ser gravada em um cartão SD maior, o que, se você fizer o backup, terá o mesmo problema.

Após criar um arquivo .img, como posso remover todo o espaço não utilizado novamente? (isso é porque eu usei raspi-config para alocar todo o espaço disponível para a raiz?)

Tentei ter uma idéia de como são as partições com o Cygwin, mas não consigo fazer o fdisk funcionar (-bash: fdisk: comando não encontrado) - (depois de ler Imagem de um cartão de 16Gb contendo espaço não particionado em o fim: truncando possível? )

Renier Delport
fonte

Respostas:

12

Portanto, a melhor maneira que encontrei é usar o GParted (você pode usar um sistema operacional baseado em Linux ou inicializar a partir de um GParted Live USB). É simples o suficiente para encontrar instruções detalhadas sobre como executar cada uma dessas etapas em detalhes, mas aqui está o método geral que eu encontrei para trabalhar:

  1. Execute o GParted, encontre o seu cartão SD na lista de dispositivos e reduza a partição principal para o menor tamanho possível.
  2. Pegue o valor do último setor desta partição e multiplique pelo tamanho do setor (512 para mim; presumo que isso seja padrão, embora você possa verificar isso nas configurações GParted do seu dispositivo): isso fornecerá o tamanho total em bytes copiar.
  3. Divida o número total de bytes por 4096 (arredondar para cima, se necessário - é melhor ocupar um pouco mais de espaço do que não o suficiente), e isso lhe dará a 'contagem' para depois entrar no comando a seguir no terminal em um Linux ambiente (Você provavelmente pode fazer isso no terminal do sistema operacional GParted Live USB ou no Cygwin sem o sudo, desde que esteja executando-o como administrador):

sudo dd if=/dev/mmcblk0 of=/path/to/your/file.img bs=4k count=<count>

Altere a localização do dispositivo de entrada, se necessário. Isso deve fornecer um arquivo de imagem final o menor possível, omitindo espaço vazio.

Mike Roberts
fonte
Eu posso verificar se isso funciona. Eu tentei há alguns minutos para passar de um cartão de 8 GB para um cartão de 4 GB. Isso deve funcionar desde que seus dados sejam menores que o cartão de destino.
PNDA
Me esqueci deste post desde que segui em frente. Irá experimentá-lo no futuro. Parece que este é um problema comum, então obrigado pela sua contribuição.
Renier Delport 04/07
Isso deve ser marcado como a resposta correta! Obrigado!
Rodripf
alguma maneira no Windows?
Flash Thunder
1
Você pode inicializar a partir de um GParted Live USB.
Mike Roberts
7

Existe uma boa ferramenta chamada pishrink, que reduz ao máximo o tamanho de uma imagem dd, diminuindo a partição raiz. Se você iniciar a imagem restaurada na primeira vez em que a partição for expandida para o tamanho máximo novamente. Se você executa o Windows, basta usar o Linux no seu Raspberry para diminuir a imagem.

framp
fonte
0

A versão mais recente do Win32DiskImager possui a opção Read Only Allocated Partitions. Ele grava apenas o espaço usado, não vazio.

  1. Encolher a partição no cartão SD com GParted.
  2. Crie uma imagem com o Win32DiskImager a partir de um cartão maior.
  3. Escreva uma imagem com o Win32DiskImager em um cartão menor usando a opção mencionada acima.
Pavol Fejko
fonte
-1

A resposta simples é que você não pode. Se você quiser reduzir a imagem, use a compactação, que é o que a maioria faz (no 'NIX gzip funciona bem). Você encontrará muitas discussões sobre isso neste site.

A alternativa é fazer backup apenas de arquivos. Minha abordagem é descrita a seguir. /raspberrypi//a/28087/8697

Milliways
fonte
1
você pode (se o conteúdo dos dados é menor do que o novo cartão SD)
Wilf
2
A compressão não vai ajudar. Não é uma questão de espaço em disco onde o arquivo IMG está localizado. É uma questão de espaço no cartão SD onde o arquivo IMG deve ser gravado.
Thomas Weller
@ Thomas A compactação do arquivo IMG o tornará menor, de modo que (esperamos) se encaixe no cartão SD no qual você deseja gravá-lo ... estou perdendo alguma coisa?
user253751
@immibis: Você pode compactar o arquivo IMG para que ele gaste menos espaço no disco rígido do seu PC. Se você gravar os dados compactados nos cartões SD, eles não serão inicializados. Os dados precisam estar no formato correto para inicializar e não estão no formato gzip.
Thomas Weller
@ Thomas: Eu pensei que o OP queria armazenar seus backups em outro cartão SD por algum motivo, em vez de restaurá-los.
user253751