कैसे सभी फ़ाइलों को सभी उप-निर्देशिकाओं में bash में एक संपीड़ित फ़ाइल में gzip करें


201

संभव डुप्लिकेट:
निर्देशिकाओं के एक सेट को टटोलना और एक टार संपीड़ित फ़ाइल बनाना

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


gzipइसकी बहुत ही प्रकृति से केवल एक फ़ाइल को संपीड़ित करता है। बाद की gzipping के लिए एक फ़ाइल में कई फ़ाइलों को रखने के लिए उपयोग करें tar
थॉमस

जवाबों:


387
tar -zcvf compressFileName.tar.gz folderToCompress

folderToCompress में सब कुछ compressFileName पर जाएगा

संपादित करें: समीक्षा और टिप्पणियों के बाद मुझे एहसास हुआ कि लोग बिना किसी एक्सटेंशन के कंप्रेसफाइलनाम के साथ भ्रमित हो सकते हैं। यदि आप चाहते हैं कि आप compress.ileName के साथ .tar.gz एक्सटेंशन (जैसा कि सुझाव दिया गया है) का उपयोग कर सकते हैं


2
धन्यवाद। क्या यह सब कुछ "folderToCompress" (यानी, पुनरावर्ती) के तहत संपीड़ित करेगा?
डग

2
folderToCompress में सब कुछ compressFileName
amitchhajer

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

9
यह निर्देशिका की एक अनियंत्रित संख्या के लिए भी काम करता है, उदाहरण के tar -zcvf two-dirs.tar.gz dir-one dir-twoलिए दो निर्देशिकाओं वाला एक संग्रह बनाएगा।
ज़ोल्टन

5
इसके अलावा *वर्तमान dir में सब कुछ संपीड़ित करने के लिए काम करता है , अर्थात:tar -zcvf all.tar.gz *

61

कई संपीड़न विधियाँ हैं जो पुनरावर्ती कमांड लाइन का काम करती हैं और यह जानने के लिए अच्छा है कि अंतिम दर्शक कौन है।

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

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

/ घर / myusername

tar -xvzf passwd.tar.gz

यह / होम / myusername / etc / passwd बनाएगा

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

 Removing leading `/' from member names

18

@amitchhajer का पद GNU टार के लिए काम करता है। यदि कोई इस पद को पाता है और उसे एनओएन GNUप्रणाली पर काम करने की आवश्यकता होती है, तो वे ऐसा कर सकते हैं:

tar cvf - folderToCompress | gzip > compressFileName

संग्रह का विस्तार करने के लिए:

zcat compressFileName | tar xvf -

2
पोर्टेबल होने के अलावा, यह समाधान उपयोगी है यदि आप gzip (जैसे, --est या --best) के लिए तर्क पारित करना चाहते हैं, तो afaik के बाद से भी GNU टार gzip में तर्क भेजने का एक तरीका प्रदान नहीं करता है।
टिमोथी वुड्स

यह बहुमुखी है, क्योंकि आप अन्य कंप्रेशर्स का भी उपयोग कर सकते हैं। उदाहरण के लिए pigzजो तेज है क्योंकि यह सीपीयू का बेहतर उपयोग कर सकता है (ज़िप का बहु-थ्रेडेड कार्यान्वयन)।
Ortwin Angermeier 17
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.