यह अजीब है कि किसी और ने यह उल्लेख नहीं किया है कि GNU के आधुनिक संस्करण tar
आपको बंडल करते समय संपीड़ित करने की अनुमति देते हैं:
tar -czf output.tar.gz directory1 ...
tar -cjf output.tar.bz2 directory2 ...
आप अपने चयन के कंप्रेसर का उपयोग भी कर सकते हैं, बशर्ते कि यह ' -c
' (स्टडआउट या स्टड से) और ' -d
' (डीकंप्रेस) विकल्पों का समर्थन करता है:
tar -cf output.tar.xxx --use-compress-program=xxx directory1 ...
यह आपको किसी भी वैकल्पिक कंप्रेसर को निर्दिष्ट करने की अनुमति देगा।
[ जोड़ा गया : यदि आप फ़ाइलों gzip
या bzip2
संपीड़ित फ़ाइलों से निकाल रहे हैं , तो GNU tar
इनका पता लगाता है और उपयुक्त प्रोग्राम चलाता है। अर्थात्, आप उपयोग कर सकते हैं:
tar -xf output.tar.gz
tar -xf output.tgz # A synonym for the .tar.gz extension
tar -xf output.tar.bz2
और इन्हें ठीक से संभाला जाएगा। यदि आप एक गैर-मानक कंप्रेसर का उपयोग करते हैं, तो आपको यह निर्दिष्ट करने की आवश्यकता है कि जब आप निष्कर्षण करते हैं।]
पृथक्करण का कारण, चयनित उत्तर के रूप में, कर्तव्यों का पृथक्करण है। अन्य बातों के अलावा, इसका मतलब है कि लोग cpio
फाइलों की पैकेजिंग के लिए ' ' कार्यक्रम का उपयोग कर सकते हैं (इसके बजाय tar
) और फिर पसंद के कंप्रेसर का उपयोग करें (एक समय में, पसंदीदा कंप्रेसर था pack
, बाद में यह हुआ था compress
(जो इससे कहीं अधिक प्रभावी था) pack
), और फिर gzip
जो अपने पूर्ववर्तियों के चारों ओर बजता है, और पूरी तरह से प्रतिस्पर्धी है zip
(जो यूनिक्स में चित्रित किया गया है, लेकिन वहां मूल नहीं है), और अब bzip2
जो, मेरे अनुभव में, आमतौर पर 10-20% का लाभ होता है gzip
।
[ जोड़ा गया : किसी ने अपने उत्तर में उल्लेख किया है कि cpio
अजीब सम्मेलनों है। यह सच है, लेकिन जब तक जीएनयू tar
को प्रासंगिक विकल्प (' -T -
') नहीं मिला, cpio
तब तक बेहतर आदेश था जब आप किसी दिए गए निर्देशिका के तहत सब कुछ संग्रह नहीं करना चाहते थे - आप वास्तव में चुन सकते थे कि कौन सी फाइलें संग्रहीत की गई थीं। का नकारात्मक पहलू cpio
आप न केवल कि था सकता है फ़ाइलें चुनें - आप था उन्हें चुनने के लिए। वहाँ अभी भी एक जगह है जहाँ cpio
स्कोर; यह एक इन-सीटू कॉपी को एक निर्देशिका पदानुक्रम से दूसरे में किसी भी मध्यवर्ती भंडारण के बिना कर सकता है:
cd /old/location; find . -depth -print | cpio -pvdumB /new/place
संयोग से, इस संदर्भ में ' -depth
' विकल्प find
महत्वपूर्ण है - यह निर्देशिकाओं की अनुमतियों को स्वयं निर्धारित करने से पहले निर्देशिकाओं की सामग्री की प्रतिलिपि बनाता है। जब मैंने इस उत्तर के अलावा प्रवेश करने से पहले कमांड की जाँच की, तो मैंने कुछ रीड-ओनली डायरेक्ट्रीज़ (555 अनुमति) की प्रतिलिपि बनाई; जब मैं कॉपी को हटाने गया, तो मुझे ' rm -fr /new/place
' समाप्त होने से पहले निर्देशिकाओं की अनुमतियों को शिथिल करना पड़ा । -depth
विकल्प के बिना , cpio
कमांड विफल हो जाती। मुझे केवल यह याद है जब मैं सफाई करने के लिए गया था - सूत्र ने कहा कि मेरे लिए स्वचालित है (मुख्य रूप से कई वर्षों में कई पुनरावृत्तियों के आधार पर)। ]