Imagem do sistema do sistema Debian em execução?

22

É possível fazer backup de um sistema Debian em execução para algum tipo de arquivo de imagem, que poderia simplesmente ser gravado em outro disco rígido usando o dd em caso de falhas no sistema Debian original (com backup)?

Estou procurando especialmente uma ferramenta disponível diretamente nos repositórios, pois tenho o Debian Wheezy rodando em um raspberry pi e, portanto, preciso de suporte para a arquitetura ARM, que é bastante confiável para os pacotes dos repositórios Debian.

stefan.at.wpf
fonte
2
Eu não recomendaria tentar obter uma cópia bloco por bloco do sistema de arquivos montado em rw. Gravações menores podem corromper e você acha que possui um backup viável. Portanto, mount -o remount,roa unidade que você está copiando se você optar por dd, dumpou similar. Copiar dentro do sistema de arquivos com rsyncou qualquer outro método, inclusive, cpé seguro para o sistema ativo.
WhimsicalWombat

Respostas:

15

ddé bom se você não se importa em gerar um arquivo de imagem exatamente do tamanho do seu disco bruto. rsyncé bom se você deseja um acesso fácil no nível do arquivo. Mas o meio padrão de fazer backup de um sistema de arquivos é dumpe restore( aptitude install dump).

Para um dispositivo como o Raspberry Pi, eu faria o backup da seguinte forma, assumindo uma tabela de partição do MS-DOS e que o disco seja / dev / sda:

  • dd if=/dev/sda of=sda-boot-sectors.img count=2048 para obter uma imagem da seção de inicialização do disco.
  • fdisk -lu /dev/sda >sda-partition-table.txt para referência humana posterior.
  • dump -0af sda1-root-level0.dump /dev/sda1 e repita para cada partição que você deseja fazer backup.

Você pode comprimir o lote e deixá-lo em algum lugar seguro. Para restaurar, você usaria ddpara restaurar a tabela de partição e setores de inicialização, recarregar a tabela de partição, criar o (s) novo (s) sistema (s) de arquivos e usá-lo cd /mnt/new-filesystem; restore -rf /some-location/sda1-root-level0.dump.

As vantagens:

  • dump obtém uma cópia completa do sistema de arquivos, incluindo ACLs, atributos estendidos, propriedade, arquivos esparsos, atributos especiais do sistema de arquivos - tudo é descartado como está.
  • Ele copiará apenas os blocos necessários, ignorando os não utilizados.
  • É uma ferramenta unix padrão e legível por muitas outras ferramentas unix.

As desvantagens:

  • ele produzirá instantâneos corrompidos se o sistema de arquivos for gravado durante o dump
  • é mais difícil montar a imagem de backup (que você pode fazer com imagens de disco) ou acessar arquivos individuais (que você pode obter com rsyncbackups).
  • É específico do tipo de sistema de arquivos. Você pode despejar um ext3sistema de arquivos e restaurá-lo em ext4um, mas pode despejar qualquer tipo de sistema de arquivos. A maioria dos sistemas de arquivos maduros tem suas dumpversões atuais . O Debian padrão dumppossui ext2, ext3e ext4. Se você usar um sistema de arquivos específico do Flash, suas opções poderão ser diferentes.
Alexios
fonte
Não está indicado na página de manual para a dumpqual o sistema de arquivos não deve ser gravado. Quero dizer, isso parece uma restrição sensata, mas é uma pena que não seja mencionado na página de manual, para que alguém possa cometer esse erro ...
imz - Ivan Zakharyaschev
Graças à sua postagem, eu aprendi sobre essa ferramenta (despejo / restauração). Vou usá-lo para fazer uma cópia de um sistema de arquivos com algo como:mkfs.ext4 /dev/sda1; mount /dev/sda1 /mnt/disk; cd /mnt/disk; dump -0af - /dev/sda5 | restore -rf -
IMZ - Ivan Zakharyaschev
5

Use ddpara o setor de inicialização e rsync -aHSpara os arquivos. Você precisa excluir sistemas de arquivos "virtuais", como / proc / sys e quaisquer discos RAM (tmpfs).

Se você deseja manter o particionamento também, pode despejá-lo sfdiskou recriá-lo parted.

