Bsdtar और GNU टार के बीच अंतर क्या हैं?


46

मैंने हमेशा जीएनयू का उपयोग किया है tar। हालाँकि, सभी GNU / Linux वितरण जिन्हें मैंने bsdtarउनके रिपॉजिटरी में जहाज देखा है। मैं भी इसे कुछ में डिफ़ॉल्ट रूप से, IIRC द्वारा स्थापित देखा है। मुझे पता है कि आर्क जीएनयू / लिनक्स को इसका एक भाग के रूप में आवश्यकता होती है basedevel(हो सकता है base, लेकिन मुझे यकीन नहीं है), जैसा कि मैंने इसे PKGBUILDs में देखा है।

आप bsdtarGNU के बजाय इसका उपयोग क्यों करना चाहेंगे tar? क्या फायदे हैं?

ध्यान दें कि मैं वह व्यक्ति हूं जिसने पूछा था कि बीएसडी और जीएनयू / लिनक्स यूजरलैंड के बीच मुख्य अंतर क्या हैं?


जवाबों:


29

उबंटू bsdtarवास्तव में टार कार्यान्वयन के साथ बंडल है libarchive; और इसे शास्त्रीय से अलग किया जाना चाहिए bsdtar। कुछ बीएसडी वेरिएंट libarchiveअपने टार कार्यान्वयन के लिए उपयोग करते हैं , जैसे FreeBSD।

GNUtarअन्य टार वेरिएंट और स्वत: संपीड़न का पता लगाने का समर्थन करता है ।

जैसा कि दृश्यता ने उबंटू से धुंधलेपन को चिपकाया है, वहां कुछ चीजें हैं जो निम्नलिखित हैं libarchive:

  1. libarchiveएक पुस्तकालय की परिभाषा है, और दोनों शास्त्रीय bsdtarऔर GNUtarइस तरह से अलग है ।
  2. libarchive कुछ पुराने अस्पष्ट GNU टार भिन्नताओं को नहीं पढ़ सकते हैं, सबसे उल्लेखनीय कुछ हेडर के बेस 64 में एन्कोडिंग था, ताकि टार फ़ाइल 7-बिट स्वच्छ ASCII होगी (यह 1.13.6-1.13.11 के लिए मामला था और 1.12.12 में बदल गया था , यह कोड केवल आधिकारिक तौर पर 2 सप्ताह के लिए टार में था)
  3. libarchiveकी bsdtarगैर टार फ़ाइलों को पढ़ने जाएगा (जैसे ज़िप, ISO9660, सीपीआईओ), लेकिन शास्त्रीय bsdtar नहीं होगा।

अब जब हम libarchiveरास्ते से बाहर हो गए हैं, तो यह ज्यादातर शास्त्रीय में समर्थित है bsdtar

आप खुद को यहाँ देख सकते हैं:

अपने मूल प्रश्न में, आपने पूछा कि शास्त्रीय के क्या फायदे हैं bsdtar, और मुझे यकीन नहीं है कि वास्तव में कोई भी हैं। केवल समय वास्तव में मायने रखता है यदि आप शेल स्क्रिप्ट लिखने की कोशिश कर रहे हैं जो सभी प्रणालियों पर काम करने की आवश्यकता है; आपको यह सुनिश्चित करने की आवश्यकता है कि आप जो पास करते हैं tarवह वास्तव में सभी प्रकारों में मान्य है।

GNUtar, libarchiveकी bsdtar, शास्त्रीय bsdtar, starऔर BusyBoxकी tarनिश्चित रूप से टार कार्यान्वयन है कि आप समय के सबसे में चलाने जाएगा रहे हैं, लेकिन मुझे विश्वास है वहाँ दूसरों को बाहर वहाँ (उदाहरण के लिए जल्दी QNX) कर रहे हैं रहा हूँ। libarchive/ GNUtar/ starसबसे अधिक फीचर-पैक हैं, लेकिन कई मायनों में वे मूल मानकों (संभवतः बेहतर के लिए) से लंबे समय से भटक गए हैं।


15

BSDTAR बनाम TAR प्लस और भी बहुत कुछ

यहाँ एक फायदा है !!

