Como compactar um diretório, transferir via scp e descompactar em um comando?


11

Eu frequentemente transfiro diretórios grandes scpe seria ótimo se, de alguma forma, pudesse comprimir o diretório, enviá-lo e descompactá-lo em um só.

É algo assim possível?

Respostas:


29

Que tal usar rsynccom a -zopção ativada para compactação?

rsync -az --progress source_dir/* remote_host:/destination_dir

Isso também traz o benefício adicional de que, se o arquivo já existir e não tiver sido alterado no destino, ele não será transferido.


7

Graças à resposta de @ johnshen64, consegui criar algo bem legal

tar -zc path/to/source | ssh user@remote tar -zxC path/to/destination

Infelizmente, isso não mostra progresso à medida que é transferido. Eu notei melhorias incríveis na velocidade usando esse método.

Se alguém souber mostrar o progresso de uma transferência como essa, agradeceria muito a ajuda :)


1
Inserir pventre alcatrão e ssh .
User1686

Isso é ótimo se você não possui o rsync disponível
Simon Hartcher

2

bem, eu usaria tar

diretório tar cf | servidor ssh 'tar xf -'

você pode adicionar v para verificar.

zip deve ser o mesmo, mas o tar é mais robusto para linux na minha opinião.


+1 obrigado por sua ajuda; isso me levou até o meio do caminho. Consegui encontrar uma solução que não use o -caractere enigmático , também use a compactação gzip e permita direcionar um diretório de destino.
macek

@macek: Observe que isso f -pode ser necessário em outros sistemas operacionais, pois a maioria das versões tar tentará ler de uma unidade de fita. A leitura do stdin por padrão é específica do GNU.
User1686
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.