Use o SSH diretamente em vez de scp e execute cat
. Onde você faria:
scp remote:{file1,file2...} local-dir
Em vez disso:
ssh remote cat file1 file2 ... > locale-file
Eu tenho vários arquivos para serem extraídos do servidor remoto. Para processamento adicional dos arquivos no servidor local, eu preciso mesclar (concatená-los) em um único arquivo, o que não pode ser feito no arquivo remoto.
Não sei como scp
funciona internamente, mas para obter o melhor desempenho, em vez de gravar esses arquivos no diretório local e, em seguida, mesclar, acho que deveria mesclá-los rapidamente e gravar em arquivo único. Você pode por favor me avisar se a fusão (anexação) dos arquivos em tempo real durante scp
de arquivos remotos para locais?
Se não é uma ideia melhor?
Abaixo das etapas para executar apenas no servidor local
Eu testei as duas etapas que funcionaram bem
Primeiro passo
ssh username@remoteserverip "cat file1 file2 file3 >> /remoteserverpath/Mergedfile"
Segundo passo Você está copiando o arquivo mesclado do servidor remoto para o servidor local Você pode fazer isso por rsync ou scp
Eu prefiro o rsync
rsync -avzh username@remoteserverip:/remoteserverpath/Mergedfile localserverpath_where_you_want_to_save
Isso é bobagem, mas parece que você pode fazer isso com apenas scp
, copiando os arquivos remotos para um fifo local e removendo-os:
$ mkfifo p
$ while :; do cat p >> output ; done &
$ scp somehost:test/\* p
bar 100% 4 10.9KB/s 00:00
doo 100% 4 8.6KB/s 00:00
foo 100% 4 13.6KB/s 00:00
$ kill %1
# output contains the files concatenated
(testado com o OpenSSH 7.4p1-10 + deb9u2 no Debian)