EDIT: Por alguma razão, apenas parte do meu post foi salvo. Atualizei agora para o seu conteúdo completo
Embora este tópico circule em torno do Raspberry Pi, é aplicável basicamente a todos os cartões SD que possuem a seguinte configuração: um sistema de arquivos aceita apenas uma fração do tamanho total do cartão. Em resumo, o objetivo dessa questão é entender como escrever SOMENTE o FS (ou mais, se várias partições estiverem presentes) em uma imagem de backup. Mais detalhes podem ser vistos abaixo.
Quando comecei a brincar com o Pi depois que o comprei em dezembro do ano passado, tive alguns danos no cartão SD e perdi seu conteúdo. Foi devido a desligar a energia de forma inadequada em vez de fazer um desligamento normal, então não é nada demais aqui. Como cada vez que eu tive que formatar o cartão, escrever a imagem Raspbian para ele, colocá-lo no Pi, arrancar o tabuleiro, expandir o sistema de arquivos, reinstalar e reconfigurar tudo o que comecei a procurar soluções melhores:
- redimensionando a imagem e o FS nela antes de gravá-la no cartão SD - este link ilustra perfeitamente como aumentar uma imagem (usando
dd
e /dev/zero
como fonte de entrada) e ajustar o ext4
(acho que é EXT4 para o Raspbian (excluindo a partição FAT32 pequena para a inicialização) componentes)). Isso resolve o problema de ter que usar o recurso expandir sistema de arquivos da ferramenta de configuração do Raspberry que basicamente consome o restante do espaço não formatado seja 2GB, 4GB, 16GB, 32GB e assim por diante. É claro que aumentar a imagem também aumenta o tempo que dd
precisa para gravá-la no cartão SD, mas também permite a próxima etapa de personalização, ou seja,
- personalizando o software instalado - usando
chroot
ou proot
(mais qemu
) é possível (como visto aqui e aqui ) para instalar / construir o que você quiser se você montar corretamente o FS do Raspbian e chroot
nele . Este também é um passo essencial para muitas compilações que requerem compilação cruzada (como o Qt for Pi) - você pode compilar coisas nativamente no Pi, mas isso requer muito espaço e muito tempo.
Então é basicamente assim que venho fazendo coisas para personalizar minhas imagens. A questão aqui é o conjunto de procedimentos envolvidos na operação inversa - pegar o conteúdo do cartão SD e armazená-lo em seu computador de uma maneira ideal. A compressão é, obviamente, uma das coisas cruciais que você pode fazer, mas não é suficiente. Ao usar dd
, você pode gravar todo o cartão SD (incluindo os blocos vazios) em seu computador ou selecionar o tamanho e o número de setores desejados. A segunda maneira oferece um melhor uso de armazenamento, no entanto, requer cuidadosamente o cálculo de material. Se você cortar as coisas, você pode acabar com um FS quebrado (oh, eu não vi isso muitas vezes ...).
Estou à procura de uma solução muito semelhante à que o Clonezilla oferece - pode clonar apenas os blocos que realmente têm conteúdo e descarregar o resto assim encolhendo o FS e sendo capaz de armazenar um FS totalmente funcional em um espaço muito menor. Eu fiz isso no ano passado quando ajudei meu vizinho a salvar os dados em seu disco rígido quebrado em um MacBook.
Exemplo: se você tiver uma instalação Raspbian Jessie Lite, apenas aprox. 1,3 GB será usado no seu cartão SD. Agora imagine se o cartão é de 32GB. Claro, com o tempo você pode querer formatar e usar o espaço restante no entanto isso geralmente não é o caso (pelo menos para mim). Então, se eu usar dd
cegamente, basicamente vou criar um arquivo de imagem de 32GB. A compressão vai cuidar da maioria dos gigabytes, mas escrevê-lo de volta para o cartão SD em um momento posterior para restaurar algum estado anterior do seu Raspbian será um processo muito, muito longo. Eu também posso copiar o FS (novamente com dd
). Mas e se a instalação real (todos os arquivos) levar apenas 600MB nessa partição? Por que eu iria querer copiar 1,3 GB quando apenas 600 MB são o que eu preciso? E se eu tiver um cartão SD com um Raspbian onde o recurso "expandir sistema de arquivos" da ferramenta de configuração foi usado e todo o cartão SD está formatado, mesmo que n
% esteja realmente sendo usado?
Alguma idéia de como conseguir isso com menos esforço e ajustes possíveis?