मैं यहां 5 विषयों में जा रहा हूं (और विषय से बाहर जाने का रास्ता तय करूंगा, लेकिन यह कवर करेगा कि आप क्या चाहते हैं):

  1. bsdtar बनाम टार
  2. विरल फ़ाइलें बनाम नहीं
  3. btrfs के साथ मोटी और पतली फाइलें / लंड
  4. मोटी और पतली फ़ाइलें / ltrs बिना btrfs के
  5. मोटी और पतली के बीच अंतर करें और यह कैसे सिर्फ लंड पर लागू नहीं होता है

bsdtar विरल फाइलों को बेहतर और नियमित टार को हैंडल करता है

  • bsdtar सभी शून्य ले जाएगा और बस मेटाडेटा उन्हें ऊपर ले जाएगा
  • टार वास्तव में हर शून्य की प्रक्रिया करता है

* उदाहरण: कल्पना करें कि 20 tb स्पार्सेफाइल (biglun) में 10 megs डेटा के साथ 20 tb स्पार्स फाइल (जिसे biglun कहा जाता है) ... अब चूंकि यह स्पार्स फाइल है, इसलिए यह ड्राइव पर केवल 10 megs लेगी।

विरल फ़ाइल कैसे बनाएं:

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

* विषय पर वापस:

  • Biglun को टारगेट करने से टारगेट सभी 10 मेग्स से होकर गुजरेगा, साथ ही ~ 20tb से भी बदतर ज़ीरो लून में फैल जाएगा ... इसमें मुझे कुछ समय लगेगा और टार फ़ाइल बहुत बड़ी हो जाएगी। इसके अलावा - इसे निकालने - मैं एक विरल फ़ाइल के टार फ़ाइल का एक अर्क कभी नहीं किया है, लेकिन यह सुंदर नहीं हो सकता है; मैं यहां गलत हो सकता हूं।

  • बिग्लून को bsdtarring करने से डेटा के 10 megs की प्रक्रिया होगी, और ~ 20tb के शून्य के लिए छोटे मेटाडेटा बनाते हैं।

फायदा? अच्छी तरह से उनमें से कई; मैंने अभी कुछ ऊपर लिखा है।

यह rsync बनाम cp के समान है

  • इसके अलावा, यदि आप एक विशाल विरल फ़ाइल rsync करते हैं, तो यह टार की तरह व्यवहार करेगा
  • यदि आप एक विशाल फ़ाइल cp करते हैं, तो यह स्वचालित रूप से bsdtar की तरह व्यवहार करेगा (आप शून्य से ऊपर जाने के लिए cp के व्यवहार को बदल सकते हैं, या शून्य पर नहीं जा सकते)

व्यक्तिगत रूप से, मुझे पतले लंड की तरह विरल फ़ाइलों की कल्पना करना पसंद है, और मोटी लंड जैसी नियमित फ़ाइलों ...

अगला विषय BTRFS पतले बनाम मोटे लंड हैं:

  • BTRFS जैसे फाइल सिस्टम के साथ , पतले लैंस विरल फाइलें हैं (इसे ट्रंकट के साथ बनाएं, जैसे विकी डॉक्टर में)।

     truncate -s <size in kilobytes> filename
    

    टिप: bsdtar के साथ बैकअप , cp के साथ कॉपी करें

  • मोटी luns + C विशेषता (+ C) के साथ नियमित रूप से फ़ाइलें हैं ताकि यह इसे कोई नहीं बनाता है गाय, लिखने पर कॉपी करें, ताकि सभी लिखता है कि यह अनिवार्य रूप से जहां इसे आवंटित किया गया है, उसके चारों ओर चिपके रहते हैं, और ओवरराइट होने पर उस फ़ाइल के लिए कोई नया लेखन नहीं होता है। या हटाता है - शोध गाय और BTRFS )। फ़ाइल को ट्रंकट के साथ बनाने के बजाय, इसे "फैलोकेट -l" के साथ बनाएं

    fallocate -l <size in kilobytes> filename
    chattr +C filename
    

    टिप: bsdtar या टार के साथ बैकअप, rsync या cp के साथ कॉपी करें

