@Lekensteyn उत्तर के अलावा, मैं यह जोड़ना चाहूंगा कि यह व्यवहार Do एक चीज़ पर आधारित है और इसे अच्छी तरह से दर्शन करें - tar
प्रोग्राम जानता है कि एक ही स्ट्रीम में ( .tar
एक्सटेंशन के साथ ) एक से अधिक फ़ाइलों को कैसे रखा जाए , gzip
कैसे संपीड़ित करें एकल फ़ाइल ( .gz
एक्सटेंशन जोड़ने ) *। उन टूल को मिलाकर आप एक कमांड बना सकते हैं जो कई फाइलों को एक ही .tag.gz
फाइल में कम्प्रेस करता है ।
यह दृष्टिकोण बहुत लचीला है - आप सभी प्रकार की चीजों को करने के लिए कुछ मानक यूनिक्स कमांड को जोड़ सकते हैं। उदाहरण के लिए, यदि आप फ़ाइलों को संपीड़ित करने के लिए एक बेहतर प्रोग्राम लिखते हैं, तो आपको फ़ाइलों tar
को बनाने में सक्षम करने के लिए इसे संशोधित करने की आवश्यकता नहीं है .tar.mymegazip
- इसके बजाय, आप बस tar
अपने कंप्रेसर में आउटपुट करते हैं।
इसी तरह, tar
SSH के बारे में कुछ भी नहीं जानता है, लेकिन कमांडों को मिलाकर आप एक स्क्रिप्ट बना सकते हैं, जो फाइलों को संग्रहित करती है, उन्हें SSH के माध्यम से एक दूरस्थ मशीन पर अपलोड करती है और उन्हें वहां संग्रहित करती है।
इसकी तुलना zip
कमांड से करें, जो यूनिक्स में उत्पन्न नहीं हुई थी - इसमें पूरी निर्देशिकाओं को संपीड़ित करने, फ़ाइलों को एन्क्रिप्ट करने, संग्रह को छोटे ज़िपफाइल्स में विभाजित करने आदि के लिए अंतर्निहित टूल हैं।
(फुटनोट) - हाँ, tar
स्वयं का उपयोग कर -z
और प्राप्त करने के लिए gzip या bzip फ़ाइलों में सक्षम है-j
स्विच , उन्हें सुविधा के लिए जोड़ा गया था, और जीएनयू टार वास्तव में स्पैनिंग gzip
या bzip2
एक नई प्रक्रिया के रूप में है।
tar c dir/ | gzip > dir.tar.gz
औरtar czf dir.tar.gz dir/
कमांड एक ही काम करते हैं। एक उदाहरण जहांtar
SSH और के साथ संयुक्त हैtar
(फिर से):tar cz Documents/ | ssh user@host 'tar xz
(rsync बराबर होगा:rsync -a Documents user@host:
)