Langkah-langkah berikut berhasil untuk saya:
- Jalankan
rsync --dry-run
terlebih dahulu untuk mendapatkan daftar file yang akan terpengaruh.
$ rsync -avzm --stats --safe-links --ignore-existing --dry-run \
--human-readable /data/projects REMOTE-HOST:/data/ > /tmp/transfer.log
- Saya memberi output dari
cat transfer.log
keparallel
untuk menjalankan 5rsync
s secara paralel, sebagai berikut:
$ cat /tmp/transfer.log | \
parallel --will-cite -j 5 rsync -avzm --relative \
--stats --safe-links --ignore-existing \
--human-readable {} REMOTE-HOST:/data/ > result.log
Ini, --relative
opsi (tautan) memastikan bahwa struktur direktori untuk file yang terpengaruh, di sumber dan tujuan, tetap sama (di dalam /data/
direktori), jadi perintah harus dijalankan di folder sumber (misalnya, /data/projects
).
Saya pribadi menggunakan yang sederhana ini:
\ls -1 | parallel rsync -a {} /destination/directory/
Yang hanya berguna ketika Anda memiliki lebih dari beberapa direktori yang tidak hampir kosong, jika tidak, Anda akan memiliki hampir setiap rsync
mengakhiri dan yang terakhir melakukan semua pekerjaan sendirian.
Perhatikan garis miring terbalik sebelum ls
yang menyebabkan alias dilewati. Dengan demikian, memastikan bahwa output sesuai keinginan.
Saya akan sangat tidak menyarankan siapa pun untuk menggunakan jawaban yang diterima, solusi yang lebih baik adalah merayapi direktori tingkat atas dan meluncurkan sejumlah operasi rync yang proporsional.
Saya memiliki volume zfs yang besar dan sumber saya adalah cifs mount. Keduanya terhubung dengan 10G, dan di beberapa tolok ukur dapat menjenuhkan tautan tersebut. Performa dievaluasi menggunakan zpool iostat 1
.
Drive sumber dipasang seperti:
mount -t cifs -o username=,password= //static_ip/70tb /mnt/Datahoarder_Mount/ -o vers=3.0
Menggunakan satu rsync
proses:
rsync -h -v -r -P -t /mnt/Datahoarder_Mount/ /StoragePod
meteran io berbunyi:
StoragePod 30.0T 144T 0 1.61K 0 130M
StoragePod 30.0T 144T 0 1.61K 0 130M
StoragePod 30.0T 144T 0 1.62K 0 130M
Ini dalam tolok ukur sintetik (disk kristal), kinerja untuk penulisan berurutan mendekati 900 MB/s yang berarti tautannya jenuh. 130MB/dtk tidak terlalu bagus, dan perbedaan antara menunggu akhir pekan dan dua minggu.
Jadi, saya membuat daftar file dan mencoba menjalankan sinkronisasi lagi (saya memiliki mesin 64 inti):
cat /home/misha/Desktop/rsync_logs_syncs/Datahoarder_Mount.log | parallel --will-cite -j 16 rsync -avzm --relative --stats --safe-links --size-only --human-readable {} /StoragePod/ > /home/misha/Desktop/rsync_logs_syncs/Datahoarder_Mount_result.log
dan itu memiliki kinerja yang sama!
StoragePod 29.9T 144T 0 1.63K 0 130M
StoragePod 29.9T 144T 0 1.62K 0 130M
StoragePod 29.9T 144T 0 1.56K 0 129M
Sebagai alternatif, saya cukup menjalankan rsync di folder root:
rsync -h -v -r -P -t /mnt/Datahoarder_Mount/Mikhail/Marcello_zinc_bone /StoragePod/Marcello_zinc_bone
rsync -h -v -r -P -t /mnt/Datahoarder_Mount/Mikhail/fibroblast_growth /StoragePod/fibroblast_growth
rsync -h -v -r -P -t /mnt/Datahoarder_Mount/Mikhail/QDIC /StoragePod/QDIC
rsync -h -v -r -P -t /mnt/Datahoarder_Mount/Mikhail/sexy_dps_cell /StoragePod/sexy_dps_cell
Ini benar-benar meningkatkan kinerja:
StoragePod 30.1T 144T 13 3.66K 112K 343M
StoragePod 30.1T 144T 24 5.11K 184K 469M
StoragePod 30.1T 144T 25 4.30K 196K 373M
Sebagai kesimpulan, seperti yang dikemukakan @Sandip Bhattacharya, tulis skrip kecil untuk mendapatkan direktori dan sejajarkan itu. Alternatifnya, berikan daftar file ke rsync. Tapi jangan buat instance baru untuk setiap file.