Backup e recuperação de todo o sistema

0

No momento, estou fazendo o backup do meu Raspberry Pi 3 para um NAS local usando este comando:

sudo dd if=/dev/mmcblk0 bs=1M | gzip > /mnt/MyCloud/"$(date +%FT%T)".gz

Isso deve ser executado diariamente, usando o cron job.

  • Isso é suficiente para a recuperação, se a unidade morrer?
  • Existe uma maneira melhor / mais rápida?
  • Se eu quiser recuperar todo o sistema, como eu faria isso? A unidade está comprimida, por isso não posso apenas dd if=my-backup.gz of=/dev/mmcblk0 , penso
por Amit 12.01.2017 / 20:40

2 respostas

2
  1. É mais do que suficiente para a recuperação (na verdade, não é recomendável fazer isso no sistema ativo, mas se você não usar arquivos alterados frequentemente, como banco de dados, por exemplo, o sistema poderá descobrir como restaurar a recuperação. Se você não tiver um banco de dados, use apenas sync;sync;sync antes de iniciar o backup completo do sistema para garantir que o cache do arquivo tenha sido enviado para a unidade)
  2. leia abaixo para IMHO uma solução melhor
  3. use apenas gunzip -c /path/to/your.image.gz | dd of=/dev/sdX

IMHO é desperdício de espaço na unidade de backup, você está clonando o mesmo conteúdo inalterado várias vezes. Use tar no modo incremental, ele fará backup apenas das alterações entre os anteriores.

Exemplo simples de backup incremental com tar

#!/bin/sh

TAR='/bin/tar'
DATE='/bin/date'
SrcDir='/'
BkpDir='/mnt/MyCloud'
f=$($DATE '+%Y-%m-%dT%H-%M-%S')
snar="${BkpDir}/snar.diff" # If you need full backup then remove 
                           # ${snar} file before doing backup

[ -f "${snar}" ] && level=1 || level=0

$TAR -czf "${BkpDir}/${f}_dump.level.${level}.tgz"   \
    --listed-incremental=${snar}    \
    --no-check-device               \
    --totals                        \
    --level=${level}                \
    --directory=${SrcDir}           \
    --exclude=tmp/*                 \
    --exclude=media/*               \
    --exclude=mnt/*                 \
    --exclude=proc/*                \
    --exclude=sys/*                 \
    --exclude=dev/*                 \
    --exclude=run/*                 \
    --exclude=var/tmp/*             \
    --exclude=var/run/*             \
    --exclude=var/lock/*            \
    --exclude=var/cache/locate/*    \
    --exclude=var/dcc/dccifd                \
    --exclude=var/lib/amavis/amavisd.sock   \
    --exclude=var/lib/php5/sess_*           \
    --exclude=var/spool/postfix/dev/*       \
    --exclude=var/spool/postfix/pid/*       \
    --exclude=var/spool/postfix/private/*   \
    --exclude=var/spool/postfix/public/*    \
    --exclude=backup                        \
    --exclude=${BkpDir}                     \
    .
    exit $?
    
por 12.01.2017 / 20:54
0

talvez eu esteja sendo simples aqui, mas depois de olhar as opções para DD e crontab para backups de agendamento etc., eu decidi por uma abordagem diferente, em parte porque estou mais acostumado com sistemas Windows.

  1. desligue o RPi.
  2. remova o cartão SD
  3. ir para o Windows PC (o Linux funcionaria, mas usando o DD eu suponho)
  4. Use o Win32DiskImager para LER conteúdo para arquivo.

Eu só faço isso a cada mês, porém, além de atualizações do sistema, poucas mudanças no sdcard. Download do Imager em Disco do Win32 @ sourceforge

Isso forneceria um backup completo do sistema. Como dito acima, vi pouco sentido ter várias cópias da minha unidade inteira além de ocupar espaço. Meu método fornece o backup completo, e meus outros arquivos (pasta de música e webserve dlna, por exemplo) não são armazenados no sdcard de qualquer maneira, eles estão em uma unidade USB. Meu caminho é simples como eu lol mas funciona. Caso contrário, a abordagem de backup incremental de alcatrão parece muito boa.

    
por 14.01.2017 / 09:37