আমি rsyncঅন্য হোস্টের ডেটার সাথে এক হোস্টে ডেটা সিঙ্ক্রোনাইজ করতে স্ক্রিপ্ট ব্যবহার করে যাচ্ছি । ডেটাতে অসংখ্য ছোট আকারের ফাইল রয়েছে যা প্রায় 1.2 টিবিতে অবদান রাখে।
এই ফাইলগুলি সিঙ্ক করার জন্য, আমি rsyncনিম্নলিখিত হিসাবে কমান্ডটি ব্যবহার করছি:
rsync -avzm --stats --human-readable --include-from proj.lst /data/projects REMOTEHOST:/data/
Proj.lst এর বিষয়বস্তু নীচে রয়েছে:
+ proj1
+ proj1/*
+ proj1/*/*
+ proj1/*/*/*.tar
+ proj1/*/*/*.pdf
+ proj2
+ proj2/*
+ proj2/*/*
+ proj2/*/*/*.tar
+ proj2/*/*/*.pdf
...
...
...
- *
পরীক্ষা হিসাবে, আমি সেই দুটি প্রকল্প (8.5 গিগাবাইট ডেটা) তুলেছি এবং আমি উপরের কমান্ডটি কার্যকর করেছি। অনুক্রমিক প্রক্রিয়া হওয়ায় এটি 14 মিনিট 58 সেকেন্ডটি শেষ করতে সরঞ্জাম দেয়। সুতরাং, 1.2TB ডেটার জন্য এটি বেশ কয়েক ঘন্টা সময় নিতে পারে।
আমি rsyncযদি সমান্তরালে একাধিক প্রক্রিয়া করতে পারি (ব্যবহার করে &, xargsবা parallel), এটি আমার সময় সাশ্রয় করবে।
আমি নীচে কমান্ড দিয়ে চেষ্টা করেছি parallel( cdউত্স ডিরেক্টরিতে অন্তর্ভুক্ত করার পরে ) এবং এটি কার্যকর করতে 12 মিনিট 37 সেকেন্ড সময় নিয়েছিল:
parallel --will-cite -j 5 rsync -avzm --stats --human-readable {} REMOTEHOST:/data/ ::: .
এটিতে 5 বার কম সময় নেওয়া উচিত ছিল, তবে তা হয়নি। আমার মনে হয়, আমি কোথাও ভুল করছি
rsyncকার্যকর করার সময়টি হ্রাস করার জন্য আমি কীভাবে একাধিক প্রক্রিয়া চালাতে পারি ?
rsyncগুলি সমান্তরাল করা আমাদের প্রথম অগ্রাধিকার।
rsyncসমান্তরালে একাধিক গুলি এখন প্রাথমিক ফোকাস।