como gzip e scp ao mesmo tempo

2

Eu tenho um arquivo no qual eu queria zipar e ao mesmo tempo transferir para outro host usando scp.

Eu tentei executar o seguinte comando, mas falhei. Eu não me importo de fechar e scp mais tarde, mas eu só quero saber onde eu entendi errado

Estou errado em usar um tubo | por aqui?

-bash-3.2$ gzip -c aum.dmp | scp [email protected]:/export/home/oracle/aum.dmp.gz
Usage: scp [-pqrvBC46] [-F config] [-S program] [-P port]
           [-c cipher] [-i identity] [-o option]
       [[user@]host1:]file1 [...] [[user@]host2:]file2

Atenciosamente, Noob

    
por Noob 27.07.2015 / 12:22

3 respostas

4

O gzip irá gravar no STDOUT, e o scp não pode lidar com isso.

tente

gzip -c aum.dmp | ssh -l  oracle 192.168.0.191 'cat > /export/home/oracle/aum.dmp.gz'

em vez disso.

onde

  • gzip -c aum.dmp | irá gzip aum.dmp e enviará o resultado para stdout
  • ssh -l oracle 192.168.0.191 se conectará ao usuário oracle em 192.168.0.191
  • 'cat > /export/home/oracle/aum.dmp.gz' executará este comando

'cat > /export/home/oracle/aum.dmp.gz '

  • cat irá capturar stdin (stdout do comando antes |)
  • > /export/home/oracle/aum.dmp.gz escreverá para este /export/home/oracle/aum.dmp.gz

todo o propósito da parte do gato, executado no site remoto, é capturar o resultado do gzip.

    
por 27.07.2015 / 12:29
1

Você pode usar o sinalizador -C para ativar a omissão c em scp transferência. Isso deve ser suficiente, embora você possa verificar man scp para obter mais detalhes sobre compactação.

    
por 27.07.2015 / 16:35
0

Caso você precise obter os arquivos / diretórios de um servidor remoto, em um arquivo local, você pode usar tar + gzip dentro do ssh e redirecionar para um arquivo local. Por exemplo:

ssh user@server "sudo tar cvzf - /var/log/containers/**/*.log" > containers_logs.tgz

Onde:

  • c - cria um arquivo archive.
  • v - mostra o progresso.
  • z - comprime com gzip.
  • f - nome do arquivo do arquivo.
por 03.09.2018 / 18:17