rsync --include-from não funciona

rsync --include-from não funciona

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 rsyncsimplesmente 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 subdirdiretório, estranho) que eu não quero. Quero copiar apenas os arquivos per, 42f e xml no data/text_formsdiretó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 subdirfoi /usr2/subdirincluí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 vopçã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 vfoi 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/anyTestFile1e a data/text_forms/anyTestFile2porque não tinha certeza se eles iriam ser recolhidos, mas não foram, então está fazendo o que eu quero.... finalmente.

informação relacionada