Como evito que o Duplicity observe todos os arquivos nas pastas principais?

3

Ao executar o próximo comando, recebo erros sobre o acesso a determinados arquivos ou diretórios (como /root ) para os quais o Duplicity não tem permissões suficientes:

duplicity --dry-run --include="/home/user" --include="/other/dir" \
    --exclude='/' / file:///tmp/backup-test/

Comecei a me perguntar por que isso acontece e corri um strace para ver quais arquivos são acessados:

strace -o /tmp/duplicity-traced -e trace=file !!

Para minha surpresa, todos os arquivos no diretório / e /home são acessados por meio de stat() . Isso não parece bom, em termos de desempenho. A duplicidade simplesmente não está otimizada para esta consulta ou estou perdendo alguma coisa?

    
por Lekensteyn 06.05.2011 / 22:55

1 resposta

3

Depois de cavar o código fonte como recuperado por apt-get source duplicity , concluo que não é possível sem modificar o código-fonte e seu algoritmo.

A maneira como a duplicidade funciona:

  1. Digitalize o * source_directory * para entrada
  2. Para cada entrada encontrada, faça uma chamada lstat() . Isso é usado para determinar o tipo de inode (por exemplo, arquivo ou diretório regular). O resultado será armazenado em cache para esta entrada
  3. Se a entrada existe ...

    1. e é um link simbólico, o destino será lido usando readlink
    2. e é um arquivo ou diretório regular, access() será chamado para detectar se a entrada é legível ou não
    3. se a entrada for legível, ela será testada por cada função de seleção (definida por opções como --include e --exclude )

Isso parece muito razoável e, a menos que o acesso ao disco seja muito lento (NFS?), não há necessidade de alterar este algoritmo para fazer a verificação de caminho antes das chamadas stat .

    
por Lekensteyn 07.05.2011 / 14:37

Tags