Nils
fonte
Obrigado, parece muito interessante, você já definiu isso no passado? Como crio uma imagem completa dessas partes, basta usar um dispositivo loopkack? (Sim, quero manter o particionamento e assim por diante Quer uma imagem pronta para ser escrita para um novo cartão SD / disco sem mais mexer.)
stefan.at.wpf
@ stefan.at.wpf Acabei de misturar algumas das minhas soluções para clonagem de VMs, criando servidores físicos (autoyast / kistart) criando um espelho raid1 a partir de um sistema não espelhado e a maneira usual de replicar partes (estáticas) do sistema de arquivos para nós do cluster. Eu não uso esse myselv. Meu método seria instalar automaticamente um novo servidor (incluindo um cliente de backup) e depois restaurar por backup o conteúdo do servidor antigo para o novo servidor.
Nils
4

Para o Debian , você realmente só precisa fazer backup de seus dados e arquivos de configuração .

Para fazer backup do estado existente:

  • Faça backup das seleções de pacote com dpkg --get-selections > dpkg_selections.
  • Faça backup do banco de dados debconf com sudo debconf-get-selections > debconf_selections.

Para aplicar isso a um novo sistema:

  • Primeiro aplique as seleções do debconf com sudo debconf-set-selections < debconf_selections.
  • Aplique as seleções de pacote com dpkg --set-selections < dpkg_selections.
  • Instale pacotes com apt-get dselect-upgrade.

Seus dados devem estar principalmente dentro /homee /var(por exemplo, /var/lib/mysqlpara MySQL, /var/wwwApache, etc.). Você deve descobrir quais aplicativos são importantes para você.

A configuração será principalmente em /etc. Novamente, não deve ser difícil escolher o que é importante para você.

bahamat
fonte
Para debconf-get-selectioncorrerapt-get install debconf-utils
pandita
1

Não sei se isso é bom de fazer, quando o sistema está em execução, mas é isso que eu faço.

sudo dd if=/dev/mmcblk0 of=/path/to/backup/directory/backup.img bs=1M

como eu disse, talvez exista uma solução melhor; nesse caso, eu gostaria de conhecê-lo também!

emil
fonte
1

Eu tentei tanto software de backup e restauração e nunca fiquei feliz. Isto é o que eu faço agora: Eu tenho um segundo Debian instalado em um computador sobressalente (o mesmo MB, placa NIC, etc). Toda noite eu sincronizo da máquina A para a máquina B. Existem alguns arquivos que eu retenho (/ etc / network / interfaces, / etc / hosts, / etc / hostname) porque não quero conflitos dos dois sistemas em execução. Na verdade, tenho cópias deles em outra pasta. Também desabilito alguns serviços que não precisam ser executados na máquina B (postfix, mysql, etc). Eu tenho um script escrito na máquina B que basicamente o transformará na máquina A (substitua os arquivos que eu retive), reinicie a NIC e ative os serviços que foram desativados. É claro que a máquina A precisa estar desativada quando eu executo o script ou haverá danos. Testo a máquina B mensalmente, desligando a máquina A, executando o script, e fazendo alguns testes para garantir que esteja atualizado e funcionando corretamente. Ele funciona como um encanto!

Joseph Vernice
fonte
0

Confira o Clonezilla. Eu o vejo listado nos repositórios padrão do Debian. http://clonezilla.org/

Edit: Provavelmente não, os requisitos da lista do Clonezilla na primeira página: "Processador X86 ou x86-64"

Tim
fonte
Projeto interessante, porém, obrigado de qualquer maneira :-)
stefan.at.wpf
0

Para fazer backup do meu pi, removo o cartão microSD e conecto-o ao meu laptop. Em seguida, execute a ddpara produzir um arquivo no disco inteiro no meu laptop, conforme acima:

dd if=/dev/mmcblk0 of=/path/to/backup/directory/backup.img bs=1M
Prumo
fonte
2
Isso literalmente ignora a parte mais importante da questão. A questão é perguntar como criar uma imagem ao vivo de um sistema e, quando você mover os discos, é melhor desligar o sistema.
Sirens
0

Use systemback. Eu consegui funcionar mesmo com o debian stretch. Dá a você um bom usb de inicialização ao vivo com exatamente a área de trabalho configurada.

Pedro
fonte