Czy skompresować katalog za pomocą tar / gz przez SSH na komputer lokalny?

15

Chciałbym zasadniczo spakować / gz katalog na zdalnym komputerze i zapisać plik na moim komputerze lokalnym bez konieczności ponownego łączenia się z komputerem lokalnym z komputera zdalnego. Czy można to zrobić za pośrednictwem SSH? Plik tar nie musi być przechowywany na komputerze zdalnym, tylko na komputerze lokalnym. czy to możliwe?

Naftuli Kay
źródło

Odpowiedzi:

26

Możesz to zrobić za pomocą polecenia ssh, po prostu powiedz, taraby utworzyć archiwum na jego standardowym wyjściu:

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

Innym podejściem, które jest wygodniejsze, jeśli chcesz wykonywać wiele operacji na plikach na innym komputerze, ale jest nadmiar w tworzeniu jednego archiwum, to zamontowanie systemu plików na komputerze zdalnym za pomocą SSHFS ( system plików FUSE ). Powinieneś włączyć kompresję na poziomie 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- przestań być zły”
źródło
3
Jestem tylko ciekawy, dlaczego poleciłeś tar -cf - foo | gzip -9zamiast tar -czf - foolub tar -cz foo?
Patrick
@Patrick Nieco bardziej przenośny, np. Będzie działał na Solarisie.
Gilles 'SO - przestań być zły'
Czy byłbyś uprzejmy opisać wszystkie argumenty?
Rootical V.
3
@RooticalV. tar -cf - footworzy ( -c) archiwum na standardowym wyjściu ( -f -) z pliku foo. gzip -9używa najlepszej (najwolniejszej) metody kompresji. Jeśli cię to nie obchodzi, możesz po prostu użyć ssh remote.example.com tar cz /path/to/directory/foo > foo.tar.gz.
arekolek,
-1

Aby w prosty sposób skopiować katalog lub plik, kompresując go tylko do transportu:

$ ssh domain.net 'ls foo'
file1   file2

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

$ ls foo
file1   file2
Pierre de LESPINAY
źródło
1
To nie przechowuje tararchiwum na komputerze lokalnym, co było zamierzone.
Kusalananda
1
To jest dla ludzi, którzy padają na to pytanie (jak ja), szukając sposobu kopiowania czegoś przez SSH z kompresją. Jest tylko to dodatkowe tar xzwyjście z potoku z prostszym i bardziej czytelnym przykładem.
Pierre de LESPINAY