Como canalizar a transferência de arquivos scp / ssh (pull) através do tar (transferência local remota iniciada na máquina local)

2

Eu gostaria de enviar uma operação scp pull (amostra sem tar abaixo) por meio do tar, para que apenas um arquivo tar seja escrito para cerca de 10 diretórios:

user@localhost:/home/user> scp -r remoteuser@remotehost:dir_to_transfer ./

Eu tenho diretórios em uma máquina remota que tem cerca de 10.000 arquivos pequenos (~ 28k) por diretório para transferir. Devido a cotas de arquivos, não tenho muito espaço livre para executar o comando tar no host remoto (remotehost). Devido às regras de firewall, só posso iniciar a transferência da minha máquina local (localhost).

O grande número de arquivos torna a transferência muito longa.

Eu encontrei exemplos de como fazer isso quando "empurra" os dados, mas gostaria de saber como fazer isso quando "puxar" os dados.

Informação da máquina local:

  • OS: OpenSuSe 13.2 (x86_64)

  • bash 4.2.53 (1)

  • OpenSSH_6.6.1p1, OpenSSL 1.0.1k-fips 8 de janeiro de 2015

Informação da máquina remota:

  • SO: versão 5.11 do CentOS (final)
  • bash 3.2.25 (1)
  • OpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 de julho de 2008
por Gabe 14.02.2015 / 02:28

1 resposta

4

tente de user@localhost

 > ssh -l remoteuser remotehost "tar cf - dir_to_transfert" > remote.tar

onde

  • > é o prompt
  • ssh -l remoteuser remotehost conecta você ao host remoto
  • "tar cf - dir_to_transfert" executa tarin remoto para saída padrão
  • > remote.tar redireciona a saída do ssh para o nome do arquivo local remote.tar

isso funcionará se você tiver permissão para tar no host remoto.

    
por 14.02.2015 / 10:06

Tags