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?

macek
fonte

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.

AaronM
fonte
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 :)

macek
fonte
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.

johnshen64
fonte
+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