Kompres direktori menggunakan tar / gz melalui SSH ke komputer lokal?

15

Saya ingin dasarnya tar / gz direktori pada mesin jarak jauh dan menyimpan file ke komputer lokal saya tanpa harus terhubung kembali ke mesin lokal saya dari yang jauh. Apakah ada cara untuk melakukan ini di atas SSH? File tar tidak perlu disimpan di mesin jarak jauh, hanya di mesin lokal. Apakah ini mungkin?

Naftuli Kay
sumber

Jawaban:

26

Anda dapat melakukannya dengan perintah ssh, cukup beri tahu taruntuk membuat arsip pada output standarnya:

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

Pendekatan lain, yang lebih nyaman jika Anda ingin melakukan banyak manipulasi file di komputer lain tetapi terlalu berlebihan untuk pembuatan arsip satu-shot, adalah me-mount sistem file mesin remote dengan SSHFS (a FUSE filesystem). Anda harus mengaktifkan kompresi di level 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 'SANGAT berhenti menjadi jahat'
sumber
3
Saya hanya ingin tahu, kenapa kau merekomendasikan tar -cf - foo | gzip -9bukannya tar -czf - fooatau tar -cz foo?
Patrick
@ Patrick Tip sedikit lebih portabel, misalnya itu akan berfungsi pada Solaris.
Gilles 'SANGAT berhenti menjadi jahat'
Apakah Anda akan sangat baik untuk menggambarkan semua argumen?
Rootical V.
3
@RooticalV. tar -cf - foomenciptakan ( -c) arsip pada output standar ( -f -) dari file foo. gzip -9menggunakan metode kompresi terbaik (paling lambat). Jika Anda tidak peduli, Anda bisa menggunakannya ssh remote.example.com tar cz /path/to/directory/foo > foo.tar.gz.
arekolek
-1

Untuk cara mudah menyalin direktori atau file dengan mengompresnya hanya untuk transportasi:

$ ssh domain.net 'ls foo'
file1   file2

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

$ ls foo
file1   file2
Pierre de LESPINAY
sumber
1
Ini tidak menyimpan tararsip di mesin lokal, yang memang dimaksudkan.
Kusalananda
1
Ini untuk orang yang menggunakan pertanyaan ini (seperti saya) ketika mencari cara menyalin sesuatu melalui SSH dengan kompresi. Hanya ada ini tambahan tar xzdari pipa dengan contoh sederhana dan lebih mudah dibaca.
Pierre de LESPINAY