Estou tentando sincronizar arquivos com padrão */ls
da pasta /bin para teste de pasta:
mkdir test
rsync -avv --exclude='*' --include=*/ls /bin/ test/
ls test
E a partir da saída, o filtro de inclusão não funcionou:
[sender] hiding file ls because of pattern *
Alguém sabe o que está errado?
Os filtros de exclusão e inclusão são avaliados da esquerda para a direita. Em sua linha de comando, isso significa que tudo está excluído. O filtro de inclusão não está tendo nenhum efeito, pois o padrão de exclusão já correspondeu a todos os nomes concebíveis.
Em vez disso, para copiar cada arquivo chamado ou qualquer um
ls
de/bin
seus subdiretórios, useColoque os padrões de inclusão primeiro e exclua tudo o que não estiver explicitamente incluído por último. Você precisará corresponder
*/
a um padrão de inclusão, pois pode querer descer em subdiretórios (pelo menos no caso geral). Eu também adicionei-m
, o que evita criar diretórios no destino se não houver arquivos neles.Se você não precisa de recursão e deseja
/bin/ls
copiar comrsync
, useA barra no final do nome do caminho de destino nos dois comandos mostrados aqui é desnecessária, mas forçará o comando a falhar se
test
não for um diretório. Funciona como uma afirmação, de certa forma.