Estou usando rsync -rlptD
para copiar um diretório de outro usuário. Existem alguns arquivos (não tenho como conhecê-los com antecedência) que não tenho permissão para copiar. Existe uma maneira de rsync ignorá-los. O problema é que, se o rsync retornar diferente de zero, o script bash -x será encerrado.
permissions
rsync
error-handling
JeffCharter
fonte
fonte
Respostas:
O Rsync não tem uma opção para isso. Eu vejo duas soluções. Uma é analisar as mensagens de erro do rsync; isso não é muito robusto. O outro é gerar uma lista de arquivos ilegíveis para filtrar.
Se você
find
não possui-readable
e-executable
, substitua-os pela-perm
diretiva apropriada .Isso pressupõe que não há arquivos ilegíveis cujo nome contenha uma nova linha. Se você precisar lidar com isso, precisará produzir uma lista de arquivos delimitada por nulos como esta e passar a
-0
opção pararsync
:fonte
stat()
cada arquivo duas vezes (uma vez via rsync e outra via find) seria muito ruim.\!
cita o!
operador para protegê-lo contra a expansão do shell. A barra invertida não é realmente necessária aqui, pois nenhum shell se expande!
quando é seguido por um espaço, mas não dói. O que há de errado com arquivos ocultos?Fiz uma solução simples para esta situação específica:
Isso retorna
0
se o código retornado for 0 ou 23 e retorna o código de saída em todos os outros casos.É importante observar, no entanto, que isso ignoraria todos os
Partial transfer due to error
erros, não apenas os de permissão , pois capturaria tudo o que sai do código23
. Para obter mais informações sobre os códigos de status do rsync, consulte este link .fonte