Howto पाइप: cp | टार | मध्यस्थ फ़ाइलों को बनाने के बिना gzip?


30

क्या कोई मुझे बता सकता है कि क्या पाइप करना संभव है | A और B.tar.gz के बीच कहीं भी एक भौतिक फ़ाइल बनाने के बिना यह?

यही मैं करने की कोशिश कर रहा हूँ:

  1. फ़ाइल ए
  2. A से B का नाम बदलें
  3. टर ब टर
  4. gzip -9 B.tar.gz

उदाहरण के लिए:

cp A B | tar cvf - B | gzip -9 B.tar.gz
gzip  pipe  tar 

आप पाइप करना क्यों पसंद करेंगे cp A B?
— डोर

1
नाम है mv।
— कारोली होर्वाथ

3
कृपया बताएं कि आप कॉपी करना चाहते हैं Aके लिए Bपहले।
— प्रात

जवाबों:


42

मध्यस्थ फ़ाइल बनाने से बचने के लिए निम्नलिखित उदाहरणों का उपयोग किया जा सकता है:

टैर गज़िप के साथ:

tar cf - A | gzip -9 > B.tar.gz

टार के बिना gzip:

gzip -9c A > B.gz

टार बिना gzip:

tar cf B.tar A

नाम बदल रहा है (चलती) Aकरने के लिए Bपहले मेरे लिए कोई मतलब नहीं है। यदि यह इरादा है, तो बस mv A B &&ऊपर दिए गए आदेशों में से किसी एक को डालें और वहां से विनिमय Aकरें B।

टार और गज़िप के साथ उदाहरण:

mv A B && tar cf - B | gzip -9 > B.tar.gz


1
यह सही है और इसे इस तरह चिह्नित किया जाना चाहिए। आपको पाइप किए गए विकल्प के लिए "टार" के बाद "-" शामिल करना होगा अन्यथा आपको "टार: कायर" खाली संग्रह बनाने से मना कर देगा। "
— Adambean

6

यह आपके टार के संस्करण पर निर्भर करता है

यदि आपके पास सदस्य रूपांतरणों का समर्थन करने वाला संस्करण (--transform या --xform) है तो आप बस कर सकते हैं

tar -c --transform=s/A/B/ A | gzip -9 > B.tar.gz

| gzip -9> B.tar.gz से बचा जा सकता है अगर आपका टार -z विकल्प का समर्थन करता है

tar -zcvf B.tar.gz --transform=s/A/B/ A

यदि आपके टार के संस्करण का समर्थन नहीं करता है - तो आप को पहले उदाहरण के लिए फ़ाइल को कॉपी करना होगा

 cp A B && tar -zcvf B.tar.gz B

हालाँकि यदि आप केवल एक फ़ाइल को कंप्रेस कर रहे हैं तो टार पार्ट को एक साथ छोड़ें और बस क्यों न करें

cat A | gzip -9 > B.gz

मैंने cp का उपयोग किया है जैसा कि आपने अपने उदाहरण में किया है लेकिन नाम बदलकर mv है

0

यदि आप cpएक अलग नाम / स्थान के साथ एक प्रतिलिपि बनाने के लिए उपयोग कर रहे हैं , तो अपनी पूर्ण .gzip फ़ाइल बनाते समय इच्छित पूर्ण / अंतिम पाथनाम शामिल करें:

tar -cvf existing.file | gzip -1 > ./newdirectory/newnamed.file.tgz

यह काम नहीं करता है, "टार: कायर" एक खाली संग्रह बनाने से इनकार कर रहा है।
— Adambean

@Adambean शायद आप उपयोग करना चाहते हैं tar -czf - some-folder > some-archive.tar.gz?
— tsauerwein

1
@tsauerwein, हाँ, 14 महीने पहले से नीचे दिए गए उत्तर के लिए मेरा उत्तर देखें ...
— अडम्बियन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.