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 rsync
sob 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.
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.exclude /somepath
e ignore esses diretórios completamente - não apenas seu conteúdo.A maior parte do que você está tentando fazer provavelmente pode ser realizada simplesmente usando a
one_fs
configuraçã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+found
porque 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 sefsck
recuperado. Além disso,.pyc
e.pyo
realmente não deveria estar no diretório raiz em primeiro lugar, por isso eu também removeria essas linhas./tmp
e/var/tmp
sã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:fonte
/*.pyc
e/*.pyc
, mas todo o sistema*.pyc
e*.pyo
, eu fixo isso. Não tenho certeza seone_fs
definido como1
pode excluir o que eu quero, no entanto.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.
fonte