সর্বশেষ আপডেট: 20 Aug, 2026

GZIP vs BZIP2 vs XZ: Which Linux Compression Format Is Best?

GZIP বনাম BZIP2 বনাম XZ: কোন লিনাক্স কম্প্রেশন ফরম্যাটটি সেরা?

আপনি দৈনিক ডাটাবেস ডাম্প প্যাক করছেন, বহু-গিগাবাইট ওয়েব সার্ভার লগ রোটেট করছেন, অথবা হাজারো নোডে কম্পাইল করা বাইনারি বিতরণ করছেন, কম্প্রেশন লিনাক্স প্রশাসনে একটি দৈনন্দিন বাস্তবতা।

যখন আপনি tar চালান বা স্ট্যান্ডার্ড ইনপুটের মাধ্যমে স্ট্রিমিং ডেটা প্রক্রিয়া করেন, আপনি সাধারণত তিনটি স্ট্যান্ডার্ড ইউটিলিটি দেখেন: GZIP (.gz), BZIP2 (.bz2), এবং XZ (.xz)।

যদিও এই তিনটি টুলের লক্ষ্য কাঁচা বাইটকে কম্প্যাক্ট আর্কাইভে সংকুচিত করা, তারা কম্প্রেশন অনুপাত, CPU রানটাইম এবং মেমরি ওভারহেডের মধ্যে মৌলিকভাবে ভিন্ন ইঞ্জিনিয়ারিং ট্রেড‑অফ করে। ভুল ফরম্যাট নির্বাচন করলে আপনার স্বয়ংক্রিয় ডিপ্লয়মেন্টে ধীরগতি সৃষ্টি হতে পারে, নির্ধারিত ব্যাকআপ উইন্ডো স্থগিত হতে পারে, অথবা সময়ের সাথে মূল্যবান স্টোরেজ নষ্ট হতে পারে।

এই গাইডটি ব্যাখ্যা করে কীভাবে প্রতিটি ফরম্যাট অভ্যন্তরে কাজ করে, বাস্তবিক ওয়ার্কলোডে তাদের পারফরম্যান্স কীভাবে, এবং আপনার অবকাঠামোর জন্য সঠিকটি কীভাবে নির্বাচন করবেন।

১. দ্রুত প্রযুক্তিগত প্রোফাইল: তিনটি প্রতিদ্বন্দ্বী

GZIP (GNU Zip)

  • অন্তর্নিহিত অ্যালগরিদম: DEFLATE (LZ77 এবং হাফম্যান কোডিংয়ের সমন্বয়)
  • ডিফল্ট এক্সটেনশন: .tar.gz, .tgz, .gz
  • রিলিজ যুগ: 1992 (Jean-loup Gailly এবং Mark Adler দ্বারা compress-এর পেটেন্ট-মুক্ত বিকল্প হিসেবে তৈরি করা হয়েছে)
  • মূল সুবিধা: অপ্রতিদ্বন্দ্বী কার্যকরী গতি এবং প্রায় সর্বজনীন ইকোসিস্টেম সমর্থন।
  • মূল অসুবিধা: আধুনিক পরিসংখ্যানিক এবং অভিধান-ভিত্তিক এনকোডারের তুলনায় কম কম্প্রেশন অনুপাত।

GZIP তিন দশকেরও বেশি সময় ধরে ইউনিক্স পরিবেশের ডিফল্ট কাজের হাতিয়ার হিসেবে কাজ করে আসছে। কারণ এর DEFLATE অ্যালগরিদম ছোট স্লাইডিং উইন্ডো (৩২ কিবি) দিয়ে কাজ করে, GZIP কম্প্রেশন এবং ডিকম্প্রেশন উভয় সময়েই নগণ্য মেমরি ওভারহেড প্রয়োজন হয়।

