EDIT: Por algum motivo, apenas parte da minha postagem foi salva. Eu atualizei agora para seu conteúdo completo
Embora este tópico circule em torno do Raspberry Pi, ele é aplicável basicamente a todos os cartões SD que possuem a seguinte configuração: um sistema de arquivos ocupa apenas uma fração do tamanho total do cartão. Resumindo, o objetivo desta questão é entender como escreverAPENASo FS (ou mais se houver múltiplas partições) para uma imagem de backup. Mais detalhes podem ser vistos abaixo.
Quando comecei a brincar com o Pi depois de comprá-lo em dezembro do ano passado, tive algumas corrupções no cartão SD e perdi seu conteúdo. Foi devido ao desligamento incorreto da energia em vez de fazer um desligamento normal, então não há problema aqui. Como toda vez que tive que formatar o cartão, escrever a imagem do Raspbian nele, colocar no Pi, inicializar a placa, expandir o sistema de arquivos, reinstalar e reconfigurar tudo comecei a procurar soluções melhores:
- redimensionando a imagem e o FS nelaantesgravando no cartão SD -esselink ilustra perfeitamente como aumentar uma imagem (usando
dd
e/dev/zero
como fonte de entrada) e ajustar oext4
(acho que é EXT4 para o Raspbian (excluindo a pequena partição FAT32 para os componentes de inicialização)). Isso resolve o problema de ter que usar oexpandir sistema de arquivosrecurso da ferramenta de configuração Raspberry que basicamente consome o resto do espaço não formatado, seja 2 GB, 4 GB, 16 GB, 32 GB e assim por diante. É claro que aumentar a imagem também aumenta o tempodd
necessário para gravá-la no cartão SD, mas também permite a próxima etapa de personalização, ou seja, - personalizar o software instalado - usando
chroot
ouproot
(maisqemu
) é possível (como vistoaquieaqui) para instalar/construir o que quiser se você montar corretamente o FS do Raspbian echroot
nele. Esta também é uma etapa essencial para muitas compilações que requerem compilação cruzada (como Qt para Pi) - você pode compilar coisas nativamente no Pi, mas isso ocupa muito espaço e muito tempo.
Então é basicamente assim que tenho feito as 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 no seu PC de forma otimizada. 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) no seu computador ou selecionar o tamanho e o número de setores desejados. A segunda forma oferece um melhor uso do armazenamento, porém requer um cálculo cuidadoso das coisas. Se você encurtar as coisas, poderá acabar com um FS quebrado (ah, não vi isso muitas vezes...).
Estou procurando uma solução que seja muito semelhante ao queClonezillaofertas - você pode clonarapenas os blocos que realmente possuem conteúdoe despeje o resto assimdiminuindo o FSe ser capaz de armazenar um FS totalmente funcional em um espaço muito menor. Fiz isso no ano passado, quando ajudei meu vizinho a salvar os dados de seu disco rígido quebrado em um MacBook.
Exemplo: se você tiver uma instalação do Raspbian Jessie Lite, apenas aprox. 1,3 GB serão usados no seu cartão SD. Agora imagine se o cartão tiver 32GB. Claro, com o tempo você pode querer formatar e usar o espaço restante, mas geralmente esse não é o caso (pelo menos para mim). Então, se eu usar dd
cegamente, basicamente criarei um arquivo de imagem de 32 GB. A compactação cuidará da maior parte dos gigabytes, mas gravá-los de volta no cartão SD posteriormente para restaurar algum estado anterior do seu Raspbian será um processo muito, muito longo. Também posso copiar o FS (novamente com dd
). Mas e se a instalação real (todos os arquivos) ocupar apenas 600 MB ou mais nessa partição? Por que eu iria querer copiar 1,3 GB quando preciso apenas de 600 MB? E se eu tiver um cartão SD com Raspbian onde o recurso "expandir sistema de arquivos" da ferramenta de configuração foi usado e todo o cartão SD estiver formatado, mesmo que n
% dele esteja realmente sendo usado?
Alguma idéia de como fazer isso com o mínimo de esforço e ajustes possível?
Responder1
Despejar/restaurar a pequena partição FAT dd
(se for necessário), mas use e2image -a
(doe2fsprogspacote) para a partição principal. Para restaurar para flash, a -c
opção parece útil (só sobrescreve o que é realmente diferente no destino).
Responder2
Bem, embora não responda diretamente à sua pergunta, aqui está o que fiz para restaurações fáceis
- dd o conteúdo do cartão SD em um arquivo, depois que todos os pacotes necessários foram instalados
- bzipe o arquivo com compactação máxima e mantenha o arquivo de dados compactado como backup
- Em caso de corrupção, restaure o arquivo de backup após bunzip usando dd