Compactar um diretório usando tar / gz sobre SSH no computador local?

15

Gostaria essencialmente de tar / gz um diretório em uma máquina remota e salvar o arquivo no meu computador local sem precisar conectar-me novamente à minha máquina local a partir da remota. Existe uma maneira de fazer isso através do SSH? O arquivo tar não precisa ser armazenado na máquina remota, apenas na máquina local. Isso é possível?

Naftuli Kay
fonte

Respostas:

26

Você pode fazer isso com um comando ssh, basta dizer tarpara criar o archive em sua saída padrão:

ssh remote.example.com 'cd /path/to/directory && tar -cf - foo | gzip -9' >foo.tgz

Outra abordagem, que é mais conveniente se você deseja fazer muitas manipulações de arquivos na outra máquina, mas é um exagero para a criação de um arquivo de uma só vez, é montar o sistema de arquivos da máquina remota com o SSHFS (um sistema de arquivos FUSE ). Você deve ativar a compactação no nível SSH.

mkdir ~/net/remote.example.com
sshfs -C remote.example.com:/ ~/net/remote.example.com
tar -czf foo.tgz -C ~/net/remote.example.com/path/to/directory foo
Gilles 'SO- parar de ser mau'
fonte
3
Só estou curioso, por que você recomendou em tar -cf - foo | gzip -9vez de tar -czf - fooou tar -cz foo?
Patrick
@Patrick Um pouco mais portátil, por exemplo, ele funciona no Solaris.
Gilles 'SO- stop be evil'
Você seria gentil em descrever todos os argumentos?
Rootical V.
3
@RooticalV. tar -cf - foocria ( -c) archive na saída padrão ( -f -) do arquivo foo. gzip -9usa o melhor método de compactação (mais lento). Se você não se importa, você pode apenas usar ssh remote.example.com tar cz /path/to/directory/foo > foo.tar.gz.
Arekolek
-1

Para uma maneira simples de copiar um diretório ou arquivo compactando-o apenas para o transporte:

$ ssh domain.net 'ls foo'
file1   file2

$ ssh domain.net 'tar czf - foo' | tar xz

$ ls foo
file1   file2
Pierre de LESPINAY
fonte
1
Isso não armazena o tararquivo na máquina local, o que foi planejado.
Kusalananda
1
Isto é para pessoas que aterram nessa questão (como eu) ao pesquisar como copiar algo através do SSH com compactação. Há apenas esse adicional tar xzfora do tubo com um exemplo mais simples e mais legível.
Pierre de LESPINAY