अगला विषय EXT पतले बनाम मोटे लंड है:

  • पतले लंड जो विरल हैं

    truncate -s <size in kilobytes> filename
    

    टिप: bsdtar के साथ बैकअप , cp के साथ कॉपी करें

  • मोटी लून + सी विशेषता (+ C) के साथ नियमित रूप से फाइल होती है ताकि यह इसे कोई भी नहीं बनाता है। गाय, लेखन पर कॉपी करें, ताकि सभी लिखता है कि जहां इसके आवंटित किया गया है, उसके आसपास अनिवार्य रूप से छड़ी हो और ओवरराइट होने पर उस फ़ाइल के लिए कोई नया लेखन न हो। या हटाता है - शोध गाय और BTRFS )। फ़ाइल को ट्रंकट के साथ बनाने के बजाय, इसे "फैलोकेट -l" के साथ बनाएं

    touch filename
    fallocate -l <size in kilobytes> filename
    

    टिप: bsdtar या टार के साथ बैकअप, rsync या cp के साथ कॉपी करें

एक मोटी बनाम पतली फ़ाइल

  • मोटे लैंस / फाइलें, उनके डेटा को आवंटित आकार से 0 तक भरें, मेटाडेटा दिखावा करता है कि 0 कहां हैं। जैसे ही आप डेटा भरते हैं, डेटा भर जाता है
  • मोटी चंद्र / फाइलें: 0 या जो कुछ भी (आलसी शून्य या उत्सुक शून्य) के साथ शुरू में अपना डेटा भरें - ये सेट आरक्षण (या ZFS के रूप में कॉल रिफ्रेशमेंट)

VMWARE आर्टिकल यहां मोटे लंड / फाइलों के साथ आलसी बनाम उत्सुक शून्य का वर्णन करता है: https://communities.vmware.com/message/2199576

टिप

याद रखें कि मोटा और पतला सिर्फ लंड पर लागू नहीं होता है, यह फाइल, zfs फाइल सिस्टम (शेयर / वॉल्यूम / luns) पर भी हो सकता है, और मुझे यकीन है कि अन्य चीजें (बस zfs को देखें)।


1
अच्छा और संपूर्ण। साइट पर आपका स्वागत है ...
eyoung100

1
- किसी भी टार के साथ विरल: बस सबसे टार कार्यान्वयन के लिए -S, वे सभी एक लंबे समय के लिए समर्थन किया है। - rsync के साथ विरल: फिर से, पास --sparse, यह काम करता है। किसी भी विरल पहचान का उपयोग करने के लिए नकारात्मक पक्ष यह है कि उपकरण को वास्तव में ब्लॉक को अधिक पढ़ना है, जो कि बहुत सारे सीपीयू (जीरो / नॉन-जीरो रन को वैकल्पिक करने के मामलों में) पेश कर सकता है।
रॉबट 2

Bsdtar का उपयोग करना अभी भी बेहतर है, भले ही गन्न टार विरल ध्वज का समर्थन करता है, क्योंकि bsdtar को स्पार्स छेद को छोड़ना जानता है, उन्हें संसाधित किए बिना। उदाहरण के लिए, यदि आपके पास केवल 1k डेटा के साथ 1 टीबी विरल फ़ाइल है, तो bsdtar 1k को संसाधित करेगा । डेटा ग्नू टार कार्रवाई करेंगे 1TB।
moveaway00

13

