टार और गज़िप में अंदर और बाहर पाइपिंग


9

मैं कैसे gzip, cpio या टार की तरह एक कमांड से पाइप करने के लिए एक संभाल पाने की कोशिश कर रहा हूँ।

विचाराधीन आदेश ZFS प्रणाली के हैं। मैं Ubuntu Linux 10.04.3 पर ZFS चला रहा हूँ।

जिन आदेशों के साथ मैं काम कर रहा हूं;

To create a snapshot;
zfs snapshot media/mypictures@20070607

To copy the snapshot to a directory;
zfs send media/mypictures@20070607 > ~/backups/20070607

Then I can also pipe into gzip
zfs send media/mypictures@20070607 | gzip > ~/backups/20070607.gz

ये हिस्से मैं समझता हूं।

लेकिन मेरा पहला सवाल यह है कि मैं टार + गज़िप में पाइप करने के लिए क्या करूंगा?

इस?

zfs send media/mypictures@20070607 | tar czvf > ~/backups/20070607.tar.gz

और मेरा दूसरा सवाल यह है कि मुझे टारबॉल या गज़िप से डेटा कैसे मिलेगा?

मुझे इस्तेमाल करना है zfs recieve media/mypictures@20070607 < ~/backups/20070607

तो यह सिर्फ अगर मैं टार का उपयोग कर रहा था यह होगा?

zfs recieve media/mypictures@20070607 | tar xzvf < ~/backups/20070607.tar.gz

कोई उपाय?

जवाबों:


9

tarकमांड लाइन तर्क के रूप में फ़ाइलनामों की एक सूची दी जाने की उम्मीद है। अब तक मुझे पता है, इसका इस्तेमाल एक अनाम पाइपलाइन (इसे फ़ाइल नाम और फ़ाइल-मेटाडेटा के रूप में क्या संग्रहित किया जाएगा) पढ़ने के लिए नहीं किया जा सकता है?

$ echo aaa | tar cv > f.tar
tar: Cowardly refusing to create an empty archive
Try `tar --help' for more information.

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

अन्यथा आपको पहले किसी फाइल में डेटा लिखना होगा, फाइल को टारगेट करना होगा, फिर फाइल को डिलीट करना होगा।


वास्तव में? हालांकि मैं टार संपीड़न का सिर्फ एक और रूप था। तो टार और बस gzip छोड़ें?
ianc1215

3
हां, बस इस्तेमाल करेंzfs send media/mypictures@20070607 | gzip -c > ~/backups/20070607.gz
RedGrittyBrick

2
जब तक आप -fविकल्प निर्दिष्ट नहीं करते हैं, तब तक टार नामों की सूची की उम्मीद नहीं करते हैं (टार भी f"-" के बिना स्वीकार करता है )।
15:25 बजे drevicko

1
@drevicko: प्रश्न का संदर्भ एक टार संग्रह बना रहा है। मेरे द्वारा संग्रहित फाइलों की सूची लिखित संग्रह में शामिल की जाने वाली फाइलों (और / या निर्देशिकाओं) की सूची है। उदाहरण के लिए: cd /etc; TAPE=/tmp/rgb.tar tar c hosts passwdजहाँ फाइलों की सूची हैhosts passwd
RedGrittyBrick

1
@RedGrittyBrick लेकिन प्रश्न का संदर्भ पाइप से टार है, अर्थात: फाइलों की कोई सूची नहीं। यह कहना है कि टार फाइलों की सूची सच नहीं है। समस्या यह है कि यह एक (एकल) आउटपुट फ़ाइल नाम की उम्मीद करता है जब ओपी निर्दिष्ट करता है f, और उसने इसे प्रदान नहीं किया।
drevicko 17

9

-fविकल्प के लिए एक फ़ाइल को निर्दिष्ट करता है, और उत्पादन stdout को जाता है। तो, या तो पुनर्निर्देशन छोड़ें:

zfs send media/mypictures@20070607 | tar czvf ~/backups/20070607.tar.gz

या fविकल्प छोड़ें :

zfs send media/mypictures@20070607 | tar czv > ~/backups/20070607.tar.gz

इसी तरह से असत्य के साथ।

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