BZIP2

  • অন্তর্নিহিত অ্যালগরিদম: Burrows-Wheeler ট্রান্সফর্ম (BWT) মুভ-টু-ফ্রন্ট (MTF) ট্রান্সফর্ম এবং হাফম্যান কোডিংয়ের সমন্বয়
  • ডিফল্ট এক্সটেনশন: .tar.bz2, .tbz2, .bz2
  • রিলিজ যুগ: 1996 (জুলিয়ান সিউয়ার্ড দ্বারা তৈরি)
  • মূল সুবিধা: পুনরাবৃত্ত ASCII এবং কাঠামোগত লগ ফাইলগুলিতে GZIP এর চেয়ে ভাল কম্প্রেশন অনুপাত।
  • মূল অসুবিধা: সব ক্ষেত্রে ধীর, বিশেষ করে ডিকম্প্রেশন সময়, এবং নতুন অ্যালগরিদমের কারণে বেশিরভাগই অপ্রচলিত হয়ে গেছে।

BZIP2 ডেটা পৃথক ব্লকে (সাধারণত ৯০০ KB) প্রক্রিয়া করে, পুনরায় উল্টানো পারমুটেশন ব্যবহার করে যা সমান অক্ষরগুলোকে একসাথে গ্রুপ করে এনকোডিংয়ের আগে। যদিও এটি ১৯৯০-এর শেষ এবং ২০০০-এর দশকে GZIP এর ফাইল সাইজকে হারিয়ে প্রশংসিত হয়েছিল, এর গণনা খরচ তুলনামূলকভাবে বেশি।

XZ (LZMA2)

  • অন্তর্নিহিত অ্যালগরিদম: LZMA2 (Lempel-Ziv-Markov chain Algorithm, improved)
  • ডিফল্ট এক্সটেনশন: .tar.xz, .txz, .xz
  • রিলিজ যুগ: 2009 (পুরোনো lzma ফরম্যাটের পরিপূরক হিসেবে পরিচিতি)
  • মূল সুবিধা: অত্যন্ত উচ্চ কম্প্রেশন অনুপাত এবং দ্রুত, হালকা ডিকম্প্রেশন।
  • মূল অসুবিধা: প্রাথমিক সংকোচনের সময় ভারী RAM ব্যবহার এবং দীর্ঘ CPU রানটাইম।

XZ পরিবর্তনশীল ডিকশনারি সাইজ (ডিফল্টভাবে প্রায় ৩২ MB বা ৬৪ MB পর্যন্ত) ব্যবহার করে GZIP এর তুলনায় অনেক বড় ডেটা উইন্ডোতে ডুপ্লিকেট বাইট প্যাটার্ন খুঁজে পায়। এটি OS ইনস্টলেশন মিডিয়া, কার্নেল সোর্স ট্রি এবং ফার্মওয়্যার ইমেজের মতো বড়, পুনরাবৃত্ত ফাইলগুলোকে সংকুচিত করতে অত্যন্ত কার্যকর করে তোলে।

২. পারফরম্যান্স তুলনা ম্যাট্রিক্স

নিচের টেবিলটি স্ট্যান্ডার্ড সার্ভার হার্ডওয়্যারে ডিফল্ট কনফিগারেশন চালানোর সময় প্রতিটি ইউটিলিটির বাস্তব পারফরম্যান্স ডাইনামিক্সের সারসংক্ষেপ দেয়:

মেট্রিক / মাত্রাGZIP (-6)BZIP2 (-9)XZ (-6)
কম্প্রেশন অনুপাতমধ্যম (~৬৫-৭৫% হ্রাস)ভাল (~75-80% হ্রাস)উৎকৃষ্ট (~80-88% হ্রাস)
কম্প্রেশন গতিঅত্যন্ত দ্রুতধীরখুব ধীর
ডিকম্প্রেশন গতিঅত্যন্ত দ্রুতধীর থেকে মাঝারিদ্রুত
কম্প্রেশন RAM ব্যবহারনগণ্য (~১–২ এমবি)কম (~৮–১০ এমবি)উচ্চ (~১০০–৭০০ এমবি+)
ডিকমপ্রেশন RAM ব্যবহারনগণ্য (< ১ এমবি)কম (~৪ এমবি)মধ্যম (~১০–৬৫ এমবি)
প্রাথমিক সেরা পয়েন্টলগ, CI/CD পাইপলাইন, রিয়েল-টাইম স্ট্রিমলিগেসি আর্কাইভ সামঞ্জস্যতাপ্যাকেজ রিপোজ, OS ISO, কোল্ড স্টোরেজ

