मुझे कमांड gzip के साथ एक संग्रह बनाना है (टार नहीं - यह आवश्यक है) और संग्रह में किसी अन्य निर्देशिका से फ़ाइलें होनी चाहिए - उदाहरण के लिए, / etc। मैंने कमांड का उपयोग करने की कोशिश की
gzip myetc.gz /etc
लेकिन यह काम नहीं किया।
मुझे कमांड gzip के साथ एक संग्रह बनाना है (टार नहीं - यह आवश्यक है) और संग्रह में किसी अन्य निर्देशिका से फ़ाइलें होनी चाहिए - उदाहरण के लिए, / etc। मैंने कमांड का उपयोग करने की कोशिश की
gzip myetc.gz /etc
लेकिन यह काम नहीं किया।
जवाबों:
Gzip केवल एकल फ़ाइल या स्ट्रीम के साथ काम करता है - gzip पर पाइप किया गया डेटा। तो आपको सबसे पहले एक फाइल जनरेट करनी होगी, जैसे कि टार के साथ, और फिर आप उसे गज़िप कर सकते हैं। अन्य विकल्प सभी व्यक्तिगत फ़ाइलों को gzip करना है, और फिर उसे एक फ़ाइल में टारगेट करना है।
ये दोनों उपाय बेवकूफ हैं और इनका उपयोग नहीं किया जाना चाहिए। आपको अंतर्निहित संपीड़न विकल्प के साथ टार का उपयोग करना चाहिए और यह सब एक कमांड में करना चाहिए।
.tar.gz
...
cat filename | grep blah
से बेवकूफ है जो बेवकूफ है। यह इष्टतम से बहुत कम है क्योंकि यह एक बड़े अंतरिम स्थान का उपयोग करेगा। मुझे नहीं पता कि मैं इसे बेवक़ूफ़ कहूँ, जितना कि अक्खड़, अडॉप्टिमल, और आमतौर पर बदसूरत। खैर, बेवकूफ भी काम करता है।
fork()
।
gzip
फ़ाइलों के साथ काम करता है, निर्देशिका नहीं। इसलिए एक निर्देशिका का एक संग्रह बनाने के लिए जिसका आपको उपयोग करने की आवश्यकता है tar
(जो एक से अधिक फ़ाइलों में से एक सिंगल टैरोबॉल बनाएगा):
tar cvf myetc.tar /etc
या, gzipped संग्रह के लिए:
tar cvzf myetc.tar.gz /etc
cd / ; tar cf - ./etc | gzip -c - > myetc.tar.gz
(यदि आप सोच रहे हैं कि मैं क्यों "/" इत्यादि के बजाय "टार" .etc ") करता हूं, तो यह इसलिए है क्योंकि पुराने सिस्टम पर, टार का उपयोग करते समय। xvf, यह आउटपुट को / etc करेगा और इसे अधिलेखित करेगा ... [या आपको उस मामले में "पैक्स" का उपयोग करना होगा])। उलटा कमान, यानी "/ कहीं" के नीचे उस संग्रह को निकालने के लिए: cd /somewhere ; gzip -dc < /the/location/of/myetc.tar.gz | tar xvf -
यदि आपके पास वास्तव में टार उपलब्ध नहीं है, तो आप विकल्प (-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 करने वाली निर्देशिका
gzip
नहीं हैzip
। वे अलग-अलग उपकरण हैं जो अलग-अलग काम करते हैं।