टार का उपयोग करते समय आप bzip2 ब्लॉक आकार कैसे सेट करते हैं?


9

मैं tarटेप करने के लिए एक linux सर्वर बैकअप के लिए उपयोग कर रहा हूँ । मैं -jफ़ाइल को संपीड़ित करने के लिए विकल्प का उपयोग कर रहा हूं bzip2, हालांकि मुझे टार से bzip2 के लिए ब्लॉक आकार विकल्पों को समायोजित करने का कोई तरीका नहीं दिखाई दे रहा है। डिफ़ॉल्ट ब्लॉक आकार 900,000 बाइट्स है जो सबसे अच्छा संपीड़न देता है लेकिन सबसे धीमा है। मैं संपीड़न अनुपात के बारे में परेशान नहीं हूं, इसलिए मैं bzip2 को छोटे ब्लॉक आकार के साथ तेजी से चलाने के लिए देख रहा हूं।


1
सिडेनोट: हाल ही में मैंने सब किया है लेकिन bzip2 को छोड़ दिया है। मैं lzma (lzma, lzma-utils, या lzma-sdk पैकेज से, नाम आपके वितरण पर निर्भर करता है) का उपयोग करता हूं। यह आमतौर पर एक ही सीपीयू दिए गए bzip2 की तुलना में समान या बेहतर होता है - और जब यह अपघटन की बात आती है तो यह बस bzip2 को उड़ा देता है। दूर।
मिहाई लिम्बायसन 19

जवाबों:


9
export BZIP=--fast
tar cjf foo.tar.bz2 foo

या पाइप के उत्पादन tarके लिए bzip2

हालाँकि आपको bzip2 मैन पेज से नोट करना चाहिए:

    -1 (या -) को -9 (या - एस्बेस्टस)
              सेक करते समय ब्लॉक का आकार 100 k, 200 k .. 900 k पर सेट करें।
              डीकंप्रेसिंग होने पर कोई प्रभाव नहीं पड़ता है। नीचे स्मृति प्रबंधन देखें।
              The-fast और --best aliases मुख्य रूप से GNU gzip कंपेटिटर्स के लिए हैं-
              ibility। विशेष रूप से, - टेक्स्ट चीजों को साइन-इन नहीं करता है-
              तेजी से। और --best केवल डिफ़ॉल्ट व्यवहार का चयन करता है।

आप वैकल्पिक विकल्प BZIP = -9 का उपयोग कैसे कर सकते हैं
पोल

4
tar -cjf dir.tar.bz2 --options bzip2:compression-level=9 path/to/dir/

मेरे सिस्टम पर (OSX El Capitan bsdtar 2.8.3) यह मैन पेज से गायब है (हालांकि gzip: संपीड़न-स्तर और xz: संपीड़न-स्तर सूचीबद्ध हैं), लेकिन इसका परीक्षण करने से विकल्प काम करता है।
स्टीवेंस

tar: unrecognized option '--options'
ZN13

2

bzip2 ब्लॉक आकार

bzip2कुछ ब्लॉक आकार विकल्प हैं। मैनुअल पेज से bzip2(1):

-1 (or --fast) to -9 (or --best)
       Set the block size to 100 k, 200 k ..  900 k when compressing.
       Has no effect when decompressing. See MEMORY MANAGEMENT below.
       The --fast and --best aliases are primarily for GNU gzip
       compatibility. In particular, --fast doesn't make things
       significantly faster. And --best merely selects the default
       behaviour.

जैसा कि आप कम से कम संपीड़न अनुपात के संबंध में तेजी से संपीड़न चाहते हैं, का उपयोग करते हुए bzip2, आप -1(या --fast) विकल्प चाहते हैं।

bzip2उपयोग करते समय ब्लॉक आकार सेट करनाtar

आप कुछ तरीकों bzip2का उपयोग करते समय ब्लॉक आकार सेट कर सकते tarहैं।

UNlX रास्ता

मेरा पसंदीदा तरीका, UNlX रास्ता वह है, जहाँ आप प्रत्येक उपकरण का स्वतंत्र रूप से उपयोग करते हैं, और उन्हें पाइप के माध्यम से जोड़ते हैं।

$ tar --create [FILE...] | bzip2 -1 > [ARCHIVE].tar.bz2

आप पढ़ सकते हैं कि "बनाएँ .tar with tar-> bzip it with bzip2-> इसे लिखें [ARCHIVE].tar.bz2"।

वातावरण विविधता

bzip2पर्यावरण चर के माध्यम से विकल्प निर्धारित करना भी संभव है BZIP2। मैनुअल पेज से bzip2(1):

bzip2 will read arguments from the environment variables BZIP2 and BZIP,
in that order, and will process them before any arguments read from the
command line. This gives a convenient way to supply default arguments.

तो इसका उपयोग करने के लिए tar, आप उदाहरण के लिए कर सकते हैं:

$ BZIP2=-1 tar --create --bzip2 --file [ARCHIVE].tar.bz2 [FILE...]

तेजी से विकल्प

bzip2एक धीमी संपीड़न एल्गोरिथ्म का उपयोग करता है। आप गति के बारे में चिंतित हैं, तो आप इस तरह के द्वारा इस्तेमाल किए जाने वाले के रूप में वैकल्पिक एल्गोरिदम, जांच कर सकता है gzipया lzop। यहाँ संपीड़न उपकरण की तुलना में एक अच्छा लेख है: https://aliver.wordpress.com/2010/06/22/huge-unix-file-compresser-shootout-with-tons-of-datagraphs/


ऐसा लगता है कि आपके पास यहाँ अच्छा उत्तर प्रदान करने के लिए ज्ञान हो सकता है, लेकिन कृपया पढ़ने पर विचार करें मैं एक अच्छा उत्तर कैसे लिखूँ? हमारे सहायता केंद्र में और फिर उत्तर को संशोधित करें। आपके कमांड / कोड / सेटिंग्स तकनीकी रूप से समाधान हो सकते हैं लेकिन कुछ स्पष्टीकरण का स्वागत है। अग्रिम में धन्यवाद।
HBruijn

1

tarआउटपुट को भेजें stdoutऔर फिर इसे bzip2अलग से पाइप करें :

% tar cvf - _file_ | bzip2 _opts_ > output.tar.bz2

0

यह और भी आसान है:

% tar -cvf dir.tar path/to/dir/ && bzip2 -9 dir.tar

3
एक अस्थायी फ़ाइल का उपयोग करने का मतलब है कि आपको लिखने के लिए टार के लिए पर्याप्त हार्ड डिस्क स्थान, प्लस बैंडविड्थ की आवश्यकता है और इसे पढ़ने के लिए bzip2। यह छोटी मात्रा में डेटा के लिए तुच्छ लग सकता है, लेकिन जब प्रश्न में निर्देशिका में कई सौ गीगाबाइट होते हैं, तो यह एक वास्तविक समस्या बन सकती है।
अंसार एस्ज़्टरमैन

हाँ धन्यवाद। मुझे पता है कि इसकी गहरी वजह क्या tarहै -zऔर क्यों है -j। ये विकल्प मुझे बहुत सुविधाजनक लगे। लेकिन वे दिन बचा सकते हैं।
एंड्रियास स्पिंडलर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.