Copiando vários arquivos no linux

1

Eu tenho uma máquina linux com pastas nomeadas numericamente. Como posso copiar com segurança os intervalos dessas pastas para outro servidor? A máquina de origem executa o tcsh, o bash de destino. No momento, no diretório que contém os dados que eu quero copiar, estou usando o seguinte comando:

scp -r [2042-2046] user@target:home/user/destination_folder

A máquina de origem solicita minha senha para o destino e parece copiar os arquivos, mas nada chega na máquina de destino. Não há erros. Se, no entanto, eu substituir o intervalo de pastas por um único nome de pasta, a cópia funcionará bem:

scp -r 2042 user@target:home/user/destination_folder

no entanto, isso significaria repetir o comando scp 5 vezes e colocar minha senha toda vez, o que parece muito ineficiente, especialmente para intervalos maiores.

    
por 218 27.10.2014 / 11:36

3 respostas

1

O intervalo

[2042-2046]

parece ser interpretado como arquivo 2 e arquivo 6.

A seguir, o intervalo necessário:

204[2-6]
    
por 27.10.2014 / 11:42
0

Você pode usar um fluxo de tarts por SSH:

tar cvf --include='204[2-6]' - . | ssh user@target "cd /home/destination/folder; tar xvf -"
    
por 27.10.2014 / 11:43
0

Use uma expressão de expansão de da bash:

scp -r {2042..2046} user@target:home/user/destination_folder

Note que a expansão de chaves acontece antes de expansão do parâmetro, então você não pode escrever isto:

start=2042
end=2046
scp -r {$start..$end} user@target:home/user/destination_folder

sem um eval

    
por 27.10.2014 / 16:18