আমি 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
সমান্তরালে একাধিক গুলি এখন প্রাথমিক ফোকাস।