Como enviar '--files-from' com caractere especial de nova linha no rsync?

0

Por alguma estranha razão, existem diretórios de pessoas com novas linhas, reproduzíveis com algo como:

mkdir normal
mv normal why$'\n'would$'\t'you$'\r'dothis

e eu sou responsável por rsyncing os arquivos e pastas que contêm esses caracteres estranhos.

No momento, estou paralelizando meu rsync e, portanto, preciso recorrer a um diretório raiz e dividir o trabalho em partes gerenciáveis. O diretório raiz não possui esses caracteres malucos. Executar rsync --dry-run me fornece arquivos que eu posso paralelizar, mas por exemplo, o caractere \n se torna \#012 , o que eu suspeito ser octal.

No entanto, quando é escapado assim, não consigo mais enviar rsync -a --files-from=files.txt , onde files.txt contém este escape \#012 porque o rsync não encontrará essa pasta.

O que devo fazer nesta situação? Existe algum passo de escape extra que eu estou perdendo que pode permitir que o rsync escolha isso? Eu não posso escrever um \n porque o arquivo:

somedumb\nthing

torna-se

somedumb
thing
    
por OneRaynyDay 18.05.2018 / 17:57

1 resposta

2

Você deve usar o argumento --from0 , que permite ao remetente separar nomes de arquivos com %code% .

cd /source/path1 &&
    find . -print0 | rsync -av --files-from=- --from0 . remote:/target/

ou

find /source/path1/./ -print0 | rsync -av --files-from=- --from0 / remote:/target/
    
por 18.05.2018 / 18:09

Tags