Mengapa rsync -avz lebih cepat dari scp -r?

55

Saya agak bingung dengan ini? Mengapa rsync lebih cepat dari scp? Bukankah rsync menggunakan scp di bawah atau apakah ia melakukan sesuatu yang lebih efisien? Apakah ada cara untuk mempercepat scp?

grm
sumber
1
Ini salinan baru.
GRM

Jawaban:

68

Rsync jelas akan lebih cepat daripada scp jika target sudah berisi beberapa file sumber, karena rsync hanya menyalin perbedaannya. Tetapi saya menduga pertanyaan Anda adalah tentang melakukan penyalinan langsung ke target kosong.

Anda telah melewati -zopsi untuk rsync; ini mengaktifkan kompresi. Jika bandwidth jaringan adalah faktor pembatas (seringkali), kompresi dapat meningkatkan kecepatan transfer dengan jumlah yang nyata.

Anda juga dapat mengaktifkan kompresi dengan scpmelewatkan -Copsi. Ini harus tentang hal-hal dengan rsync. Kompresi tidak diaktifkan secara default di ssh karena menghemat bandwidth tetapi menambah latensi dan overhead CPU; latensi buruk untuk sesi interaktif (ini tidak berlaku untuk scp), dan overhead CPU tidak berguna jika file yang Anda salin sudah dikompresi.

Versi lama dari rsyncrsh yang digunakan daripada ssh sebagai lapisan transport default, jadi perbandingan yang adil antara rsyncdan rcp. Tapi ssh telah menjadi default sejak 2.6.0 dirilis pada 2004-01-01.

Dengan pengaturan kompresi yang sama, saya berharap rsyncdan scppada dasarnya memiliki kecepatan yang sama. Silakan bagikan tolok ukur jika Anda menemukan sebaliknya.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
3
Bagus, menggunakan -C membuat kecepatan transfer saya meningkat dari 5MB menjadi 20MB
ǝʞɾuǝʞ
Saya baru saja menguji bahwa untuk direktori yang berisi 16 file sekitar 3-9 MB dan rsync -zmasih WAY lebih cepat daripada scpdengan kompresi yang disarankan dalam jawaban ini diaktifkan. Ini juga lebih cepat daripada mengompresi dan mengarsipkan ke dalam satu file secara manual dan scpfile itu ( scpdengan kompresi bahkan lebih lambat dari itu). Jadi pertanyaan OP sebenarnya tetap tidak terjawab: dengan scpbegitu lambat dibandingkan dengan rsync?
ohcibi
12

coba scp dengan cara cepat

scp -p -C -o 'CompressionLevel 9' -o 'IPQoS throughput'  -c arcfour machine:file .

opsi ini mempercepat scp 5 kali dalam pengaturan saya dibandingkan dengan mesin scp polos: file.

Pembaruan, 2017

Sebenarnya scp lambat karena manajemen detail TCP yang buruk seperti MTU dan ukuran buffer. Untungnya ini telah diperbaiki oleh proyek HPN SSH . Untuk pemahaman saya, Anda dapat menggunakan HPN SSH sebagai transportasi untuk rsync.

Peter K.
sumber
1
Keren terima kasih!! Namun selalu selalu lakukan scp -p(pertahankan tanggal / waktu) sebagai default, dan mungkin -r(rekursif) begitu scp -pr -C .... (Saya hanya perlu menggosok dan memulai kembali pekerjaan scp 40Gb menggunakan ini karena saya lupa -p)
smci
Saya menambahkan -p pada perintah, terima kasih atas petunjuknya.
Peter K
4

Dulu sebaliknya, tapi saya percaya kecepatan rsync telah sangat meningkatkan beberapa revisi terakhir. Ini juga tergantung pada berapa banyak file yang Anda salin. Jika banyak, rsync biasanya akan lebih cepat karena scp memunculkan proses baru untuk setiap file yang Anda salin. Anda dapat mencoba melemahkan penggunaan cipher scp untuk melihat apakah itu mempercepat. Terakhir saya ingat, cipher arcfour adalah yang tercepat.

churnd
sumber
2
Scp sebenarnya tidak menelurkan proses baru untuk setiap file yang sedang disalin. Anda memiliki satu proses di sisi pengiriman dan satu di sisi penerima, seperti halnya dengan rsync.
Kenster
3

Untuk sejumlah besar file kecil rysnc jauh lebih cepat daripada scp. Mereka mengatakan itu karena memiliki overhead yang lebih kecil. Untuk satu file besar, saya akan mengharapkan hasil yang sama.

Sencer
sumber
3

Untuk pengujian saya, rsync lebih cepat dari scp , Anda dapat menggunakan iotop untuk mengujinya saat mentransfer file yang sama:

sudo iotop -o

Mungkin Anda akan mendapatkan hasil yang berbeda, tetapi Anda dapat mengujinya sendiri. BTW, saat menggunakan scp , jangan foget untuk memilih sandi dengan:

scp -c arcfour <source> <dest>

Sementara arcfourbisa mempercepat enkripsi.

coanor
sumber
0

Apakah Anda menyalin ulang file dari yang sudah ada? Jika demikian, kemampuan rsync untuk memblokir membandingkan dan hanya menyalin perbedaan akan relevan.

Linker3000
sumber