उबंटू पैकेज विवरण ( http://packages.ubuntu.com/de/lucid/bsdtar ) से

"Bsdtar कार्यक्रम में पिछले टार कार्यान्वयन पर कई फायदे हैं:

  • लाइब्रेरी। चूंकि मुख्य कार्यक्षमता एक पुस्तकालय में है, इसलिए इसका उपयोग अन्य उपकरण, जैसे कि pkg_add द्वारा किया जा सकता है।
  • स्वचालित प्रारूप का पता लगाना। जब अभिलेखागार को पढ़ता है तो लिबररिक कंप्रेशन (कोई नहीं / gzip / bzip2) और फॉर्मेट (पुराना टार, ustar, gnutar, pax, cpio, iso9660, zip) का पता लगाता है। यह किसी भी डेटा स्रोत के लिए ऐसा करता है।
  • पैक्स इंटरचेंज फॉर्मेट सपोर्ट। यह पुराने "ustar" टार प्रारूप में एक POSIX / SUSv3 एक्सटेंशन है जो प्रत्येक प्रविष्टि में मनमाने ढंग से विस्तारित विशेषताओं को जोड़ता है। सब कुछ जो GNU टार प्रारूप करता है, केवल बेहतर होता है।
  • हैंडल फ़्लैग फ़ाइल, ACLs, मनमाने तरीके से नाम आदि। पैक्स इंटरचेंज प्रारूप आसानी से एक्स्टेंसिबल तकनीक का उपयोग करके कुंजी / मूल्य विशेषताओं का समर्थन करता है। मनमाना पथनाम, समूह नाम, उपयोगकर्ता नाम, फ़ाइल आकार POSIX मानक का हिस्सा हैं; फ़ाइल फ़्लैग, ACL, और मनमाने डिवाइस नंबर के लिए समर्थन के साथ libarchive इसका विस्तार करता है।
  • GNU टार सपोर्ट। लिबेरक्टिव ज्यादातर GNU टार अभिलेखागार पढ़ता है। अगर मांग है, तो इसमें और सुधार किया जा सकता है। ”

1

निम्नलिखित पढ़ने पर आधारित है, अनुभव नहीं - मैं अभी Freebsd के साथ शुरू कर रहा हूं इसलिए मुझे इसके साथ लगभग कोई वास्तविक अनुभव नहीं है (मैं ज्यादातर लिनक्स से आ रहा हूं)। मैं माफी माँगता हूँ (और विनम्रतापूर्वक सुधार) अगर मैं कुछ महत्वपूर्ण याद किया है और मैं यहाँ क्या कहना है बकवास है ...

मैनुअल पृष्ठों के मेरे पढ़ने से (हाल ही में सबसे ऊपर जो एक http://www.freebsd.org/cgi/man.cgi?query=tar&sektion=1 से ऊपर आता है ) फ्रीबर्ड टार में -d, -diff का अभाव है , --compor) क्षमता है। यह आश्चर्य की बात नहीं है, क्योंकि Freebsd डंप / रिस्टोर के लेखकों ने ऐसा कुछ भी नहीं दिया है।

मुझे निश्चित रूप से नहीं पता कि क्या ग्नू टार सभी यूएफएस मेटाडेटा को शामिल करेगा क्योंकि फ्रीबस टार को कहा जाता है, और यह एक महत्वपूर्ण मुद्दा है। लेकिन मेरे स्वाद के लिए, मैं तब तक डंप पर विचार नहीं कर सकता जब तक कि मैंने आउटपुट फ़ाइल का एमडी 5 योग संग्रहीत नहीं किया, और जब मैंने अभी-अभी डंप किए गए डेटा के खिलाफ डंप फ़ाइल की तुलना की है। विभिन्न समस्याएं डंप किए गए डेटा को डिस्क पर मौजूद होने से अलग कर सकती हैं। (न केवल फ़ाइल परिवर्तन, बल्कि डिस्क त्रुटियां, मेमोरी त्रुटियां, मशीन दोष और इतने पर। ये सभी वास्तव में मेरे साथ हुए हैं।)

मेरी अपनी राय में, यह ग्नू टार को एकमात्र विकल्प बनाता है जो मैंने अब तक स्टॉक फ्रीबस्ड सिस्टम पर सही बैकअप बनाने के लिए पाया है।

मैं प्रिय अन्यथा सीखने के लिए प्यार करता हूँ, FWIW। मैं कम से कम विभाजन क्लोनिंग और हार्ड-रिकवरी बैकअप के लिए मूल उपयोगिताओं का उपयोग करना पसंद करूंगा। लेकिन अगर कोई एक डंप की शुद्धता को सत्यापित नहीं कर सकता है तो मैं उसे बनाने की जहमत नहीं उठाता।


1
  • bsdtar @archiveसिंटैक्स का उपयोग करके अन्य अभिलेखागार से आने वाले सदस्यों को पढ़ और टार कर सकता है

  • GNU टार में --deleteविकल्प है - हालांकि हाल ही में, मैंने पाया कि यह संग्रह को दूषित कर सकता है।

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