Solusi 1:
Alasannya dapat mencakup:kompresi, enkripsi, jumlah dan ukuran file yang disalin, kapabilitas I/O disk sistem sumber dan tujuan Anda, overhead TCP... Semua ini adalah faktor yang dapat memengaruhi jenis transfer yang Anda lakukan.
Silakan kirim perintah rsync yang Anda gunakan dan berikan detail tentang spesifikasi kedua komputer.
Sunting:Enkripsi seringkali menjadi faktor pembatas dalam kecepatan rsync. Anda dapat menjalankan dengan ssh dan cipher enkripsi yang lebih ringan seperti arcfour
Sesuatu seperti:rsync -e "ssh -c arcfour"
Atau Anda dapat menggunakan rsync/ssh yang dimodifikasi yang dapat menonaktifkan enkripsi. Lihat hpn-ssh:http://psc.edu/networking/projects/hpn-ssh
Tetapi sekali lagi, laptop Anda memiliki drive yang lambat dibandingkan dengan workstation Anda. Penulisan mungkin diblokir dan menunggu I/O masuk ke laptop Anda. Apa ekspektasi kinerja Anda yang sebenarnya?
Solusi 2:
Cara lain untuk mengurangi penggunaan CPU yang tinggi tetapi tetap mempertahankan fungsionalitas rsync, adalah dengan berpindah dari rsync/SSH ke rsync/NFS. Anda dapat mengekspor jalur yang ingin Anda salin melalui NFS dan kemudian menggunakan rsync secara lokal dari dudukan NFS ke lokasi tujuan Anda.
Dalam satu pengujian dari disk jaringan WD MyBook Live, satu atau beberapa rsync dari NAS di jaringan Gigabit ke 2 disk USB lokal tidak akan menyalin lebih dari 10 MB/dtk (CPU:80% usr, 20% sys), setelah mengekspor melalui NFS dan rsinkronisasi secara lokal dari share NFS ke kedua disk saya mendapat total 45MB/detik (memaksimalkan kedua disk USB2) dan sedikit penggunaan CPU. Pemanfaatan disk saat menggunakan rsync/SSH sekitar 6% dan menggunakan rsync/NFS mendekati 24%, sementara kedua disk USB2 mendekati 100%.
Jadi kami secara efektif memindahkan hambatan dari CPU NAS ke kedua disk USB2.
Solusi 3:
Setelah beberapa pengujian lagi, saya akhirnya menemukan jawabannya sendiri. rsync
menggunakan tunneling melalui ssh secara default. Crypto membuatnya lambat. Jadi saya perlu menyiasati hal-hal crypto itu.
Solusi 1:Menyiapkan server rsync
Untuk menggunakannya melalui rsync
protokol, Anda harus menyiapkan server rsyncd. Ada /etc/init.d/rsync
skrip di laptop saya, jadi saya kira, rsyncd sedang berjalan. Saya salah. /etc/init.d/rsync start
ada secara diam-diam, saat rsync tidak diaktifkan di /etc/default/rsync
. Kemudian Anda juga harus mengonfigurasinya di /etc/rsyncd.conf
, yang menyebalkan.
Jika Anda menyelesaikan semua ini, Anda harus menggunakan rsync file.foo [email protected]::directory
. Perhatikan, bahwa ada dua titik dua .
Solusi 2:Server rsh jadul
Namun, konfigurasinya terlalu rumit bagi saya. Jadi saya baru saja menginstal dan rsh-server
di laptop saya. Memanggil rsync di workstation dengan -e rexec
lalu gunakan rsh alih-alih ssh. Yang kemudian meningkatkan kinerja hampir dua kali lipat menjadi 44,6 MB/dtk , yang masih lambat. Kecepatan memantul antara 58 MB/dtk dan 33 MB/dtk , yang menunjukkan mungkin ada beberapa masalah buffer atau kontrol kemacetan. Tapi itu di luar cakupan pertanyaan ini.
Solusi 4:
Ini adalah pertanyaan dan jawaban yang sangat lama, tetapi ada satu hal penting yang hilang:jika Anda menyalin data yang sudah dikompresi atau dienkripsi, nonaktifkan kompresi.
Jika data Anda tidak dikompresi atau dienkripsi, Anda tetap hanya ingin mengompresnya sekali! Rsync mengompres dengan -z, ssh mengompres dengan -C (mungkin secara default). Saya belum menguji mana yang lebih baik karena data saya dikompresi.
Sementara saya melakukannya, Anda dapat mematikan penerusan X dan alokasi TTY, menghasilkan:
rsync -avh -e "ssh -x -T -c arcfour -o Compression=no" $src $dst
Terakhir, pastikan (misalnya menggunakan iptraf
) bahwa Anda sebenarnya menggunakan antarmuka jaringan yang menurut Anda sedang Anda gunakan. Saya sangat terkejut mencatat bahwa pada OSX saya, ssh keluar mengikat ke IP pada antarmuka keluar default alih-alih ke IP pada antarmuka tempat paket seharusnya dialihkan. GB cross-connect langsung saya antara dua laptop yang juga terhubung dengan WiFi tidak digunakan. Setelah diselidiki, itu karena penggunaan 169.254/16, yang dipasang Mac di semua antarmuka, dan komputer tujuan membalas permintaan ARP meskipun permintaan masuk di antarmuka yang berbeda.