scp funciona apenas em arquivos que já estão na unidade. Como você não quer criar o arquivo (tar) antes de enviá-lo, você precisa usar o ssh e o tar diretamente:
tar -c -f - ./path/to/compress | ssh eee.lan tar -C /where/to/extract -x -f-
Eu tenho uma pasta com dezenas de milhares de arquivos que eu preciso para scp para outra caixa. Como fazer um arquivo de cada vez é muito demorado, e como eu não tenho espaço no disco rígido para fazer um arquivo tar compactado de todos os blocos - eu gostaria de fazer o seguinte:
Alcance todo o arquivo em tempo real e passe-o diretamente sobre o scp para a outra caixa e descompacte-o imediatamente. Dessa forma, posso obter largura de banda total (não é necessário iniciar cada arquivo) e não ficarei sem espaço duplicando todo o arquivo.
Minha caixa A é OSX, B é Ubuntu.
Existe uma frase única para isso?
scp funciona apenas em arquivos que já estão na unidade. Como você não quer criar o arquivo (tar) antes de enviá-lo, você precisa usar o ssh e o tar diretamente:
tar -c -f - ./path/to/compress | ssh eee.lan tar -C /where/to/extract -x -f-
Eu recomendaria usar rsync
; no caso de sua conexão ser interrompida, o rsync pode pegar onde ele foi deixado (com um pouco de sobrecarga). O rsync pode trabalhar sobre o ssh diretamente, então ainda será seguro.
rsync -av -e ssh /path/to/send rsync://[email protected]/path/to/receive