Dalam rsync
, -z
akan memampatkan data file selama transfer.
Jika saya mengerti benar, -z
kompres file sebelum transfer dan kemudian dekompres setelah transfer. Apakah waktu berkurang selama transfer karena kompresi melebihi waktu untuk kompresi dan dekompresi?
Apakah jawaban untuk pertanyaan tergantung pada apakah saya membuat cadangan ke hdd eksternal melalui usb (2.0 atau 3.0), atau ke server dengan ssh melalui internet?
man rsync
bahwa sebenarnya ada daftar sufiks file yang tidak akan dikompres bahkan dengan-z
(lihat--skip-compress
).Jawaban:
Itu pertanyaan umum. Apakah kompresi dan dekompresi pada titik akhir meningkatkan bandwidth efektif suatu tautan?
Bandwith (yang dirasakan) yang efektif dari suatu tautan yang melakukan kompresi dan dekompresi pada titik akhir adalah fungsi dari:
Fungsi ini dijelaskan dengan grafik 3D ini, yang mungkin ingin Anda konsultasikan untuk situasi khusus Anda:
Grafik tersebut berasal dari artikel Compression Tools Compared 2005 oleh http://www.linuxjournal.com/ .
sumber
Jika Anda memiliki koneksi yang sangat lambat (pikirkan GPRS), Anda pasti ingin mengompres data Anda sebanyak mungkin, jika tidak, koneksi Anda akan memperlambat segalanya.
Jika Anda memiliki CPU yang sangat lambat dan koneksi yang cepat (seperti perangkat jaringan tertanam) Anda biasanya tidak ingin mengompres data Anda, jika tidak, CPU Anda akan memperlambat segalanya.
sumber
Bergantung pada seberapa kompresibel data Anda dan kekuatan pemrosesan sumber dan tujuan Anda. Cadangan disk lengkap dalam pengalaman saya akan memampatkan sekitar 30-50% dari ukuran aslinya, jadi mungkin layak untuk mencobanya. Kalau tidak, jangan repot-repot dengan kompresi. Mungkin layak untuk menguji tingkat kompresi Anda dengan
pigz -c <your file> | wc -c
dan membandingkan ukuran yang dikembalikan dengan ukuran asli Anda.sumber
Ya, kecepatan koneksi menentukan apakah kecepatan membaik. Ini akan menjadi overhead hanya untuk cadangan USB, karena bukan disk mengembang data tetapi proses yang menulis data. Jadi mesin yang sama yang membaca dan mengempisnya, harus mengembang dan menulisnya juga. Rsync masih dua proses saya pikir tetapi memori Anda untuk menyerahkan data dari satu proses ke proses lainnya cukup cepat dan cpu perlu lebih banyak waktu mengompresnya (saat membacanya ke dalam memori yang sama yang kemudian menyerahkannya :).
Kompresi hanya membantu ketika Anda memiliki pengirim dan penerima rsync dan beberapa jaringan yang lebih lambat di antaranya. 1Gbit mungkin sudah cukup cepat ketika Anda memiliki NAS lokal misalnya, 10Gbit sudah kecepatan SATA mentah. Jadi kompresi hanya diperlukan ketika Anda memiliki konektivitas 100Mbit atau kurang dan itu hanya masuk akal ketika data terkompresi dapat dikompres.
Saya pikir rsync mungkin memperhatikan bahwa itu tidak berjalan pada dua mesin tetapi satu dan melompati kompresi tetapi tidak yakin.
sumber
tl; dr Melalui tautan transfer yang lambat, kompres, jika tidak, jangan. Di bawah ini adalah tes kecepatan kompresi, tautan ke alat konversi bandwidth dan beberapa info.
Menggunakan kompresi dengan
rsync
hanya akan mempercepat jika tautan perantara "cukup lambat", yaitu jika mesin di satu ujung mampu menghasilkan aliran data terkompresi cukup cepat untuk menjenuhkan tautan komunikasi.Jadi, apa tautan paling lambat di mana saya harus menggunakan kompresi untuk mendapatkan apa pun?
Berikut ini adalah tes yang sangat tidak ilmiah, yang akan menunjukkan seberapa cepat
gzip
dapat menghasilkan data, dan apa artinya apakah Anda harus memampatkan transfer massal jaringan Anda secara umum.Input data akan mengubah hasil tes sangat . Saya menggunakan file biasa (!) Di komputer saya yang mungkin mewakili tipe data yang biasanya saya transfer melalui jaringan. Menggunakan
/dev/zero
(menghasilkan nol tanpa batas) akan menyesatkan karena aliran nol akan sangat mudah dikompres, dan menggunakan/dev/random
akan menyesatkan karena alasan yang berlawanan. Jadi alih-alih saya menggunakan file tar dari$HOME/local
direktori saya , yang berisi perangkat lunak yang saya instal di blog saya$HOME
. File itu tidak terkompresi dengan sendirinya, tetapi berisi campuran file biner, file terkompresi kecil dan file sumber / teks, dan akan saya kompres dengan pengaturan default karenagzip
akan menyusut 67% dari 64 MiB ke 22 MiB.Saya melakukan ini beberapa kali untuk mendapatkan perasaan tentang apa yang mungkin rata-rata, dan sampai sekitar 7800000 byte / s.
Lalu saya menggunakan kalkulator bandwidth jaringan untuk melihat bagaimana konversi ini. Dalam kasus khusus ini, ia berada tepat di bawah kapasitas tautan kabel "100Mb Ethernet", hanya lebih cepat daripada tautan internet "VDSL Download", sedikit lebih cepat daripada tautan nirkabel "802.11 [a / g]", dan di suatu tempat di antara "Bluetooth v3.0" (lebih lambat) dan "USB 2.0" (lebih cepat).
Ini berarti bahwa jika saya menggunakan kompresi lebih cepat dari itu, kompresi kemungkinan akan memperlambat transfer file.
rsync
mungkin tidak menggunakan pustaka yang sama persis sepertigzip
untuk melakukan kompresi, tetapi di atas akan memberi Anda sedikit petunjuk setidaknya.rsync
melakukan lebih dari kompresi, seperti yang Anda tahu, dan peningkatan kecepatan sebenarnya berasal dari hanya mentransfer [bit] file yang telah berubah.Dalam pengalaman saya sendiri, menggunakan kompresi dengan
rsync
telah menjadi kurang dan kurang bermanfaat selama 10 tahun terakhir, karena bandwidth jaringan telah meningkat (di mana saya).Untuk melakukan backup inkremental, saya pasti akan merekomendasikan menyelidiki
--link-dest
opsi (ini tidak ada hubungannya dengan apa yang ditransfer, hanya dengan bagaimana hal-hal disimpan pada target). Juga, jika Anda melakukannya melalui SSH, jangan gunakan kompresi jika koneksi SSH Anda sudah dikompresi, dan hanya kompres koneksi SSH (terowongan dll.) Yang melewati tautan lambat, untuk alasan yang sama seperti di atas.sumber