৩. বাস্তব-জগতের বেঞ্চমার্ক অন্তর্দৃষ্টি

এই টুলগুলো বাস্তবিক লোডে কীভাবে আচরণ করে তা বুঝতে, একটি প্রতিনিধিত্বশীল ১ জিবি র’ সার্ভার অ্যাক্সেস লগ এবং একটি অকমপ্রেসড ৫০০ এমবি সফটওয়্যার সোর্স কোড ডিরেক্টরি বিবেচনা করুন।

পরিস্থিতি A: বড় লগ ফাইল (১ জিবি টেক্সট) সংকোচন

  • GZIP: ১২ সেকেন্ডের কম সময়ে শেষ হয়, প্রায় ১৮০ এমবি আর্কাইভ সরবরাহ করে।
  • BZIP2: প্রায় ৪৫–৫০ সেকেন্ডে শেষ হয়, ফাইলকে প্রায় ১৩০ এমবিতে কমিয়ে দেয়।
  • XZ: ডিফল্ট সেটিংসে ৮০–৯০ সেকেন্ড সময় নেয়, প্রায় ৯৫ এমবি আর্কাইভ তৈরি করে।

পরিস্থিতি B: ডিকম্প্রেশন কাজের চাপ

একটি গুরুত্বপূর্ণ মেট্রিক যা প্রায়ই উপেক্ষা করা হয় তা হল অসাম্যতা।

  • GZIP ২–৩ সেকেন্ডে ডিকমপ্রেস করে এবং মাইক্রোস্কোপিক মেমরি ব্যবহার করে।
  • XZ ৪–৬ সেকেন্ডে ডিকমপ্রেস করে। যদিও প্রাথমিক কম্প্রেশন ধীর ছিল, .xz এক্সট্র্যাক্ট করা প্রায় .gz এক্সট্র্যাক্ট করার মতো দ্রুত।
  • BZIP2 আনপ্যাক করার জন্য প্রায় ২৫–৩০ সেকেন্ড সময় নেয়, কারণ বারোয়েস-উইলার ট্রান্সফর্ম উল্টানো গণনামূলকভাবে এটিকে এনকোড করার সমান।

৪. কেন BZIP2 জনপ্রিয়তা হারাচ্ছে

আধুনিক অবকাঠামোতে, BZIP2 নিজেকে অস্বস্তিকর মাঝামাঝি অবস্থানে পায়।

  1. GZIP দ্বারা গতি ক্ষেত্রে পরাজিত: যদি প্রক্রিয়ার বিলম্ব বা কম CPU ব্যবহার গুরুত্বপূর্ণ হয়, তবে GZIP উল্লেখযোগ্যভাবে দ্রুত।
  2. XZ দ্বারা ঘনত্বে পরাজিত: যদি ব্যান্ডউইথ সংরক্ষণ এবং স্টোরেজ দক্ষতা গুরুত্বপূর্ণ হয়, তবে XZ উল্লেখযোগ্যভাবে ছোট আর্কাইভ তৈরি করে।
  3. উভয়ের দ্বারা ডিকমপ্রেশন গতি ক্ষেত্রে পরাজিত: সফটওয়্যার ডেলিভারি সিস্টেমে, ক্লায়েন্টরা .tar.bz2 ফাইল এক্সট্র্যাক্ট করার সময় .tar.gz বা .tar.xz এর তুলনায় পরিমাপযোগ্য CPU পেনাল্টি বহন করে।

