सवाल Tar -zcvf का उपयोग करते समय संपीड़न के स्तर को कैसे निर्दिष्ट करें?


मैं काम पर अक्सर निर्देशिका gzip। मैं आमतौर पर क्या करता हूं

tar -zcvf file.tar.gz /path/to/directory

क्या यहां संपीड़न स्तर निर्दिष्ट करने का कोई तरीका है? मैं सबसे अच्छा संपीड़न संभवतः उपयोग करना चाहता हूं भले ही इसे संपीड़ित करने में अधिक समय लगे।


125
2017-07-01 18:00


मूल




जवाब:


GZIP=-9 tar cvzf file.tar.gz /path/to/directory

मानते हुए कि आप बैश का उपयोग कर रहे हैं। आम तौर पर, जीजेआईपी पर्यावरण चर को "-9" पर सेट करें, और सामान्य रूप से रन टैर करें।

इसके अलावा - अगर आप वास्तव में सबसे अच्छा संपीड़न चाहते हैं, तो gzip का उपयोग न करें। Lzma या 7z का प्रयोग करें।

और जब gzip का उपयोग करते हैं (जो कि किसी भी कारण से विभिन्न कारणों के लिए अच्छा विचार है) का उपयोग करने पर विचार करें pigz कार्यक्रम और नहीं gzip


124
2017-07-01 18:38



पिगज़ "समांतर gzip" है जो आपके सभी कोर का उपयोग gzip संपीड़न के लिए करता है। तुम देख सकते हो top और 200% -400 $ सीपीयू के बीच कहीं भी इसका उपयोग कर देखें। - Felipe Alvarez
एफबीआई, .bz2 प्रारूप के लिए, उपयोग करें: BZIP2 = -9 tar cvjf file.tar.bz2 / path / to / निर्देशिका - Tomofumi
पर्यावरण चर अब प्रतीत होता है GZIP_OPT, उपयोग वही होना चाहिए। - Seer
Gzip के लिए उबंटू 16.04 पर मैन पेज से: "वैक्स / वीएमएस पर, पर्यावरण परिवर्तनीय का नाम GZIP_OPT है, प्रोग्राम के आमंत्रण के लिए प्रतीक सेट के साथ संघर्ष से बचने के लिए।" Sh, csh, और MSDOS के लिए यह अभी भी GZIP होना चाहिए - Ponyboy47


टैर के लिए gzip ध्वज का उपयोग करने के बजाय, टैर प्रक्रिया के बाद फ़ाइलों को मैन्युअल रूप से gzip करें, तो आप gzip प्रोग्राम के लिए संपीड़न स्तर निर्दिष्ट कर सकते हैं:

tar -cvf files.tar /path/to/file0 /path/to/file1 ; gzip -9 files.tar

या आप इसका उपयोग कर सकते हैं:

tar cvf - /path/to/file0 /path/to/file1 | gzip -9 - > files.tar.gz

Gzip कमांड लाइन में -9 अधिकतम संभव संपीड़न स्तर (डिफ़ॉल्ट है -6) का उपयोग करने के लिए gzip बताता है।

संपादित करें: @Depesz टिप्पणी के आधार पर फिक्स्ड पाइप कमांड लाइन।


62
2017-07-01 18:25



पाइप का उपयोग करना चाहिए: tar cvf - /path/to/directory | gzip -9 - > file.tar.gz
पहला उदाहरण समाप्त होना चाहिए file.tar, जबसे gzip ".gz" एक्सटेंशन जोड़ता है। - bonsaiviking
तुम क्यों नहीं छोड़ते f -? अगर कोई फ़ाइल नहीं है, तो यह stdin / out है - akostadinov
Previos टिप्पणी के अलावा। "मैन टैर" सेक्शन Environtment: TAPE डिवाइस या फ़ाइल को संग्रह के लिए उपयोग करने के लिए अगर --file निर्दिष्ट नहीं है। यदि यह पर्यावरण चर सेट नहीं है, तो इसके बजाय stdin या stdout का उपयोग करें। - Mikl
और हम "gzip -9 -" -> "gzip -9" को कम कर सकते हैं। "मैन gzip" सेक्शन विवरण: यदि कोई फ़ाइल निर्दिष्ट नहीं है, या यदि फ़ाइल नाम "-" है, मानक इनपुट मानक आउटपुट के लिए संपीड़ित है। - Mikl


