Mengapa rsync saya sangat lambat dibandingkan dengan cp murni atau bahkan scp?

15

Saya mentransfer file dari Linux ke Windows 7 melalui share yang di-mount (share di-mount dari Windows di Linux) .. Saya menyalin banyak data (yaitu hampir TB) dari yang lama ke mesin baru dalam LAN saya . Saya sudah cukup disayangkan bahwa saya hanya memiliki 100MBit. Secara alami saya secara buta menggunakan rsync tetapi sudah bertanya-tanya setelah sehari mengapa rasanya begitu lambat. Mengaktifkan meteran progres menunjukkan kecepatan transfer saya sekitar 2MB / s.

Jadi saya mengambil file besar yang masuk akal (800MB) dan melacak waktu transfer (1):

cp : 05:33
scp (2): 06:33
rsync : 21:51

1) Saya menghapus file di antara setiap run
2) scp via localhost ke mesin Linux yang sama langsung ke share; sama sekali tidak berguna tetapi memberikan pengukur kemajuan

Tes sesederhana itu

(cp|scp|rsync) <source> <destination>

Tidak ada argumen khusus kecuali host / port untuk scp. Saya bahkan mencoba -Wsaklar untuk rsync tetapi dibatalkan setelah sepuluh menit. rsync 3.0.3 berjalan pada Lenny. Untuk dapat mengganggu proses penyalinan kapan saja dan melanjutkan menuntun saya ke rsync, tapi sekarang saya pikir saya harus serius mempertimbangkan kembali persyaratan ini.

Bagaimana mungkin perbedaan yang begitu besar?

Perbarui / Selesaikan:

Terima kasih kepada rschuler, saya dapat menyelesaikan masalah ini: gunakan daemon rsync daripada pemasangan smb untuk alasan efisiensi. DeltaCopy tersebut berfungsi, tetapi kita harus berhati-hati untuk beberapa hal

  • itu pembungkus GUI yang bagus tetapi jika ada masalah, ada baiknya untuk mengetahui cara memperbaikinya. Sepertinya saya memasukkan kredensial pengguna saya, di mana untuk menjalankan layanan rsync, salah pertama kali tetapi GUI tidak mengizinkan saya untuk mengatur yang baru. Saya tahu itu berjalan sebagai layanan dan mampu menetapkan kredensial yang tepat di sana
  • Diperlukan untuk menambahkan port secara manual ke firewall untuk memungkinkan koneksi
  • Selera pribadi: memastikan share dilindungi kata sandi atau jika tanpa, mungkin memastikan layanan tidak secara otomatis memulai dengan windows; untuk berjaga-jaga
  • Biner rsync yang dibungkus bukan port Windows asli tetapi dibangun di atas cygwin. Namun, DLL cygwin yang terkandung tidak menangani UTF8 dengan benar dan karakter non-ascii rusak. Dapatkan DLL tetap dari http://www.okisoft.co.jp/esc/utf8-cygwin/ .

Setelah itu, nilai transfer melonjak dari 2MB / s menjadi ~ 8MB / s; sangat fantastis!

menandai
sumber
Apakah Anda menghapus file tujuan di antara setiap pengujian yang Anda jalankan? Jika file tujuan sudah ada dan meta-data tidak benar maka akan perlu checksum baik sumber dan tujuan.
Zoredache
@Zoredache: Saya menghapus file di antara proses; juga -Wsaklar seharusnya mengabaikan itu
tandai

Jawaban:

18

(bagian ini dipasang dari Windows di Linux)

Itu masalahmu. rsync melakukan rolling checksum di atas tujuan. Jendela berbagi. Anda menarik semua data melalui jaringan untuk menghitung checksum. (Mungkin lebih dari sekali).

Yang perlu Anda lakukan adalah menjalankan rsync di kedua mesin. Dengan begitu hanya perbedaan (dan checksum) yang akan ditransfer melalui kabel jaringan. DeltaCopy adalah rsync windowized. Ini memiliki dokumen yang cukup bagus untuk membuat Anda maju.

Lihat jawaban yang dipilih untuk pertanyaan ini untuk penjelasan yang lebih baik mengapa saya pikir Anda mungkin menyalahgunakan rsync.

Rodney Schuler
sumber
Bingo, jawaban Anda tidak bisa langsung ke intinya. Terima kasih banyak, saya belajar pelajaran saya.
tandai