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