Saya telah melihat pertanyaan ini dan pertanyaan ini , tetapi mereka tampaknya tidak mengatasi gejala yang saya lihat.
Saya memiliki file log besar (sekitar 600 MB) yang saya coba transfer melalui jaringan seluler. Karena merupakan file log itu hanya ditambahkan ke (meskipun sebenarnya dalam database SQLite dengan hanya INSERT yang dilakukan, sehingga tidak cukup sesederhana itu, tetapi dengan pengecualian dari 4k halaman terakhir (atau mungkin beberapa) file identik setiap kali. Penting bahwa hanya perubahan (dan checksum apa pun yang perlu dikirim) yang benar-benar dapat dikirim, karena koneksi data diukur.
Namun ketika saya melakukan tes di koneksi yang tidak diukur (misalnya hotspot wifi gratis) saya tidak melihat kecepatan atau pengurangan transfer data yang diamati atau dilaporkan. Melalui koneksi WiFi yang lambat saya melihat pada urutan 1MB / s atau kurang, melaporkan bahwa transfer akan memakan waktu hampir 20 menit. Melalui koneksi WiFi yang cepat saya melihat kecepatan yang lebih cepat seragam, tetapi tidak ada laporan speedup, dan upaya kedua untuk mentransfer (yang sekarang harus lebih cepat karena kedua file identik) sekarang tidak menunjukkan perbedaan.
Perintah (dibersihkan untuk menghapus informasi sensitif) yang saya gunakan adalah:
rsync 'ssh -p 9999' --progress LogFile michael@my.host.zzz:/home/michael/logs/LogFile
Output yang saya dapatkan pada akhirnya terlihat seperti ini:
LogFile
640,856,064 100% 21.25MB/s 0:00:28 (xfr$1, to-chk=0/1)
Tidak ada sebutan speedup apa pun.
Saya menduga masalahnya mungkin salah satu dari yang berikut:
- Saya kehilangan beberapa opsi baris perintah. Namun, membaca ulang halaman manual tampaknya menyarankan bahwa transfer delta diaktifkan secara default: Saya hanya melihat opsi untuk menonaktifkannya.
- Saya menggunakan rsync over ssh (bahkan pada port non-standar) karena server berada di belakang firewall yang hanya memungkinkan ssh. Saya belum melihat sesuatu yang secara eksplisit mengatakan transfer delta tidak akan berfungsi jika daemon rsync tidak berjalan. Saya mencoba menggunakan notasi "::" alih-alih ":" tetapi halaman manual tidak begitu jelas tentang apa itu "modul", dan perintah saya ditolak karena menentukan modul yang tidak valid.
Saya telah mengesampingkan hal berikut:
- transfer delta tidak dilakukan pada jaringan lokal. Dihapuskan karena saya mencoba melakukan transfer di internet
- overhead karena perhitungan checksum. Saya telah melihat perilaku ini baik pada koneksi Wifi yang cepat dan lambat dan kecepatan transfer tampaknya tidak dihitung terikat.
rsync --stats
, dan juga -v -v
untuk mendapatkan lebih banyak statistik verbose. Rsync akan memberi tahu Anda seberapa banyak data yang cocok dan tidak cocok ada.
but with the exception of the last 4k page (or maybe a few) the file is identical each time.
Apakah Anda benar-benar memverifikasi itu dengancmp
? Atau lebih baik, denganxdelta
atau sesuatu? Jika Anda benar-benar ingin memperkecil ukuran transfer, pertahankan versi lama dan baru secara lokal, sehingga Anda dapat menghitung perbedaan biner minimal secara lokal (dengan sesuatu selain rsync) dan kirimkan saja tanpa harus mengirim checksum melalui koneksi terukur. Melakukan ini di tingkat basis data-catatan alih-alih tingkat file biner mungkin lebih baik, seperti yang disarankan derobert.