ডিফল্টরূপে সমান্তরাল bzip2 এবং gzip ব্যবহার করার সর্বোত্তম উপায় কী?


41

Bzip2 এবং gzip কেবল একটি কোর ব্যবহার করে, যদিও অনেক কম্পিউটারে একাধিক কোর থাকে। তবে lbzip2, pbzip2 এবং pigz এর মতো প্রোগ্রাম রয়েছে যা সমস্ত উপলব্ধ কোর ব্যবহার করে এবং bzip2 এবং gzip এর সাথে সামঞ্জস্যপূর্ণ হওয়ার প্রতিশ্রুতি দেয়।

তাই এই প্রোগ্রামগুলি ডিফল্টরূপে ব্যবহার করার সর্বোত্তম উপায় কী, যাতে tar cfa file.tar.bz2 directorybzip2 এর পরিবর্তে lbzip2 / pbzip2 ব্যবহার করা যায়? অবশ্যই আমি কিছু ভাঙতে চাই না।


2
সবার কাছে কৌতূহলের বাইরে: সমান্তরাল জিজিপ / বিজিপ কি সিরিয়ালের চেয়ে দ্রুত? আমি ভাবব যে এইচডিডি লেখার গতি এবং অন্যান্য প্রতিবন্ধকতা আরও বেশি সমস্যাযুক্ত।
কন-এফ-ব্যবহার

@ কন-এফ-ব্যবহার তাত্ত্বিকভাবে আপনার এসএসডি না থাকলে আর্কাইভের মোট আকার বাড়ার সাথে সাথে এটি তত দ্রুত হতে পারে।
মার্কো সেপ্পি

1
১ c সিপিএস সহ একটি সিস্টেমে জিজিপ থেকে পিগজে স্যুইচ করার সময়টি 1.2২B ডলার থেকে কমিয়ে আনা হয়েছে এবং এটি নেটওয়ার্কের মাধ্যমে স্থানান্তরিত হয়েছে এবং ফলাফলটি 18 ঘন্টা ব্যাকআপ এবং 14 ঘন্টা পরীক্ষার থেকে 4 ঘন্টা ব্যাকআপ এবং 2 ঘন্টা পরীক্ষায় পরীক্ষা করে। অনেকগুলি সম্ভাব্য বাধা, ডিস্ক গতি, নেটওয়ার্ক গতি, প্রক্রিয়াকরণ শক্তি রয়েছে তবে এই ক্ষেত্রে এটি অবশ্যই আইও বাউন্ডের চেয়ে বেশি সিপু ছিল bound এটি একটি হাই এন্ড সিস্টেম, আপনার ফলাফলগুলি পৃথক হতে পারে। এটি যে গুরুত্বপূর্ণ তা নয়, তবে এটি RHEL6
সিএস_মালিউনস

উত্তর:


32

আপনি bzip2, bunzip2 এবং bzcat কে lbzip2, এবং gzip, gunzip, gzcat এবং zcat to pigz এ সিমিলিংক করতে পারেন:

sudo apt-get install lbzip2 pigz
cd /usr/local/bin
ln -s /usr/bin/lbzip2 bzip2
ln -s /usr/bin/lbzip2 bunzip2
ln -s /usr/bin/lbzip2 bzcat
ln -s /usr/bin/pigz gzip
ln -s /usr/bin/pigz gunzip
ln -s /usr/bin/pigz gzcat
ln -s /usr/bin/pigz zcat

আমি pbzip2 এর পরিবর্তে lbzip2 বেছে নিয়েছি কারণ /usr/share/doc/lbzip2/README.gz /usr/share/doc/pbzip2/README.gz এর চেয়ে "সুন্দর" দেখাচ্ছে। এছাড়াও, টার ম্যানুয়ালটি lbzip2 সম্পর্কে কথা বলে

সম্পাদনা:

পিগজ -২.১..6, যা যথার্থ প্যাঙ্গোলিনের অন্তর্ভুক্ত রয়েছে, অজানা প্রত্যয় (উদাহরণস্বরূপ initramfs - *। img) সহ ফাইলগুলি সংক্ষেপিত করতে অস্বীকার করে। এটি পিগজ -২.২.৪ এ স্থির করা হয়েছে, যা কোয়ান্টাল সহ জাহাজগুলি। সুতরাং আপনি কোয়ান্টাল পর্যন্ত অপেক্ষা করতে পারেন, কোয়ান্টাল প্যাকেজটি ম্যানুয়ালি ইনস্টল করতে পারেন , বা এখনও গানজিপ / gzcat / zcat লিঙ্ক করবেন না।


