Eu uso muito o Virtual Box para fins de teste de distribuição / aplicativos.
Um dos recursos que eu simplesmente amo é o instantâneo das máquinas virtuais, que salva o estado de uma máquina virtual e é capaz de restaurá-la à sua antiga glória se algo que você deu errado sem problemas e sem consumir todo o espaço em disco rígido.
Nos meus sistemas ativos, sei como criar uma imagem 1: 1 do sistema de arquivos, mas todas as soluções que conheci criarão uma nova imagem do sistema de arquivos completo.
Existem programas / sistemas de arquivos capazes de tirar um instantâneo de um sistema de arquivos atual, salvá-lo em outro local, mas em vez de criar uma nova imagem completa, ele cria backups incrementais?
Para descrever facilmente o que eu quero, deve ser como dd
imagens de um sistema de arquivos, mas em vez de apenas um backup completo, também criaria incremental.
Não estou procurando pelo clonezilla etc. Ele deve ser executado no próprio sistema sem nenhuma (ou quase nenhuma) intervenção do usuário, mas deve conter todos os dados dos sistemas de arquivos. Também não estou procurando um duplicity
backup de todo o seu sistema, excluindo algumas pastas de script + dd
para salvar seu mbr. Eu posso fazer isso sozinho, procurando uma elegância extra.
Estou procurando por algo que possa fazer antes de fazer alterações maciças em um sistema e, se algo estiver errado ou queimou meu disco rígido depois de derramar café nele, posso inicializar a partir de um liveCD e restaurar um instantâneo de trabalho em um disco rígido.
Não precisa ser diário, nem precisa de um horário. Basta executar de vez em quando e deixá-lo funcionar, de preferência com base em RAW e não em cópia de arquivo.
fonte
Respostas:
Para explicar a resposta de cprofitt (como sua resposta é incremental, como explicarei) ...
Primeiro você precisa saber sobre links físicos.
Os links físicos apontam para os dados que estão realmente no disco (o local físico) e você pode acessar os dados usando o link físico. Cada arquivo e diretório é um link físico para o local dos dados no disco físico. Portanto, se houver dois arquivos (links físicos) apontando para o mesmo local, os dados serão armazenados apenas uma vez .
O processo dado pelo cprofitt envolve:
Gire os backups para criar um local para um novo. ("O backup de hoje" de ontem se torna "O backup de ontem", "O backup de ontem" de dois dias atrás se torna "O backup de dois dias atrás" e assim por diante)
Copie o instantâneo mais recente que você fez (por exemplo, "Backup de ontem") para o local do novo (por exemplo, "Backup de hoje"), criando novos links físicos para os arquivos existentes sem copiar o arquivo. Portanto, todos os arquivos no novo instantâneo estão apontando para o mesmo local que o anterior .
Um exemplo ilustrado
Na figura abaixo, arquivos da mesma cor e com o mesmo nome são links físicos para o mesmo arquivo no disco. Aqui estamos apenas lidando com dois instantâneos e alguns arquivos, mas o exemplo é escalável. (Exceto pelo fato de eu estar movendo os snapshots da maneira oposta aos scripts na resposta do cproffit)
O processo é este:
Há uma captura instantânea do sistema.
O instantâneo é cópias (criando links físicos para os arquivos existentes)
O Rsync é executado para atualizar o instantâneo. Quando os arquivos são alterados, ele armazena o novo arquivo como uma nova cópia no disco rígido (para que o instantâneo mais antigo não seja alterado). Neste exemplo, o arquivo B foi alterado. Nota: agora temos apenas 1 cópia do arquivo A e do arquivo C e duas cópias do arquivo B armazenadas no disco rígido
Gire os instantâneos (nesse caso, o instantâneo 0 'cai' e é excluído e renomeio o instantâneo 1 para o instantâneo 0)
Copie o instantâneo novamente (repita a etapa 2)
Rsync novamente. (Repita a etapa 3). Agora, temos 1 cópia do arquivo A e 2 cópias do arquivo B e do arquivo C
Uma versão simplificada do [primeiro] script (não deve ser executada, apenas como um trampolim) é esta:
Agora, o (s) script (s) completo (s) tem a explicação completa aqui (como cprofitt vinculado a) e é mais completo, mas é basicamente o descrito acima. O outro script é para agrupar snapshots e a outra parte da resposta do cprofitt fala sobre como automatizar o processo (usando cron) e verificar se o backup foi bem-sucedido.
Você pode alterar os nomes, portanto, em vez de os diretórios serem chamados "de hora em hora ...", eles são chamados de outra coisa e o script é executado manualmente.
Para restaurar o lote inteiro, copie o instantâneo mais recente (ou um anterior) de volta para o diretório em que você estava fazendo os backups.
Para restaurar um único arquivo que ainda está em uma captura instantânea, vá para a captura instantânea e copie-o de volta para onde ele pertence.
A mídia de backup pode ser um disco rígido externo (deve ser ext2 / ext3 / ext4). Se você estava fazendo backup
/
(principalmente/boot
,/home
,/etc
/root
e/usr
), em seguida, dizer ...Você monta a unidade externa, executa o backup e cria a captura instantânea mais recente.
Desmonte a unidade.
Lembre-se de que você excluiu um arquivo (mesmo do lixo) que queria.
Conecte a unidade externa e recupere o arquivo.
Faça um backup (apenas para ter certeza)
Desconecte a unidade e vá viajar ...
Perceba que um laptop e lava não se misturam.
Com seu novo laptop executando um CD ao vivo, formate a unidade interna, monte sua unidade externa e, em seguida
cp -a /media/external/snapshot-0/* /media/internal-drive
(supondo que o snapshot-0 seja o último snapshot)Instale o grub no MBR (sim, ele deve ser separado) - ou use-o
dd
para fazer backup do mbr, como o cprofitt disse na parte inferior de sua resposta.Reinicie.
O script precisa ser refinado (para obter apenas o que você deseja) e o procedimento acima assume que você não possui uma
/home
partição. Se você criar (ou criar) um novo no disco e montá-lo no lugarmount /dev/sdxy /media/external/home
antes de copiar.fonte
100 x <average size of snapshot>
espaço em disco. 100 deles custarão<size of snapshot> + <size of changed files>
. Eu usei isso para colocar vários instantâneos de / home (~ 400 GB) em um disco de 500 GB.cp -al
está fazendo hardlinks para os arquivos de origem em vez de copiar os arquivos de origem. Suas figuras também devem refletir isso, por exemplo, mostrando que os arquivos A na figura 2 são o mesmo arquivo.Você pode usar o rsync.
e o segundo:
Depois de criar o script para suas necessidades, adicione-o aos trabalhos cron.
adicione o seguinte:
Eles fazem com que make_snapshot.sh seja executado a cada quatro horas na hora e daily_snapshot_rotate.sh seja executado todos os dias às 13:00 (ou seja, 13:00).
fonte: http://www.mikerubel.org/computers/rsync_snapshots/
Se você deseja que ele seja executado a cada hora, adicione um trabalho cron para cada hora.
Outra opção possível é usar o rsnapshot
Instale o rsnapshot (disponível no centro de software)
Configurar o rsnapshot e especificar o diretório de origem do backup
Abra o /etc/rsnapshot.conf e remova o comentário das seguintes linhas.
Defina os diretórios de backup de destino em /etc/rsnapshot.conf, como mostrado abaixo. Neste exemplo,
/ home - diretório de origem que deve ser feito backup localhost / - diretório de destino onde o backup será armazenado. Observe que este diretório será criado no diretório /.snapshots/{internal.n}/, conforme mostrado na última etapa.
nano /etc/rsnapshot.conf
backup / home / localhost /
Testar a configuração do rsnapshot
Execute o teste de configuração para garantir que o rsnapshot esteja configurado corretamente e pronto para executar o backup do linux rsync.
Você pode fazer backup de diretórios ou arquivos do Linux em vários intervalos. Por padrão, os backups horários e diários são configurados.
Verifique a configuração de backup por hora.
Verifique se o processo diário de backup do rsnapshot cwrsync está configurado corretamente.
Depois de verificar se as configurações horárias e diárias do rsync estão definidas corretamente no utilitário rsnapshot cwrsync, é hora de configurar esse filhote no crontab, como mostrado abaixo.
fonte: http://www.thegeekstuff.com/2009/08/tutorial-backup-linux-using-rsnapshot-rsync-utility/
---- Recuperação bare metal
Eu usaria dd e tar para fazer recuperação baremetal.
Faça o backup de metadados importantes:
Faça backup do sistema operacional:
Eu, pessoalmente, tenderia a desligar meu sistema se quisesse criar um arquivo de restauração baremetal.
fonte
dd
não é incremental. Nada disso é o que estou perguntando. Os últimos 10% podem ser interessantes de procurar, mas todo o restante do despejo de informações não é realmente.Existem 2 maneiras de fazer backup incremental baseado em bloco
Instantâneos baseados em sistema de arquivos
O ZFS e o BTRFS fornecem instantâneos incrementais baseados em blocos ( BTRFS , ZFS (página 25) ). Você pode ter uma unidade em que você sincronize com ZFS ou BTRFS e captura instantânea.
Também há capturas instantâneas do LVM (mencionadas pelo cprofitt) que fornecem as mesmas capturas instantâneas incrementais baseadas em blocos.
Instantâneos baseados em programa
Existem vários programas de backup , no entanto, alguns se destacam para o efeito:
Eu sei que você mencionou especificamente que não está procurando algo como duplicidade, no entanto, pensei em mencionar alguns recursos.
No entanto, esses programas exigem que você os instale para restaurar. A beleza de algo como o rsync é que quase todas as instalações do linux têm o rsync (por exemplo, falta de núcleo pequeno (uma distribuição de 10 MB)) por padrão.
Duplicidade
Ele apenas armazena o diff (nível do bloco) e os comprime e criptografa. Isso leva a ainda menos armazenamento do que o método rsync; no entanto (pelo menos da maneira que eu o vejo), o sistema de arquivos precisará ser reconstruído, o que levará tempo (se você estiver usando backups incrementais com ele, e isso depende do tempo desde último backup completo)
A página do manual explica como funciona.
Rdiff-backup
Um programa cliente-servidor que cria, como duplicidade, diferenças de nível de bloco, mas armazena alterações do último ponto de restauração, para que o instantâneo mais recente seja o mais rápido de restaurar. Voltar no tempo (não o último instantâneo) exige que mais diferenças sejam analisadas e, portanto, é mais lento.
Algumas pessoas comparam o rdiff-backup ao rsnapshot (parece uma maneira mais automática do mentod do rsync). Quase todas as instruções sobre como usar o rdiff na rede, no entanto, encontrei uma que menciona como fazê-lo no host local .
fonte
duplicity
realmente é.Você deveria dar uma olhada ddar ( página inicial ).
É incremental no sentido de não transferir as partes idênticas do instantâneo. Não é incremental no significado clássico da palavra, pois está lidando com instantâneos.
Nota: Eu não tentei isso sozinho (mas confio no autor). Pode não fazer o que você deseja obter imediatamente , mas ainda existem soluções semelhantes na página (por exemplo, ZFS ); portanto, como ponto de partida, isso pode ser útil.
fonte
Eu acho que você pode fazer isso com o LVM, que é apenas teórico, e isso desperdiçará uma grande quantidade de disco rígido. Minha teoria é que você pode fazer com que seu sistema raiz fique com um volume lógico; se você quiser fazer um teste, poderá criar um instantâneo e reiniciar a máquina usando o novo volume.
Os instantâneos LVM precisam do volume original para funcionar. Isso ocorre porque o novo volume mantém a diferença entre o instantâneo e o sistema de arquivos real.
Se você deixar o sistema nesse estado, começará a desperdiçar espaço em disco à medida que o novo sistema de arquivos for alterado. Não sei se existe uma maneira de consolidar o snapshoted e o arquivo definitivo. Certamente você pode dd para outro volume lógico, mas para isso precisará do dobro do espaço do seu sistema de arquivos mais a diferença entre o seu "ponto de recuperação" e o estado atual.
E tudo isso requer reinicializações e está longe de ser automático.
Supõe-se também que vários sistemas de arquivos modernos funcionem dessa maneira, como o zfs em sistemas solaris ou os btrfs experimentais.
fonte
Este é um pouco demais, mas parece que parte do que você quer fazer é fazer backups parciais de arquivos binários (como arquivos de imagem de partição). Há um pacote projetado para fazer isso (eu acabei de ler sobre isso - não tentei).
Dê uma olhada no bup.
https://github.com/apenwarr/bup
Pode lhe dar algumas idéias.
fonte