Saya mencoba mentransfer ribuan file kecil dari satu server ke server lain menggunakan perintah berikut:
rsync -zr --delete /home/user/ [email protected]::backup
Saat ini transfer membutuhkan waktu lama (saya belum menghitung waktunya). Apakah ada cara untuk membuat ini lebih cepat? Haruskah saya menggunakan alat lain? Haruskah saya menggunakan rsync lebih dari ssh daripada menggunakan protokol rsync?
stat()
.-a
tapi-r
?Jawaban:
Anda perlu menentukan hambatannya. Itu bukan rsync. Mungkin bukan bandwidth jaringan Anda. Seperti yang disarankan @Zoredache , kemungkinan besar jumlah iops yang dihasilkan oleh semua
stat()
panggilan. Alat sinkronisasi apa pun perlu membuat stat file. Saat menyinkronkan jalankaniostat
untuk memverifikasi.Jadi pertanyaannya menjadi; bagaimana cara saya mengoptimalkan stat? Dua jawaban mudah:
noatime
dan tambahkan adir_index
).Jika kebetulan itu bukan iops disk Anda yang merupakan batas maka Anda dapat bereksperimen dengan membelah pohon dir menjadi beberapa pohon yang berbeda dan menjalankan beberapa rsyncs.
sumber
Kompresi tidak terlalu berguna untuk file kecil (katakanlah, kurang dari 100 byte). Untuk file kecil, terkadang versi terkompresi bisa lebih besar dari aslinya. Coba
rsync
perintah tanpa-z
bendera.ssh
bagus untuk keamanan, tetapi tidak akan membuat transfer lebih cepat. Bahkan, itu akan membuat transfer menjadi lebih lambat karena kebutuhan akan enkripsi / dekripsi.rsync
mungkin tidak tampak cepat saat pertama kali dijalankan karena ada banyak data untuk ditransfer. Namun, jika Anda berencana menjalankan perintah ini secara berkala, proses selanjutnya mungkin jauh lebih cepat karenarsync
pintar tidak mentransfer file yang tidak berubah.sumber
rsync
klien, itu akan menggunakan SSH di belakang layar. Anda harus keluar dari cara untuk menonaktifkan enkripsi saat menggunakan rsync. Lihat: stackoverflow.com/a/1821574/64911Versi rsync apa yang Anda gunakan? Apa pun yang lebih lama dari 3.0.0 (di kedua ujungnya) tidak memiliki fitur daftar file tambahan, yang mempercepat transfer besar.
sumber
Menambahkan
-v --progress
ke baris perintah rsync Andarsync dilakukan dalam 2 langkah:
Jika Anda rsync ribuan file kecil di direktori bersarang, bisa jadi rsync menghabiskan sebagian besar waktu ini untuk masuk ke subdir dan menemukan semua file
Jika waktu tidak dihabiskan untuk browsing, waktu mungkin hanya karena penambahan semua latensi memulai setiap transfer file baru.
sumber
Dalam kasus filesystem ext3 atau ext4 yang terlibat, periksa, apakah keduanya memiliki fitur dir_index diaktifkan! Ini rsync-throughput tiga kali lipat dalam kasus saya.
Lihat detail dalam jawaban saya di: /server//a/759421/80414
sumber