Entradas que posso excluir com segurança fazendo backups

10

Estou planejando uma estratégia de backup baseada no rsnapshot .

Desejo fazer um backup completo do sistema, excluindo arquivos e diretórios que seriam inúteis para a restauração ter um sistema funcionando novamente. Eu já excluí:

# System:
exclude /dev/*
exclude /proc/*
exclude /sys/*
exclude /tmp/*
exclude /run/*
exclude /mnt/*
exclude /media/*
exclude /lost+found

# Application:
exclude /*.pyc
exclude /*.pyo

Gostaria de saber quais outras entradas posso adicionar à lista de exclusões sem comprometer o sistema restaurado. Falando sobre um sistema Linux "genérico", você pode sugerir mais extensões glob, diretórios temporários, caches, etc. Posso excluir com segurança?

Paolo
fonte

Respostas:

11

Primeiro, você deve ler um pouco sobre a sintaxe de inclusão / exclusão do rsync. Tenho a sensação de que o que você quer fazer é melhor usando **globs do que *globs. ( **Se expande para qualquer número de entradas, enquanto *expande somente para uma única entrada, possivelmente combinando múltiplas diretório entradas. Os detalhes estão em man rsyncsob Inclusão / Exclusão Regras Padrão .)

Dito isto, se você deseja restaurar o sistema para um estado de trabalho conhecido a partir do backup com um mínimo de problemas, você deve ter cuidado ao excluir arquivos ou diretórios. Eu mesmo uso o rsnapshot e, na verdade, adotei a abordagem oposta: inclua tudo, exceto alguns diretórios cuidadosamente selecionados.

Portanto, meu rsnapshot.conf realmente declara (com guias para deixar o analisador de arquivos de configuração do rsnapshot feliz):

interval backup NNN # pick your poison
one_fs 0
exclude /backup/**
exclude /dev/**
exclude /proc/**
exclude /run/**
exclude /sys/**
exclude /tmp/**
backup / ./

e muito pouco mais. Sim, significa que eu posso copiar um pouco mais do que o estritamente necessário, mas garante que qualquer coisa não pretendida como epérmica seja copiada. Devido ao rsnapshot usar o comportamento de link direto para desduplicar do rsync, o único custo real para isso é durante a primeira execução; depois disso, supondo que você tenha um local de destino de backup de tamanho razoável (comparado ao tamanho total do conjunto de dados), é preciso muito pouco tempo ou espaço em disco. Excluo o conteúdo de / backup porque é aqui que monto o sistema de arquivos de destino de backup; não excluí-lo levaria à situação de copiar o backup para si próprio. No entanto, para simplificar, se eu precisar restaurar o bare metal, quero manter o ponto de montagem!

No meu caso, também não posso usar razoavelmente one_fs 1; Eu executo o ZFS com atualmente ~ 40 sistemas de arquivos. Listar todos esses itens explicitamente seria um pesadelo de manutenção e tornaria o trabalho com sistemas de arquivos ZFS muito mais envolvido do que o necessário.

De qualquer maneira, praticamente qualquer coisa que você queira excluir acima e além do acima dependerá da distribuição; portanto, é praticamente impossível fornecer uma resposta genérica. Dito isto, é provável que você encontre alguns candidatos em / var.

um CVn
fonte
1
exclude /somepath/*está perfeitamente bem neste caso; exclui tudo /somepath/, como esperado. Você não precisa, **porque não há necessidade de olhar mais profundamente quando tudo /somepath/já está excluído.
Martin von Wittich
Ou apenas use exclude /somepathe ignore esses diretórios completamente - não apenas seu conteúdo.
Frank Kusters
4
@spaceknarf Isso interrompe a montagem quando você restaura o bare metal, porque o ponto de montagem não existe.
a CVn
4

A maior parte do que você está tentando fazer provavelmente pode ser realizada simplesmente usando a one_fsconfiguração. Definir os sistemas de arquivos que deseja incluir em seus backups, em seguida, usar essa configuração para ignorar o resto ( proc, sys, dev, etc.). Eu incluiria /lost+foundporque esse diretório sempre deve estar vazio, a menos que você faça backup de um sistema de arquivos corrompido; nesse caso, você provavelmente deseja um backup de qualquer coisa que tenha se fsckrecuperado. Além disso, .pyce .pyorealmente não deveria estar no diretório raiz em primeiro lugar, por isso eu também removeria essas linhas. /tmpe /var/tmpsão os únicos caminhos restantes em um sistema "genérico" que contém dados que podem ser excluídos de maneira confiável dos backups. Então, talvez tente algo como:

one_fs 1

exclude /tmp/
exclude /var/tmp/
depquid
fonte
Eu realmente não queria dizer /*.pyce /*.pyc, mas todo o sistema *.pyce *.pyo, eu fixo isso. Não tenho certeza se one_fsdefinido como 1pode excluir o que eu quero, no entanto.
Paolo
1
E se um pacote do sistema usar esses arquivos?
depquid
você está certo, mas tenho quase certeza de que todos os arquivos .py serão recompilados automaticamente, mais cedo ou mais tarde.
Paolo
3
Talvez, mas no meu sistema esses arquivos sejam instalados por pacotes de fornecedores. O que significa que, se o sistema for restaurado a partir do backup, os arquivos que o gerente de pacotes considerar existir estarão ausentes. Você perguntou sobre uma solução para um sistema Linux "genérico" e não acho seguro sempre supor que esses arquivos possam ser perdidos sem causar problemas.
depquid
uma coisa que vale a pena notar que esqueci de dizer no Q. é que montagens de ligação também devem ser excluídas para evitar duplicação de dados.
Paolo
1

Acho que é melhor ter uma lista de pacotes, o conteúdo de / etc, / home e qualquer dado de usuário / sistema de / var e de outros lugares. Geralmente é mais rápido reinstalar os pacotes e copiar novamente a configuração de trabalho.

Sean Perry
fonte
Por que instalar pacotes, que inclui gravar todos os arquivos do sistema, além de processar a configuração e os metadados, é mais rápido do que simplesmente copiar arquivos?
depquid
Foi minha experiência que, quando um backup real é necessário, você também descobre que não havia armazenado e documentado adequadamente todos os bits de um sistema. Concentrar-se na recreação, e não na restauração, torna mais fácil, rápido e mais frequente. Obviamente YMMV.
Sean Perry