Bagaimana cara gzip direktori, transfer via scp, dan dekompresi dalam satu perintah?

11

Saya sering mentransfer direktori besar scpdan akan terasa manis jika saya dapat memampatkan direktori, mengirimnya, dan mendekompres semuanya menjadi satu.

Apakah hal seperti ini mungkin?

macek
sumber

Jawaban:

29

Bagaimana kalau menggunakan rsyncsebagai gantinya dengan -zopsi yang diaktifkan untuk kompresi?

rsync -az --progress source_dir/* remote_host:/destination_dir

Ini juga memiliki manfaat tambahan bahwa jika file sudah ada dan tidak berubah pada tujuan, itu tidak akan ditransfer.

Harun
sumber
7

Berkat jawaban @ johnshen64, saya dapat menemukan sesuatu yang cukup bagus

tar -zc path/to/source | ssh user@remote tar -zxC path/to/destination

Sayangnya, ini tidak menunjukkan kemajuan saat transfer. Saya perhatikan peningkatan kecepatan luar biasa menggunakan metode ini.

Jika ada yang tahu cara menunjukkan kemajuan untuk transfer seperti ini, saya akan sangat menghargai bantuannya :)

macek
sumber
1
Masukkan pvantara tar dan ssh .
user1686
Ini bagus jika Anda tidak memiliki rsync yang tersedia
Simon Hartcher
2

baik, saya akan menggunakan tar saja

tar cf - direktori | server ssh 'tar xf -'

Anda dapat menambahkan v untuk memverifikasi.

zip harus sama, tetapi tar lebih kuat untuk linux menurut saya.

johnshen64
sumber
+1 terima kasih atas bantuan Anda; ini membuat saya setengah jalan ke sana. Saya dapat menemukan solusi yang tidak menggunakan -karakter samar , juga menggunakan kompresi gzip dan memungkinkan untuk menargetkan direktori tujuan.
macek
@ Macek: Catatan yang f -mungkin diperlukan pada sistem operasi lain, karena sebagian besar versi tar akan mencoba membaca dari tape drive. Membaca dari stdin secara default adalah khusus untuk GNU.
user1686