ফলস্বরূপ, প্রধান লিনাক্স ডিস্ট্রিবিউশনগুলো (ডেবিয়ান, আর্চ এবং ফেডোরা সহ) তাদের অফিসিয়াল প্যাকেজ ডিস্ট্রিবিউশন এবং কার্নেল টারবলগুলো BZIP2 থেকে XZ এর দিকে সরিয়ে নিয়েছে (এবং সাম্প্রতিককালে রানটাইম অপারেশনের জন্য Zstandard-এ পরিবর্তন করেছে)।

৫. ব্যবহারিক কমান্ড-লাইন ব্যবহার

Tar ইন্টিগ্রেশন (সবচেয়ে সাধারণ ওয়ার্কফ্লো)

GNU tar-এর আধুনিক বাস্তবায়নগুলি ফাইল এক্সটেনশনের ভিত্তিতে স্বয়ংক্রিয়ভাবে কম্প্রেশন ফরম্যাট সনাক্ত করে, তবে স্পষ্ট ফ্ল্যাগ ব্যবহার করা এখনও মানক প্র্যাকটিস:

# GZIP: Fast archive creation
tar -czvf project-backup.tar.gz /var/www/project/

# BZIP2: Legacy high-ratio archive
tar -cjvf project-backup.tar.bz2 /var/www/project/

# XZ: Maximum space savings
tar -cJvf project-backup.tar.xz /var/www/project/

# Generic extraction (tar auto-detects the format)
tar -xvf archive-name.tar.*

স্ট্যান্ডএলোন ফাইল সংকোচন

ব্যান্ডলিং ছাড়া পৃথক ফাইলগুলি কম্প্রেস করতে:

# Compress keeping the original file intact (-k)
gzip -k access.log      # Output: access.log.gz
bzip2 -k access.log     # Output: access.log.bz2
xz -k access.log        # Output: access.log.xz

# Decompress individual files
gzip -d access.log.gz
bzip2 -d access.log.bz2
xz -d access.log.xz

মাল্টি-কোর সিস্টেম ব্যবহার

ডিফল্টভাবে, এই টুলগুলির সিঙ্গল-থ্রেডেড বাস্তবায়নগুলি শুধুমাত্র একটি CPU কোর ব্যবহার করে। আপনি যদি আধুনিক মাল্টি-কোর সার্ভারে বহু-গিগাবাইট আর্কাইভ কম্প্রেস করেন, সিঙ্গল-থ্রেডেড প্রক্রিয়াকরণে ঘণ্টার সময় লাগতে পারে।

  • XZ মাল্টি-থ্রেডিং: -T অথবা --threads এর মাধ্যমে নেটিভ সাপোর্ট:
    xz -T0 -k database_dump.sql   # Uses all available CPU cores
    
  • প্যারালেল GZIP (pigz): একটি ড্রপ-ইন রিপ্লেসমেন্ট যা GZIP অপারেশনের জন্য সব CPU কোর ব্যবহার করে:
    pigz -k database_dump.sql
    
  • প্যারালেল BZIP2 (pbzip2): BZIP2-এর জন্য মাল্টি-থ্রেডেড বাস্তবায়ন:
    pbzip2 -k database_dump.sql
    

৬. কীভাবে নির্বাচন করবেন: ব্যবহারিক সিদ্ধান্ত কাঠামো

আপনার ওয়ার্কফ্লোর প্রধান সীমাবদ্ধতার ভিত্তিতে টুলটি নির্বাচন করুন:

যদি GZIP ব্যবহার করেন:

  • আপনি রিয়েল-টাইম স্ট্রিম কম্প্রেশন বা নেটওয়ার্ক ট্রান্সমিশন সেট আপ করছেন যেখানে থ্রুপুট সীমাবদ্ধ ফ্যাক্টর।
  • আপনি প্রোডাকশন সার্ভারগুলোতে স্বয়ংক্রিয় লগ রোটেশন (logrotate) পরিচালনা করছেন যেখানে CPU সম্পদগুলি অ্যাপ্লিকেশন ওয়ার্কলোডের জন্য সংরক্ষিত থাকতে হবে।
  • লিগেসি এমবেডেড সিস্টেম এবং স্ট্যান্ডার্ড বেস ইমেজগুলোর মধ্যে সর্বোচ্চ পোর্টেবিলিটি প্রয়োজন।

