GNU/Linux >> Belajar Linux >  >> Linux

Paralel rsync menggunakan GNU Paralel

Langkah-langkah berikut berhasil untuk saya:

  1. 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
  1. Saya memberi output dari cat transfer.log ke parallel untuk menjalankan 5 rsync 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.


Linux
  1. Apakah Menggunakan Rsync Saat Sumber Diperbarui Aman?

  2. Gnu Paralel Vs &(Maksudku Latar Belakang) Vs Xargs -p?

  3. Cara Mengirim dan Mengunduh File Menggunakan Rsync

  1. rsync menggunakan regex untuk menyertakan hanya beberapa file

  2. Bagaimana cara mendapatkan cpio (gnu, rhel 4) untuk mengekstrak ke direktori tertentu?

  3. Paralel GNU - dua parameter dari array sebagai parameter

  1. Menggunakan Wildcard Di Gnu Membuat Aturan Pola?

  2. Menggunakan Layar Gnu, Saya Mendapatkan Prompt Mentah Dengan Garis Miring Balik?

  3. Menggunakan bendera arsip rsync tanpa menyalin tautan simbolik