Como fazer backup da estrutura dir ignorando arquivos & dirs sem permissão de leitura

6

Alguma idéia de como fazer backup de uma estrutura de diretório para a qual existem alguns arquivos e / ou diretórios para os quais você não tem permissão para ler? Eu gostaria apenas de ignorá-los, sem backup (tar? Jar?) Quebrando.

    
por user3228053 01.06.2014 / 22:53

2 respostas

4

O gnu tar tem uma opção --ignore-failed-read que faz exatamente isso.

Se você não estiver usando o GNU tar, você pode gerar uma lista de arquivos para backup ou uma lista de arquivos a serem excluídos. O GNU find tem um predicado -readable que testa se você tem permissão de leitura no arquivo. Com outras versões do find, para ficar com find sozinho, você precisará aproximá-lo das permissões de arquivo ( -perm ) e propriedade ( -user , group ), o que dificulta o trabalho com grupos, ACLs, etc. Você pode obter um teste preciso chamando o programa externo ou o shell incorporado em test . Aqui está um exemplo assumindo que seu tar tem a opção -X para ler uma lista separada por novas linhas de nomes de arquivos a serem excluídos (nomes de arquivos contendo novas linhas são ignorados, para evitar problemas de análise):

find . ! -name '*
*' -exec sh -c 'for x; do [ -r "$x" ] || printf "%s\n" "$x"; done' _ {} |
tar -cf backup.tar -X - .
    
por 02.06.2014 / 01:58
2

Se você não tiver novas linhas nos caminhos, poderá fazer isso:

find . -type f -readable -print | tar cf test.tar -T -

Isso pode ser limitado ao GNU find e tar e pode não funcionar com determinados sistemas de arquivos (NFS, FUSE). Se houver ou puder haver novas linhas, use -print0 em vez de -print para find e adicione --null para tar .

    
por 01.06.2014 / 23:18