टैर के आधुनिक संस्करण xz संग्रह प्रारूप का समर्थन करते हैं (जीएनयू टैर, 1.22 के बाद से 200 9 में, व्यस्त बॉक्स 1.17.0 के बाद से 2010 में)।

यह पर आधारित है LZMA2, एक तरह की 7-Zip का संस्करण GZ। यदि आप xz समर्थन की आवश्यकता के साथ ठीक हैं तो यह बेहतर संपीड़न देता है।

tar -Jcvf file.tar.xz /path/to/directory

मुझे अभी पता चला यहाँ (मूल रूप से इस प्रश्न का एक डुप्लिकेट, लेकिन यूनिक्स स्टैकएक्सचेंज में) कि XZ_OPT = -9 पर्यावरण परिवर्तक भी है जो XZ संपीड़न स्तर को अन्य पोस्ट में GZIP के समान नियंत्रित करता है।

XZ_OPT=-9 tar -Jcvf file.tar.xz /path/to/directory

44
2017-12-19 03:03



+1 xz दोनों bzip2 और gzip से कहीं बेहतर है। यहां एक तुलना है: tukaani.org/lzma/benchmarks.html - User1
व्यापार बंद गति है। एक्सजेड है काफी और धीमा। - Bell


tar cv /path/to/directory | gzip --best > file.tar.gz

यह मैट्रिक्स मोल का दूसरा समाधान है, लेकिन थोड़ा छोटा है:

टैर कॉल करते समय, विकल्प f कहता है कि आउटपुट एक फाइल है। इसे स्थापित करना - (stdout) टैर को अपने आउटपुट को stdout पर लिखता है जो दोनों के बिना डिफ़ॉल्ट व्यवहार है f तथा -

और जैसा कि कहा गया है gzip मैन पेज, अगर कोई फाइल निर्दिष्ट नहीं है तो gzip मानक इनपुट से संपीड़ित होगा। इसकी कोई आवश्यकता नहीं है - में gzip कहते हैं।

विकल्प --best (के बराबर -9) उच्चतम संपीड़न स्तर सेट करता है।


28
2018-02-04 18:17



यह खूबसूरती से काम करता है। यदि आप रूट के रूप में चलाते हैं, तो अनुमतियां और मालिक भी संरक्षित हैं। अन्यथा आपको निर्दिष्ट करना होगा। अगर यह स्पष्ट नहीं था "-9" सबसे अच्छा संपीड़न है और "-1" सबसे तेज़ संपीड़न है। "-1" अभी भी बहुत कम समय लेता है यदि आपके पास बहुत सारी फाइलें हैं ;-) - PJ Brunet
यह साथ काम करता है xz तथा pixz भी। इंटरमीडिएट .tar फ़ाइल बनाने के बिना समांतर संपीड़न के लिए उपयोग किए गए धागे की संख्या को नियंत्रित करने का यह एक शानदार तरीका है। इस तरह tar -cv /path/to/dir | pixz -p4 > output.tpxz - joelostblom


-आई का उपयोग कर संपीड़न कार्यक्रम निर्दिष्ट करने का विकल्प भी है। इसमें संपीड़न स्तर विकल्प शामिल हो सकता है।

tar -I 'gzip -9' -cvf file.tar.gz /path/to/directory

10
2018-06-21 04:21



टैर के पुराने संस्करण जैसे कि CentOS 6 और 7 में प्रदान किए गए तर्क में तर्क प्रदान करने का समर्थन नहीं करते हैं -I तर्क, वे पूरी चीज को प्रोग्राम नाम के रूप में निष्पादित करने का प्रयास करेंगे, और इस प्रकार विफल हो जाएंगे। डेबियन स्ट्रेच में कम से कम टैर 1.2 9 के रूप में, यह काम करता है। - Cheetah