Alih-alih menggunakan tar untuk menulis ke disk lokal Anda, Anda dapat menulis langsung ke server jauh melalui jaringan menggunakan ssh.
server1$ tar -zc ./path | ssh server2 "cat > ~/file.tar.gz"
String apa pun yang mengikuti perintah "ssh" Anda akan dijalankan pada server jarak jauh alih-alih login interaktif. Anda dapat menyalurkan input / output ke dan dari perintah-perintah jarak jauh melalui SSH seolah-olah mereka lokal. Menempatkan perintah dalam tanda kutip menghindari kebingungan, terutama saat menggunakan pengalihan.
Atau, Anda dapat mengekstrak file tar di server lain secara langsung:
server1$ tar -zc ./path | ssh server2 "tar -zx -C /destination"
Perhatikan opsi yang jarang digunakan -C
. Ini berarti "ubah ke direktori ini terlebih dahulu sebelum melakukan sesuatu."
Atau, mungkin Anda ingin "menarik" dari server tujuan:
server2$ tar -zx -C /destination < <(ssh server2 "tar -zc -C /srcdir ./path")
Perhatikan bahwa <(cmd)
konstruksinya baru untuk bash dan tidak berfungsi pada sistem yang lebih lama. Ini menjalankan program dan mengirimkan output ke pipa, dan mengganti pipa itu ke dalam perintah seolah-olah itu file.
Saya bisa saja dengan mudah menulis di atas sebagai berikut:
server2$ tar -zx -C /destination -f <(ssh server2 "tar -zc -C /srcdir ./path")
Atau sebagai berikut:
server2$ ssh server2 "tar -zc -C /srcdir ./path" | tar -zx -C /destination
Atau, Anda dapat menyelamatkan diri dari kesedihan dan cukup menggunakan rsync:
server1$ rsync -az ./path server2:/destination/
Akhirnya, ingat bahwa mengompresi data sebelum transfer akan mengurangi bandwidth Anda, tetapi pada koneksi yang sangat cepat, mungkin benar-benar membuat operasi mengambil lebih banyak waktu . Ini karena komputer Anda mungkin tidak dapat mengompres dengan cukup cepat untuk mengikutinya: jika mengompresi 100MB lebih lama dari yang dibutuhkan untuk mengirim 100MB, maka lebih cepat untuk mengirimnya tanpa kompresi.
Sebagai alternatif, Anda mungkin ingin mempertimbangkan untuk mem-piping sendiri gzip (daripada menggunakan opsi -z) sehingga Anda bisa menentukan level kompresi. Sudah pengalaman saya bahwa pada koneksi jaringan cepat dengan data kompresibel, menggunakan gzip pada level 2 atau 3 (defaultnya adalah 6) memberikan throughput keseluruhan terbaik dalam kebanyakan kasus. Seperti itu:
server1$ tar -c ./path | gzip -2 | ssh server2 "cat > ~/file.tar.gz"