7
এটি ভাল কাজ করে কারণ / usr / স্থানীয় / বিন / বেশিরভাগ লোকের AT PATH এ / বিন / এর আগে আসে। যদি কোনও কিছু সরাসরি / বিন / গানজিপ কল করে বা কারও $ PATH- এ প্রথমে বিন / বিন থাকে, তারা পিগজ ব্যবহার করবে না। তাদের জন্য এই কাজটি করার জন্য আপনি ডিপিকে-ডাইভার্টটি ব্যবহার করতে পারেন এবং সমস্ত বাইনারিগুলির জন্য এই জাতীয় কিছু করতে পারেন sudo dpkg-divert --divert /bin/gunzip.orig --rename /bin/gunzip; sudo ln -s /usr/bin/pigz /bin/gunzipতবে সম্ভাবনা রয়েছে যে পিগজ সমস্ত গিজিপ পতাকাগুলির সাথে 100% সামঞ্জস্যপূর্ণ নয় তাই যত্নবান হন।
মার্ক ম্যাককিনস্ট্রি

31

সিমলিংক ধারণাটি আসলেই ভাল।
আর একটি কার্যনির্বাহী সমাধান হ'ল তার নাম tar:

alias tar='tar --use-compress-program=pbzip2'

বা যথাক্রমে

alias tar='tar --use-compress-program=pigz'

এটি অন্য ধরণের ডিফল্ট তৈরি করে।


যোগ বেনিফিট: আপনি 'partar' পছন্দ ওরফে ব্যবহার করতে পারেন যদি আপনি (কিছু কারণে) মূল কার্যকারিতা সংরক্ষণ করতে ইচ্ছুক .. দুঃখিতভাবে 'ptar' Perl বাস্তবায়ন করতে হয়
Jena

13

সিমলিংকের উত্তরটি সত্যই ভুল। এটি পুরো সিস্টেমের জন্য ডিফল্ট জিজিপ (বা bzip2) পিগজ (বা pbzip2) এর সাথে প্রতিস্থাপন করবে। সমান্তরাল বাস্তবায়ন একক প্রক্রিয়া সংস্করণের সাথে উল্লেখযোগ্যভাবে মিল থাকলেও কমান্ড লাইন বিকল্পের সূক্ষ্ম পার্থক্যগুলি মূল সিস্টেম প্রক্রিয়াগুলি ভেঙে দিতে পারে যারা এই পার্থক্যের উপর নির্ভরশীল।

"- ব্যবহার-সংক্ষেপণ-প্রোগ্রাম" বিকল্পটি আরও ভাল পছন্দ। দ্বিতীয় বিকল্প (অনেকটা ওরফেটির মতো) হ'ল GNU টার দ্বারা সমর্থিত TAR_OPTIONS পরিবেশ পরিবর্তনশীল সেট করতে হবে:

$ রফতানি করুন TAR_OPTIONS = "- ব্যবহার-সংক্ষেপণ-প্রোগ্রাম = pbzip2"
c তার সিজেএফ মাইফাইল.টার.বিজে ২ মাইসুবডির /

6
আমি এখন থেকে ২০১১ সাল থেকে সিমলিংকগুলি ব্যবহার করে আসছি এবং কোনও ভাঙ্গা দেখিনি (সম্পাদনায় বর্ণিত মামলাটি বাদে)। এবং যদি এ জাতীয় সূক্ষ্ম পার্থক্য খুঁজে পাওয়া যায় না এবং তাদের প্রতিবেদন না করা হয় তবে আমরা চিরকালের জন্য অ-সমান্তরাল সংস্করণগুলির সাথে আটকে থাকব। আপনি যদি TAR_OPTIONS = "- ব্যবহার-সংক্ষেপণ-প্রোগ্রাম = pbzip2" ব্যবহার করেন তবে মনে হয় আপনি bzip2 এবং gzip এর মধ্যে পার্থক্য করতে পারবেন।
এলমিচা

এটি আমার পক্ষে কাজ করে না।
ডেরেক পার্কিনস

3

একটি আকর্ষণীয় বিকল্প হ'ল ডিফল্টরূপে মাল্টিথ্রেডযুক্ত ব্যবহার করার জন্য টার পুনরায় সংযোগ করা। এই স্ট্যাকওভারফ্লো উত্তরটি থেকে অনুলিপি করা হয়েছে

প্রতিস্থাপনের সাথে সংশোধন করা হচ্ছে

আপনি যদি উত্সগুলি থেকে টার তৈরি করেন, তবে আপনি পরামিতিগুলির সাথে পুনরায় কম্পাইল করতে পারেন

--with-gzip=pigz
--with-bzip2=lbzip2
--with-lzip=plzip

এই বিকল্পগুলির সাথে ডার পুনরায় সংবিধানের পরে আপনি তার সহায়তার আউটপুট পরীক্ষা করতে পারেন:

$ tar --help | grep "lbzip2\|plzip\|pigz"
  -j, --bzip2                filter the archive through lbzip2
      --lzip                 filter the archive through plzip
  -z, --gzip, --gunzip, --ungzip   filter the archive through pigz

-2

আপনার ~ / .Bash_aliases ব্যবহার করুন:

alias gzip="pigz"
alias gunzip="unpigz"

1
এটি কেবল তখন শেলটির কমান্ড-লাইনে gzip(বা gunzip) প্রোগ্রাম কল করার সময় কাজ করবে । অন্যান্য প্রোগ্রাম (যেমন tar) এর দ্বারা প্রভাবিত হবে না।
ক্রিশ্চিয়ান হুডন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.