As páginas de manual não possuem exemplos para isso. Estou tendo dificuldade em dizer ao rsync para incluir apenas alguns arquivos onde esses arquivos. Não entendo por que você tem que excluir para incluir, por que rsync
simplesmente não incluir o que está no arquivo de inclusão e tudo o mais será excluído.
Este é o meu roteiro:
rsync -ruv --rsh=ssh --include-from=zz-rsync-test.prod.incl /usr2/subdir remoteSrv:/tmp/.
e este é o meu arquivo de inclusão que não funciona: Ele copia demais: copia tudo no /usr2/subdir (incluindo o subdir
diretório, estranho) que eu não quero. Quero copiar apenas os arquivos per, 42f e xml no data/text_forms
diretório.
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*
e o seguinte não funciona, não copia nada:
- *
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*
e o seguinte também não funciona, não copia nada:
- *
+ data/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*
e o seguinte também não funciona, não copia nada:
- *
+ data/
+ data/text_forms/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*
O seguinte também não funciona:
+ */
+ /data/text_forms/*.per
+ /data/text_forms/*.42f
+ /data/text_forms/*.xml
+ /data/text_forms/*.xml.*
- *
Nem o seguinte funciona:
+ /data/
+ /data/text_forms/
+ /data/text_forms/*.per
+ /data/text_forms/*.42f
+ /data/text_forms/*.xml
+ /data/text_forms/*.xml.*
- *
Responder1
Eu encontrei a solução. Levei dois dias inteiros para encontrá-lo. Espero que isso ajude você a não gastar tanto tempo.
O primeiro problema foi que o subdiretório subdir
foi /usr2/subdir
incluído e eu não queria que todo o diretório fosse incluído, só queria que fosse o diretório base, por isso requer uma barra no final como em /usr2/subdir/
, então meu novo comando parece como:
rsync -ruvv --rsh=ssh --include-from=zz-rsync-test.prod.incl /usr2/subdir/ remoteSrv:/tmp/.
Observe que adicionei uma v
opção extra na linha de comando ( -ruvv
) para obter mais detalhes do que foi excluído ou incluído no momento da execução do comando. Com o diretório base corrigido e o extra v
foi um pouco mais fácil construir o arquivo de inclusão correto:
+ data/
+ data/text_forms/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*
- *
Todas as +
linhas devem ser colocadas antes de - *
, especialmente para diretórios, pois tive que incluir explicitamente cada diretório a ser verificado, mesmo que não queira obter arquivos diretamente dentro desses diretórios. Fiz um teste adicionando a data/anyTestFile1
e a data/text_forms/anyTestFile2
porque não tinha certeza se eles iriam ser recolhidos, mas não foram, então está fazendo o que eu quero.... finalmente.