Como fazer backup da estrutura de diretórios ignorando arquivos e diretórios sem permissão de leitura

9

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

user3228053
fonte

Respostas:

8

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

Se você não estiver usando o GNU tar, poderá gerar uma lista de arquivos para backup ou uma lista de arquivos a serem excluídos. O GNU find possui um -readablepredicado que testa se você tem permissão de leitura no arquivo. Com outras versões do find, para ficar findsozinho, é necessário aproximar isso com permissões de arquivo ( -perm) e propriedade ( -user, group), o que dificulta o enfrentamento de grupos, ACLs etc. Você pode obter um teste preciso ligando para o programa externo ou shell embutido test. Aqui está um exemplo, supondo que você tartenha a opção -Xde ler uma lista separada por nova linha 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 - .
Gilles 'SO- parar de ser mau'
fonte
Funcionou perfeitamente pela primeira vez com --ignore-failed-read, muito obrigado. O sistema era Red Hat, então o GNU tar estava em vigor.
precisa saber é o seguinte
2

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

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

Isso pode estar limitado ao GNU finde tarpode não funcionar com certos sistemas de arquivos (NFS, FUSE). Se houver ou houver novas linhas, use em -print0vez de -printpara finde adicione --nullpara tar.

Hauke ​​Laging
fonte