Como listar arquivos que foram modificados após uma determinada data e que não estão em uma lista de pastas

0

Meu objetivo é criar um backup tar.gz incremental para uma pasta chamada /data .

Para isso, quero recuperar a lista de arquivos que foram modificados após o último backup. Este momento é armazenado em um arquivo chamado lastran.txt .

Eu uso o seguinte comando para obter esta lista:

find /data -newer lastran.txt -not -type d -print 0

Eu canalizo os resultados desse comando para um comando xargs -0 tar .

Meu problema é que os resultados do comando find contêm um conjunto de arquivos que estão em uma ou mais pastas que não quero adicionar ao arquivo.

Eu tentei o parâmetro --except-from de tar com um arquivo chamado folder-exclusion.lst que contém uma lista de pastas como:

/data/backups
/data/cloud
/data/system

Mas parece que não está funcionando.

    
por Jefferson B. Elias 01.08.2017 / 12:54

1 resposta

0

Várias opções, escolha uma:

  1. Verifique rdiff-backup , você pode estar reinventando a roda.

  2. Diga a find para excluir alguns padrões em primeiro lugar. Use -wholename assim:

    find /data -newer lastran.txt -not -type d -not -wholename "/data/backups/*" -not -wholename "/data/cloud/*" -not -wholename "/data/system/*" -print 0
    
  3. Pegue seu find original e filtre sua saída:

    find /data -newer lastran.txt -not -type d -print 0 | grep -Ezv "^/data/backups/|^/data/cloud/|^/data/system/"
    
  4. Corrija seu folder-exclusion.lst . Minha experiência com tar é limitada e não consigo encontrar nada sobre a opção --except-from . Se você tem certeza de que é a opção correta, então O comentário da AFH pode estar certo:

    it appears that your exclusion file should be a list of patterns, so that each line should have /* on the end, eg /data/backups/*, etc.

por 01.08.2017 / 23:40