"Gzip" कमांड के साथ एक संग्रह बनाएँ


12

मुझे कमांड gzip के साथ एक संग्रह बनाना है (टार नहीं - यह आवश्यक है) और संग्रह में किसी अन्य निर्देशिका से फ़ाइलें होनी चाहिए - उदाहरण के लिए, / etc। मैंने कमांड का उपयोग करने की कोशिश की

gzip myetc.gz /etc

लेकिन यह काम नहीं किया।


3
gzipनहीं है zip। वे अलग-अलग उपकरण हैं जो अलग-अलग काम करते हैं।
रोइमा

3
gzipबस स्ट्रीम कंप्रेसर है। यह फाइलों या निर्देशिकाओं के बारे में नहीं जानता है।

3
आप टार का उपयोग क्यों नहीं कर सकते?
मार्सेलम

यदि आपके पास टार नहीं है, तो क्या आपके पास cpio है?
Rup

2
आप कहते हैं कि आप एक संग्रह बनाना चाहते हैं, लेकिन आप टार का उपयोग नहीं कर सकते। आप जानते हैं कि शब्द "टार" का हिस्सा "आर्किव" से आता है। मेरा मतलब है, कि इसकी छाप है। कौन या क्या एक संग्रह निर्माण प्रक्रिया से "टार" को बाहर करना चाहेगा? मूल रूप से आप पूछ रहे हैं कि हथौड़ा से स्क्रू कैसे चलाया जाए (पेचकश नहीं - यह आवश्यक है)।
माइक एस

जवाबों:


6

Gzip केवल एकल फ़ाइल या स्ट्रीम के साथ काम करता है - gzip पर पाइप किया गया डेटा। तो आपको सबसे पहले एक फाइल जनरेट करनी होगी, जैसे कि टार के साथ, और फिर आप उसे गज़िप कर सकते हैं। अन्य विकल्प सभी व्यक्तिगत फ़ाइलों को gzip करना है, और फिर उसे एक फ़ाइल में टारगेट करना है।

ये दोनों उपाय बेवकूफ हैं और इनका उपयोग नहीं किया जाना चाहिए। आपको अंतर्निहित संपीड़न विकल्प के साथ टार का उपयोग करना चाहिए और यह सब एक कमांड में करना चाहिए।


1
पहली विधि बेवकूफ क्यों होनी चाहिए? यह उत्पादन करने का सामान्य तरीका है .tar.gz...
rexkogitans

अच्छी तरह से बेवकूफ शायद सही शब्द नहीं है, लेकिन अगर आप सी विकल्प के साथ टार का उपयोग कर सकते हैं, तो गज़िप का उपयोग करने के बजाय। यह सरल है, और मुझे विश्वास नहीं है कि टार्गेट टू गज़िप में एक फायदा है।
SPRBRN

Gzip -r विकल्प के साथ कई फ़ाइलों के लिए काम कर सकता है, लेकिन फ़ोल्डर में प्रत्येक फ़ाइल के लिए एक नया .gz बनाएगा।
लुसियानो अंड्रेस मार्टिनी

1
@ ग्रैसकोगिटंस - यह उसी तरह cat filename | grep blahसे बेवकूफ है जो बेवकूफ है। यह इष्टतम से बहुत कम है क्योंकि यह एक बड़े अंतरिम स्थान का उपयोग करेगा। मुझे नहीं पता कि मैं इसे बेवक़ूफ़ कहूँ, जितना कि अक्खड़, अडॉप्टिमल, और आमतौर पर बदसूरत। खैर, बेवकूफ भी काम करता है।
माइक एस

ओह, अब मैं देखता हूं कि क्या बेवकूफी है। नहीं, `tar -czf` जाने का रास्ता है क्योंकि इसमें कोई बेकार नहीं है fork()
१२:४२ पर १२

13

gzipफ़ाइलों के साथ काम करता है, निर्देशिका नहीं। इसलिए एक निर्देशिका का एक संग्रह बनाने के लिए जिसका आपको उपयोग करने की आवश्यकता है tar(जो एक से अधिक फ़ाइलों में से एक सिंगल टैरोबॉल बनाएगा):

tar cvf myetc.tar /etc

या, gzipped संग्रह के लिए:

tar cvzf myetc.tar.gz /etc

2
यदि किसी के पास "-z" विकल्प के साथ "प्राचीन" प्रणाली है, तो वे कर सकते हैं: cd / ; tar cf - ./etc | gzip -c - > myetc.tar.gz (यदि आप सोच रहे हैं कि मैं क्यों "/" इत्यादि के बजाय "टार" .etc ") करता हूं, तो यह इसलिए है क्योंकि पुराने सिस्टम पर, टार का उपयोग करते समय। xvf, यह आउटपुट को / etc करेगा और इसे अधिलेखित करेगा ... [या आपको उस मामले में "पैक्स" का उपयोग करना होगा])। उलटा कमान, यानी "/ कहीं" के नीचे उस संग्रह को निकालने के लिए: cd /somewhere ; gzip -dc < /the/location/of/myetc.tar.gz | tar xvf -
ओलिवियर दुलैक

1

यदि आपके पास वास्तव में टार उपलब्ध नहीं है, तो आप विकल्प (-r - recursively) का उपयोग करके डायरेक्टरी का बैकअप बनाने के लिए gzip का उपयोग कर सकते हैं, लेकिन शायद यह वैसा नहीं है जैसा आप उम्मीद कर रहे हैं ...

पहले आपको अपनी निर्देशिका को दूसरे नाम पर कॉपी करना होगा, यदि आप मूल निर्देशिका को अछूत रखना चाहते हैं।

#cp -a directory my_gzip_alone_backup

दूसरा, आप निर्देशिका की सभी फ़ाइलों को पुनरावर्ती (-r) पर संपीड़ित करेंगे।

#gzip -r my_gzip_alone_backup

अब मेरे gzip- अकेले-बैकअप के अंदर एक नज़र डालते हैं। आपके पास एक भी फाइल नहीं होगी myfile.gz जैसा कि आप उम्मीद कर रहे हैं, लेकिन बहुत अधिक gziped फाइलें पुनरावर्ती। लेकिन सहानुभूति के कारण ऐसा करना अच्छा नहीं है ...

निर्देशिका को अनकैप करने के लिए एक ही लॉजिक गनज़िप के साथ लगाया जा सकता है।

एक अन्य तरीका यह है कि निर्देशिका को किसी एकल फ़ाइल में परिवर्तित किया जाए, यदि आपके पास ऐसा करने के लिए टार नहीं है, लेकिन इसका dd उपयोग है, जैसे इस पोस्ट में दिखाया गया है: /ubuntu/626634/converting-a -file करने वाली निर्देशिका

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.