আপনি যদি কখনো tar দিয়ে বড় ভলিউম কম্প্রেস করেছেন, তবে জানেন এটি কতটা কষ্টকর হতে পারে। এটি অনেক সময় খুব ধীরে চলে, এবং আপনি বাধ্য হয়েন Ctrl + C চাপিয়ে টাস্ক বন্ধ করে দিতে এবং ভুলে যেতে। তবে, tar যা ব্যবহার করতে পারে এমন কিছু অন্যান্য টুল আছে, এবং আজকের ব্যাপকভাবে মাল্টি-থ্রেডেড CPU-র lợiথে আপনার tar আর্কাইভিং দ্রুত করার সেগুলো একটি চমৎকার পথ। এই আর্টিকেলটি আপনাকে দেখাবে কীভাবে tar-কে সকল কোর ব্যবহার করতে বাধ্য করবেন আর্কাইভ কম্প্রেস করার সময় লিনাক্সে।
টুলগুলো বোঝা এবং ইনস্টল করা
এখানে মূল তিনটি টুল হলো pigz, pbzip2, এবং pxz। টুলগুলোতে কিছু সূক্ষ্ম পার্থক্য আছে, কিন্তু পার্থক্যগুলো আসলে gzip, bzip2, এবং xz-এর মধ্যে। সেই ক্রমে কম্প্রেশন লেভেল বাড়ে, অর্থাৎ gzip দিয়ে কম্প্রেস করা আর্কাইভ xz দিয়ে কম্প্রেস করা আর্কাইভের চেয়ে বড় হবে, কিন্তু gzip স্বাভাবিকভাবেই xz-এর চেয়ে কম সময় নেবে। bzip2 באמצে আছে।
প্রতিটি টুলের নামের শুরুতে "p" অর্থ "পারালেল"। পারালেলাইজেশন বছরের পর বছর প্রাসঙ্গিক হয়ে উঠেছে—কোনো কিছু কতটুকু সকল CPU কোরে ছড়িয়ে পড়ে। AMD-এর Epyc এবং Threadripper লাইন'Argentine CPU যারা ৬৪ কোর এবং ১২৮ থ্রেড পর্যন্ত পৌঁছাতে পারে, সেক্ষেত্রে কোনো অ্যাপ্লিকেশন কতটুকু সেটি ব্যবহার করতে পারে সেটি বোঝা গুরুত্বপূর্ণ। এই কম্প্রেশন ফাংশনগুলো সেদের জন্য പ്രധാന প্রার্থী।
টুলগুলো ইনস্টল করতে, আপনি শুধু আপনার রিপোতে যেতে পারেন।
sudo apt install pigz pbzip2 pxz # Debian/Ubuntu sudo dnf install pigz pbzip2 pxz # Fedora sudo pacman -Sy pigz pbzip2 pxz # Arch Linux
এই আর্টিকেলটি pxz-এ ফোকাস করছে কনসিস্টেন্সির জন্য। pigz-এর জন্য এই টিউটোরিয়ালটি চেক আউট করুন।
Tar দিয়ে আর্কাইভ কম্প্রেস করা
tar-এর সিনট্যাক্স למדি সহজ। শুধু একটি ডিরেক্টরি কম্প্রেস করতে, আপনি এমন কমান্ড ব্যবহার করতে পারেন:
tar czf linux-5.10-rc3.tar.gz linux/ tar cjf linux-5.10-rc3.tar.bz2 linux/ tar cJf linux-5.10-rc3.tar.xz linux/
প্রথমটি gzip ব্যবহার করবে, দ্বিতীয়টি bzip2, এবং তৃতীয়টি xz। ফাইলনেম এবং ডিরেক্টরি আপনি যা করছেন তার উপর নির্ভর করে পরিবর্তিত হবে, কিন্তু আমি GitHub থেকে লিনাক্স কার্নেলটি আমার "/home" ডিরেক্টরিতে খিয়ে আনলাম, এবং আমি সেটি ব্যবহার করব। তাই, আমি time কমান্ডটি সামনে যোগ করে সেই কমান্ডটি চালাব যাতে দেখতে পাই কতক্ষণ লাগে। আপনি দেখতে পারবেন যে xz এই সিস্টেমে সবচেয়ে বেশি CPU পার্সেন্টেজ নিচ্ছে, কিন্তু এটি শুধু একটি কোরকে ১০০ পার্সেন্টে পিন করে রেখেছে।
আপনি দেখতে পারছেন, আমার পুরনো i7-2600s-কে Linux 5.10-rc3 কম্প্রেস করতে খুব বেশি সময় লাগলো (প্রায় ২৮ মিনিট)।
এখানেই এই প্যারালেল কম্প্রেশন টুলগুলো কাজে আসে। আপনি যদি বড় ফাইল কম্প্রেস করছেন এবং দ্রুত করতে চান, তবে আমি এই টুলগুলোকে পরামর্শ দিতে পারি না এমন কিছু নেই।
Tar-এর সাথে প্যারালেল কম্প্রেশন টুল ব্যবহার করা
আপনি হয় tar-কে --use-compression-program অপশন দিয়ে একটি কম্প্রেশন প্রোগ্রাম ব্যবহার করতে বলতে পারেন, অথবা কিছুটা সহজ কমান্ড ফ্ল্যাগ -I ব্যবহার করতে পারেন। যেকোনো এই টুলের জন্য সিনট্যাক্সের উদাহরণ এইরকম হবে:
tar -I pigz -cf linux-5.10-rc3.tar.gz linux/ tar -I pbzip2 -cf linux-5.10-rc3.tar.bz2 linux/ tar -I pxz -cf linux-5.10-rc3.tar.xz linux/
চলুন টেস্ট করে দেখি আমার সিস্টেমকে লিনাক্স কার্নেল কম্প্রেস করতে কতক্ষণ লাগে সকল আটটি থ্রেড অ্যাক্সেস দিয়ে। আপনি আমার htop রিডআউটে দেখতে পাচ্ছেন সকল থ্রেড pxz-এর কারণে ১০০ পার্সেন্ট ব্যবহারে পিন করা আছে।
আপনি দেখতে পাচ্ছেন যে আর্কাইভটি কম্প্রেস করতে কম thờiম লাগলো (প্রায় সাত মিনিট!), এবং তবুও মাল্টিটাস্কিং চলছিল। আমার ব্যাকগ্রাউন্ডে একটি ভার্চুয়াল মেশিন চলছে, এবং আমি কিছু ওয়েব ব্রাউজিং করছি। লিনাক্স কার্নেল হার্ডওয়ার শিডিউলার আপনাকে আপনার ব্যক্তিগত কাজের জন্য যা দরকার সেটি দেবে, তাই আপনি যদি আপনার pxz কমান্ডটি আপনার সিস্টেমে অন্য কোনো জিনিস ছাড়া চালিয়ে থাকেন, তবে আপনি সেটি আরও দ্রুত করতে পারেন।
pigz, pbzip2, এবং pxz-এ কম্প্রেশন লেভেল অ্যাডজাস্ট করা
আপনি pxz-কে কম্প্রেশন লেভেলও পাস করতে পারেন ফাইলটি আরও ছোট করার জন্য। এতে আরও RAM, CPU, এবং সময় লাগবে, কিন্তু যদি আপনাকে খুব ছোট ফাইল পেতে হয়, তবে এটি মানের। এখানে দুটি কমান্ড এবং তাদের ফলাফল পাশাপাশি তুলনা করা হলো।
কম্প্রেশন ততটুকু বেশি নয়, এবং সময়টি মানের নাও হতে পারে, কিন্তু যদি প্রতিটি মেগাবাইট গণনায় পড়ে, তবে এটি এখনো একটি চমৎকার অপশন।
আশা করি tar ব্যবহার করে সকল কোর দিয়ে আর্কাইভ কম্প্রেস করার এই গাইডটি আপনি উপভোগ করেছেন। আমাদের অন্যান্য লিনাক্স কন্টেন্টও চেক আউট করুন, যেমন লিনাক্সের জন্য নতুন PC বিল্ড করা, Apt মাস্টার করা এবং Apt গুরু হওয়া, এবং রাসপবেরি পায় Arch Linux ইনস্টল করা।