rsync inclui / exclui arquivos com números consecutivos em nomes

0

Eu tenho arquivos no servidor src rsync da seguinte forma:

p4.1

p4.2

p4.3 

e assim por diante até p4.67 .

Agora eu preciso baixar alguns deles. Nem todos, mas de algum ponto inicial, ou seja, desejo fazer o download de p4.42 to p4.67 e evitar o download dos primeiros. Isso será feito pelo script bash, que descobre o que é atual dst número do arquivo e fornece o número inicial para rsync . A única solução que vejo agora é uma falha com o uso de --include-from=FILE , mas isso significa que eu preciso gerar FILE pelo script bash e removê-lo da unidade depois de tudo. Deseja saber se existe uma solução mais eficaz e elegante com o uso de rsync PATTERN .

    
por user1337 01.04.2018 / 23:02

2 respostas

0

Possível solução de combinar seq (gerar intervalos com o formato escolhido -f ) e --include-from=- (ler stdin ):

$ ls src/
p.4.31  p.4.32  p.4.42  p.4.45  p.4.46  p.4.54
$ ls dst
$ seq -f "p.4."%g 42 46 | rsync src/* dst/ --include-from=- --exclude=* -v
p.4.42
p.4.45
p.4.46

sent 183 bytes  received 86 bytes  538.00 bytes/sec
total size is 0  speedup is 0.00
$ ls dst/
p.4.42  p.4.45  p.4.46
    
por 02.04.2018 / 00:20
0

Outra maneira de lidar com isso é usar NUL-delimited printf da seguinte forma:

rsync -0 --include-from=<(printf 'p4.%d%code%' {42..67}) .

    
por 02.04.2018 / 03:05