2012-09-08 11 views
150

संभव डुप्लिकेट बैश में एक संपीड़ित फ़ाइल में सभी उप-निर्देशिका में gzip के लिए:
gzipping up a set of directories and creating a tar compressed fileकैसे सभी फाइलों

This post का वर्णन करता है एक निर्देशिका संरचना के भीतर अलग-अलग प्रत्येक फ़ाइल gzip के लिए कैसे। हालांकि, मुझे कुछ अलग करने की ज़रूरत है। मुझे एक निश्चित निर्देशिका के तहत सभी फ़ाइलों के लिए एक बड़ी gzip फ़ाइल बनाने की आवश्यकता है। मुझे संपीड़ित फ़ाइल (उदा।, Files.gz) के लिए आउटपुट फ़ाइल नाम निर्दिष्ट करने में सक्षम होना चाहिए और पुरानी संपीड़ित फ़ाइल फ़ाइल को ओवरराइट करना चाहिए यदि कोई पहले से मौजूद है। folderToCompress में

+0

'अपने स्वभाव से gzip' केवल एक ही संपीड़ित करता है फ़ाइल। बाद में gzipping के लिए एक फ़ाइल में एकाधिक फ़ाइलों को रखने के लिए, 'tar' का उपयोग करें। – Thomas

उत्तर

310
tar -zcvf compressFileName.tar.gz folderToCompress 

सब कुछ compressFileName

को

संपादित जाना होगा: समीक्षा और टिप्पणियों के बाद मुझे एहसास हुआ कि लोगों को एक विस्तार के बिना compressFileName साथ भ्रमित हो सकता है। यदि आप चाहते हैं कि आप compress.gileName

+1

धन्यवाद। क्या यह सब कुछ "फ़ोल्डरToCompress" (यानी, पुनरावर्ती) के तहत संपीड़ित करेगा? – Doug

+1

फ़ोल्डर में सबकुछ ToCompress कंप्रेसर पर जायेगा FileName – amitchhajer

+73

शायद आप 'compressFileName'' चुनना चाहते हैं, इसलिए इसमें '.tar.gz' एक्सटेंशन शामिल है या आप सभी को पागल कर देंगे। – drewish

15

@Mitchhajer की पोस्ट जीएनयू टैर के लिए काम करता है तो .tar.gz एक्सटेंशन (सुझाए गए अनुसार) का उपयोग कर सकते हैं। किसी को इस पोस्ट पाता है और इसकी आवश्यकता है एक गैर GNU सिस्टम पर काम करने के लिए है, तो वे ऐसा कर सकते हैं:

zcat compressFileName | tar xvf - 
+2

पोर्टेबल होने के अलावा, यह समाधान उपयोगी है यदि आप gzip (उदाहरण के लिए, --test या --best) के लिए तर्क पारित करना चाहते हैं, क्योंकि afaik यहां तक ​​कि जीएनयू टैर gzip को तर्क भेजने का कोई तरीका प्रदान नहीं करता है। –

+0

यह बहुमुखी है, क्योंकि आप अन्य कंप्रेसर का भी उपयोग कर सकते हैं। उदाहरण के लिए 'pigz' जो तेज़ है क्योंकि यह सीपीयू को बेहतर ढंग से उपयोग कर सकता है (ज़िप का बहु-थ्रेड कार्यान्वयन)। लिनक्स-> विंडोज़ के लिए –

51

वहाँ संपीड़न तरीकों कि रिकर्सिवली काम कमान के बहुत सारे हैं:

tar cvf - folderToCompress | gzip > compressFileName 

संग्रह विस्तार करने के लिए लाइन और यह जानने के लिए अच्छा है कि अंतिम दर्शक कौन है।

यानी अगर यह किसी चल खिड़कियों के लिए भेजा जाना तो ज़िप शायद सबसे अच्छा होगा है:

zip -r file.zip folder_to_zip 

unzip filenname.zip 
अन्य लिनक्स उपयोगकर्ताओं के लिए

या अपने स्वयं टार महान है

tar -cvzf filename.tar.gz folder 

tar -cvjf filename.tar.bz2 folder # even more compression 

#change the -c to -x to above to extract 

एक सावधान रहना चाहिए टैर के साथ और चीजों को कैसे निकाला जाता है/निकाला जाता है, उदाहरण के लिए यदि मैं

cd ~ 
tar -cvzf passwd.tar.gz /etc/passwd 
tar: Removing leading `/' from member names 
/etc/passwd 


pwd 

/home/myusername

tar -xvzf passwd.tar.gz 

इस /घर/myusername पैदा करेगा/etc/पासवर्ड

अनिश्चित अगर टार के सभी संस्करणों ऐसा करते हैं:

Removing leading `/' from member names 
+4

+1 –

संबंधित मुद्दे