Saya menggunakan rsync 3.1.1 untuk tetap menyinkronkan dua disk, salah satunya ada di jaringan dan dipasang sebagai share samba /mnt/ROUTER_WD_2TB/
. Ini adalah sumbernya, dengan kecepatan maksimum 30-40MB / s karena keterbatasan jaringan. Yang lain, tujuannya, sudah terpasang secara lokal (puncak 110MB / s) dan /mnt/BACKUP_HITACHI_2TB/
.
Saya menggunakan perintah rsync berikut:
rsync -haAXi --quiet --append-verify --delete /mnt/ROUTER_WD_2TB/* /mnt/BACKUP_HITACHI_2TB/.
Disk berisi banyak file, kebanyakan kecil.
Masalahnya adalah bahwa rsync membutuhkan waktu yang cukup lama (10-20 m) sebelum mulai memindahkan file, saya kira karena harus menghitung daftar file untuk sejumlah besar file kecil. Selama periode ini, utilisasi newtwork berada pada level rendah 200-500KB / dtk, sementara ketika mentransfer file kecepatannya sekitar 40MB / dtk.
Biasanya terjadi bahwa rsync membutuhkan waktu sekitar 15m untuk akhirnya menemukan sesuatu yang harus disalin, kemudian membutuhkan waktu 5 detik untuk menyalinnya, kemudian terus memeriksa beberapa file lain untuk menyalin selama 5 menit. Semua dalam semua, salinan file 5 detik berakhir hingga 20 menit!
Apakah ada tindakan apa pun yang dapat saya lakukan untuk menghindari periode yang lama ini sebelum menyalin file, selain mengecualikan folder? Apa pun jenis "cache" yang dapat saya terapkan sehingga rsync tidak harus membangun kembali semua daftar file dari awal?
Jawaban:
Sejauh
rsync
menyangkut Anda menyalin antara dua pohon file lokal, jadi itu menonaktifkan sebagian besar optimisasinya (termasuk algoritma delta yang terkenal itu). Jika Anda dapat menjalankanrsync
pada server jarak jauh Anda (sehingga Anda mendapatkan skenario client-server yang sebenarnya di seluruh jaringan Anda) Anda akan mendapatkan sejumlah besar daya tarik.Namun demikian, berikut adalah pilihan lain untuk dipertimbangkan
Menyalin tanpa khawatir menghapus file lama. Ini memungkinkan Anda untuk melakukan transfer yang lebih cepat lebih sering, dan membuang pembersihan lambat untuk mengatakan, hanya sekali sehari:
Gunakan variasi
rsync
algoritme penghapusan default untuk menghindari pembuatan daftar lengkap file sebelum transfer:Membagi direktori tingkat atas menjadi tugas yang terpisah dan menjalankannya secara paralel. Anda mungkin menemukan bahwa jika Anda terikat dengan IO disk maka ini tidak akan membantu, dan untuk memintal piringan, hampir pasti akan memperburuk keadaan.
Jika tidak ada saran ini membantu maka akan bernilai menambahkan lain
--verbose
untukrsync
melihat apa yang dilakukannya. Saya menduga itu berderak melalui semua file yang tidak berubah, dan jika Anda memiliki cukup file ini hanya membutuhkan waktu lama.sumber
--delete --delete-during
tidak melakukannya untuk saya - yang masih mengirim daftar file tambahan - tetapi--delete --delete-before
langsung menuju:,building file list
yang sepertinya merupakan kemajuan besar. Kupikir.--delete-before
, kemudianrsync
lakukan dua lintasan melintasi pohon file: satu untuk dihapus dan berikutnya untuk menyalin.Anda dapat menggunakan
-vv
untuk melihat seluruh logrsync
.sumber