যদি XZ ব্যবহার করেন:

  • আপনি রিলিজ আর্টিফ্যাক্ট, কার্নেল বিল্ড, কন্টেইনার বেস ইমেজ, অথবা স্ট্যাটিক প্যাকেজ রিপোজিটরি প্রকাশ করছেন যা তৃতীয় পক্ষের দ্বারা ঘন ঘন ডাউনলোড হয়।
  • আপনি দীর্ঘমেয়াদী কোল্ড আর্কাইভ (অফ-সাইট সাপ্তাহিক/মাসিক ব্যাকআপ) প্রস্তুত করছেন যেখানে স্টোরেজ খরচ একবারের কম্প্রেশন সময়ের চেয়ে বেশি।
  • আপনাকে ছোট ফাইল সাইজ দরকার, তবে আপনার ব্যবহারকারীরা এখনও দ্রুত ডাউনলোড এবং দ্রুত এক্সট্র্যাকশন সময়ের দাবি রাখে।

শুধুমাত্র যদি BZIP2 রাখেন:

  • আপনি লিগেসি স্ক্রিপ্ট, বিদ্যমান ব্যাকআপ রিস্টোর রুটিন, অথবা এমন সফটওয়্যার অ্যাপ্লায়েন্সের সাথে ব্যাকওয়ার্ড কম্প্যাটিবিলিটি বজায় রাখছেন যা XZ ডিকম্প্রেসর সরবরাহ করে না।

৭. প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ)

Q1. কোন ফরম্যাটটি সবচেয়ে ছোট আর্কাইভ সাইজ প্রদান করে? XZ ধারাবাহিকভাবে তিনটির মধ্যে সবচেয়ে ছোট আর্কাইভ সাইজ উৎপন্ন করে কারণ এর বড় LZMA2 ডিকশনারি উইন্ডো।

Q2. ফাইল ডিকম্প্রেস করার সময় XZ কি GZIP এর চেয়ে ধীর? XZ ডিকম্প্রেস করতে GZIP এর তুলনায় সামান্য ধীর, তবে এটি BZIP2 এর তুলনায় উল্লেখযোগ্যভাবে দ্রুত।

প্রশ্ন ৩. GZIP এবং XZ কি একাধিক CPU কোরের সুবিধা নিতে পারে? XZ নেটিভ মাল্টি-থ্রেডিং সমর্থন করে -T0 ফ্ল্যাগ ব্যবহার করে, আর GZIP কোরগুলোর মধ্যে প্যারালালাইজ করা যায় pigz ড্রপ-ইন ইউটিলিটি ব্যবহার করে।

প্রশ্ন ৪. কেন লিনাক্স ডিস্ট্রিবিউশনগুলো BZIP2 বাদ দিচ্ছে? ডিস্ট্রিবিউশনগুলো মূলত BZIP2 বাদ দিয়েছে কারণ XZ কম্প্রেস করে ছোট সাইজে এবং ডিকম্প্রেস দ্রুত, আর GZIP দ্রুততর থাকে দ্রুত অপারেশনের জন্য।

প্রশ্ন ৫. -9 এর মতো উচ্চ কম্প্রেশন লেভেল কি উল্লেখযোগ্য পার্থক্য তৈরি করে? লেভেল -9 সেট করলে গড়ে মাত্র ১% থেকে ৩% আকার হ্রাস হয়, তবে CPU সাইকেল ব্যবহার এবং মেমরি ওভারহেড নাটকীয়ভাবে বাড়ে।

আরও দেখুন