Saya telah menggunakan rsync
skrip untuk menyinkronkan data di satu host dengan data di host lain. Data memiliki banyak file berukuran kecil yang berkontribusi hampir 1,2TB.
Untuk menyinkronkan file-file itu, saya telah menggunakan rsync
perintah sebagai berikut:
rsync -avzm --stats --human-readable --include-from proj.lst /data/projects REMOTEHOST:/data/
Isi proj.lst adalah sebagai berikut:
+ proj1
+ proj1/*
+ proj1/*/*
+ proj1/*/*/*.tar
+ proj1/*/*/*.pdf
+ proj2
+ proj2/*
+ proj2/*/*
+ proj2/*/*/*.tar
+ proj2/*/*/*.pdf
...
...
...
- *
Sebagai ujian, saya mengambil dua proyek tersebut (data 8.5GB) dan saya menjalankan perintah di atas. Menjadi proses berurutan, alat 14 menit 58 detik untuk menyelesaikan. Jadi, untuk 1.2TB data akan butuh beberapa jam.
Jika saya dapat melakukan banyak rsync
proses secara paralel (menggunakan &
, xargs
atau parallel
), itu akan menghemat waktu saya.
Saya mencoba dengan perintah di bawah ini dengan parallel
(setelah masuk cd
ke direktori sumber) dan butuh 12 menit 37 detik untuk mengeksekusi:
parallel --will-cite -j 5 rsync -avzm --stats --human-readable {} REMOTEHOST:/data/ ::: .
Ini seharusnya memakan waktu 5 kali lebih sedikit, tetapi tidak. Saya pikir, saya salah di suatu tempat.
Bagaimana saya bisa menjalankan banyak rsync
proses untuk mengurangi waktu eksekusi?
rsync
s adalah prioritas utama kami.
rsync
s secara paralel adalah fokus utama sekarang.