Saya secara rutin harus menyalin isi folder pada sistem file jaringan ke komputer lokal saya. Ada banyak file (1000s) pada folder jarak jauh yang semuanya relatif kecil tetapi karena overhead jaringan, salinan biasa cp remote_folder/* ~/local_folder/
membutuhkan waktu yang sangat lama (10 menit).
Saya percaya itu karena file sedang disalin secara berurutan - setiap file menunggu sampai yang sebelumnya selesai sebelum salinan dimulai.
Apa cara paling sederhana untuk meningkatkan kecepatan salinan ini? (Saya menganggap itu adalah untuk melakukan salinan secara paralel.)
Zip file sebelum menyalin tidak selalu mempercepat karena mereka semua dapat disimpan pada disk yang berbeda di server yang berbeda.
Jawaban:
Selama Anda membatasi perintah salin yang Anda jalankan, Anda mungkin bisa menggunakan skrip seperti yang diposting oleh Scrutinizer
sumber
&
akhircp
perintah memungkinkanwhile
loop untuk melanjutkan dan memulai perintah cp berikutnya tanpa menunggu. Thexargs
perintah melewati nama file dalam kelompok 4 (MAX_PARALLEL) kewhile
lingkaran.cp
. Anda dapat mempercepat perhitungan melalui multithreading. Tapi saya tidak berpikir hal yang sama berlaku untuk penanganan data hard drive.Jika Anda menginstal GNU Parallel http://www.gnu.org/software/parallel/ Anda dapat melakukan ini:
Anda dapat menginstal GNU Parallel hanya dengan:
Tonton video intro untuk GNU Parallel untuk mempelajari lebih lanjut: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
sumber
Salah satu caranya adalah dengan menggunakan rsync yang hanya akan menyalin perubahan - file baru dan bagian yang diubah dari file lain.
http://linux.die.net/man/1/rsync
Menjalankan segala bentuk operasi penyalinan paralel mungkin akan membanjiri jaringan Anda dan operasi penyalinan hanya akan terhenti atau mengalami kemacetan di disk sumber atau tujuan.
sumber
Jujur, alat terbaik adalah gsutil Google. Ini menangani salinan paralel dengan rekursi direktori. Sebagian besar metode lain yang saya lihat tidak dapat menangani rekursi direktori. Mereka tidak secara spesifik menyebutkan sistem file lokal ke salinan sistem file lokal di dokumen mereka, tetapi itu berfungsi seperti pesona.
Ini adalah biner lain untuk diinstal, tetapi mungkin salah satu yang sudah Anda jalankan mengingat semua adopsi layanan cloud saat ini.
sumber
Rsync paralel menggunakan find:
pada LAN perusahaan, rsync tunggal bekerja sekitar 800Mbps; dengan 6-8 pekerjaan saya bisa mendapatkan lebih dari 2.5Gbps (dengan mengorbankan beban tinggi). Dibatasi oleh disk.
sumber
Ada banyak hal yang harus dipertimbangkan tergantung pada topologi yang Anda miliki. Tetapi sebelum Anda mulai memikirkan solusi yang kompleks, Anda bisa mencoba membagi tugas menjadi dua pekerjaan dan memeriksa apakah waktu yang dibutuhkan akan berkurang secara signifikan:
Lain kali coba:
(Anda mungkin ingin mengganti [al] * ke sesuatu yang cocok dengan sekitar setengah dari file - mungkin [0-4] * - tergantung pada isi folder)
Jika waktu meningkat tidak secara dramatis, mungkin lebih penting untuk memeriksa apakah perlu menyalin semua file (berapa rasio file yang diubah dengan semua file?)
sumber