क्या संग्रह में संग्रहीत किसी फ़ाइल को कुशलतापूर्वक प्राप्त करने के लिए वहाँ एक स्मार्ट टार या cpio है?


24

मैं tarबहुत बड़ी (बहु-जीबी) bz2फ़ाइलों के एक समूह को संग्रहीत करने के लिए उपयोग कर रहा हूं ।

अगर मैं tar -tf file.tarसंग्रह के भीतर फाइलों को सूचीबद्ध करने के लिए उपयोग करता हूं , तो इसे पूरा करने में बहुत लंबा समय लगता है (~ 10-15 मिनट)।

इसी तरह, cpio -t < file.cpioपूरा होने में बस कुछ ही समय लगता है, साथ ही कुछ सेकंड्स या माइनस भी।

तदनुसार, एक संग्रह से फ़ाइल पुनर्प्राप्त करना ( tar -xf file.tar myFileOfInterest.bz2उदाहरण के लिए) उतना ही धीमा है।

क्या कोई अभिलेखीय विधि है जो संग्रह के साथ आसानी से उपलब्ध "कैटलॉग" को रखती है, ताकि संग्रह के भीतर एक व्यक्तिगत फ़ाइल को जल्दी से पुनर्प्राप्त किया जा सके?

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

वहाँ एक उपकरण (या करने के लिए तर्क है tarया cpio) है कि संग्रह के भीतर एक फ़ाइल के कुशल पुनः प्राप्ति की अनुमति देता है?

जवाबों:


15

टार (और cpio और afio और pax और इसी तरह के प्रोग्राम) स्ट्रीम-ओरिएंटेड फॉर्मेट हैं - इनका उद्देश्य किसी टेप को सीधे स्ट्रीम करना या दूसरी प्रक्रिया में पाइप करना है। हालांकि, सिद्धांत रूप में, फ़ाइल / स्ट्रीम के अंत में एक इंडेक्स जोड़ना संभव होगा, मुझे किसी भी संस्करण का पता नहीं है जो करता है (हालांकि यह एक उपयोगी वृद्धि होगी)

यह आपके मौजूदा टार या cpio अभिलेखागार के साथ मदद नहीं करेगा, लेकिन एक और टूल है, dar ("डिस्क आर्काइव"), जो आर्काइव फाइल बनाता है जिसमें इस तरह का इंडेक्स होता है और यह आपको आर्काइव के भीतर अलग-अलग फाइलों तक सीधे पहुंच प्रदान कर सकता है ।

अगर डार को आपके यूनिक्स / लिनक्स-डिस्ट के साथ शामिल नहीं किया गया है, तो आप इसे यहां पा सकते हैं:

http://dar.linux.free.fr/


वहाँ मानक उत्पादन के लिए एक निष्कर्षण पाइप के लिए एक रास्ता है? ऐसा लगता है कि मानक इनपुट से एक संग्रह बनाने का एक तरीका है, लेकिन मानक आउटपुट को निकालने के लिए एक तरीका (कम से कम सीधे नहीं)। यदि यह करने का कोई तरीका है तो यह प्रलेखन से स्पष्ट नहीं है। क्या आप जानते हैं कि यह कैसे पूरा हो सकता है?
एलेक्स रेनॉल्ड्स

1
नहीं, पता नहीं। मैं वास्तव में स्वयं डार का उपयोग नहीं करता ... मुझे पता है कि यह मौजूद है। मैं टार के साथ काफी खुश हूं, और बड़ी टैर फाइलों के लिए सामग्री को सूचीबद्ध करने वाली टेक्स्ट फाइलें बनाने के लिए तैयार हूं, जिन्हें मैं बाद में खोजना चाहता हूं। आप इसे दो बार v विकल्प का उपयोग करके टार आर्काइव बनाने के रूप में कर सकते हैं (उदाहरण के लिए "tar cvvjf /tmp/foo.tar.bz2 / path / to / backup> /tmp/foo.txt"
cas

10

आप ऐसे अभिलेखागार के लिए स्क्वाश का उपयोग कर सकते हैं। यह है

  • फ़्यूज़ ड्राइवर का उपयोग करके एक्सेस किया जा सकता है (हालाँकि एक पारंपरिक इंटरफ़ेस मौजूद है)
  • संपीड़ित (बड़ा ब्लॉक आकार, अधिक कुशल)
  • लिनक्स कर्नेल में शामिल
  • UID / GID और निर्माण समय संग्रहीत करता है
  • एंडियन-जागरूक, इसलिए काफी पोर्टेबल

एकमात्र दोष मुझे पता है कि यह केवल पढ़ने के लिए है।

http://squashfs.sourceforge.net/ http://www.tldp.org/HOWTO/SquashFS-HOWTO/whatis.html


8

हालांकि यह एक इंडेक्स को स्टोर नहीं करता है, लेकिन इसे starतेजी से होने के लिए तैयार किया गया है tar। इसके अलावा यह लंबे फ़ाइल नाम का समर्थन करता है और फ़ाइल विशेषताओं के लिए बेहतर समर्थन है।

जैसा कि मुझे यकीन है कि आप जानते हैं, फाइल को डिकम्प्रेस करने में समय लगता है और संभवतः एक इंडेक्स होने पर भी निष्कर्षण की गति में एक कारक होगा।

संपादित करें: आप भी एक नज़र रखना चाह सकते हैं xar। इसमें एक XML हेडर है जिसमें आर्काइव में फाइलों के बारे में जानकारी है।

संदर्भित पृष्ठ से:

Xar का XML हेडर इसे आर्काइव के भीतर मौजूद फाइलों के बारे में मनमाना मेटाडेटा रखने की अनुमति देता है। मानक यूनिक्स फ़ाइल मेटाडेटा के अलावा फ़ाइल का आकार और यह संशोधन और निर्माण समय है, xar ext2fs और hfs फ़ाइल बिट्स, यूनिक्स झंडे, विस्तारित विशेषताओं के संदर्भ, मैक ओएस एक्स खोजक जानकारी, मैक ओएस जैसी जानकारी संग्रहीत कर सकता है। एक्स संसाधन कांटे, और फ़ाइल डेटा की हैश।


एक उपयोगी साउंडिंग टूल के लिए मुझे सचेत करने के लिए +1 जो मैंने पहले कभी नहीं सुना था।
कैस

लिंक starनीचे है ......
पचेरियर

5

Thorbjørn Ravn Anderser सही हैं। जीएनयू टार डिफ़ॉल्ट रूप से "खोजी" अभिलेखागार बनाता है। लेकिन यह उस जानकारी का उपयोग नहीं करता है जब यह इन अभिलेखों को पढ़ता है अगर -n विकल्प नहीं दिया जाता है। एक विकल्प के साथ, मैंने अभी 7GB फ़ाइल को 300GB संग्रह से 7GB फ़ाइल को पढ़ने / लिखने के लिए आवश्यक निकाला। बिना एन के इसमें घंटे से अधिक समय लगा और इसका कोई परिणाम नहीं निकला।

मुझे यकीन नहीं है कि संपीड़न इसको कैसे प्रभावित करता है। मेरा संग्रह संकुचित नहीं था। संपीड़ित अभिलेखागार "खोज योग्य" नहीं है क्योंकि वर्तमान (1.26) GNU टार बाहरी भार को बाह्य प्रोग्राम में संपीड़न करता है।


टार मैन पेज के अनुसार man7.org/linux/man-pages/man1/tar.1.html , GNU टार डिफॉल्ट रूप से लिखने के दौरान उपयोग करने योग्य प्रारूप का उपयोग करेगा, और यदि संग्रह प्राप्य है, तो इसे पढ़ने के लिए उपयोग करेगा (के लिए) सूची या अर्क)। यदि आप GNU टार का उपयोग कर रहे हैं और अभी भी समस्या को देखते हुए, आपको GNU के साथ बग रिपोर्ट दर्ज करनी चाहिए।
ब्रायन मिंटन

7
अगर मैं मैनुअल को सही ढंग से पढ़ता हूं, तो यह कभी नहीं कहता कि इसमें किसी भी प्रकार का सूचकांक है और यह फ़ाइल नाम दिए गए संग्रह के भीतर किसी भी फ़ाइल पर कूद सकता है। --seek का अर्थ है कि अंतर्निहित मीडिया खोजी है, ताकि जब वह शुरुआत से पढ़ता है, तो वह फ़ाइल सामग्री पढ़ना छोड़ सकता है, लेकिन उसे अभी भी शुरुआत से प्रवेश शीर्षलेख पढ़ना होगा। उस ने कहा, यदि आपके पास 1M फ़ाइलों के साथ एक संग्रह है, और आप पिछले एक को निकालने की कोशिश करते हैं, तो -नो-तलाश के साथ, आपको सभी फ़ाइलों की सामग्री को पढ़ने की आवश्यकता है; --seek के साथ, आपको केवल 1M हेडर, प्रत्येक फ़ाइल के लिए एक पढ़ना होगा, लेकिन यह अभी भी सुपर स्लो है।
icando

4

एकमात्र संग्रह प्रारूप, जिसके बारे में मुझे पता है कि एक इंडेक्स स्टोर है, क्योंकि मुझे एक से अधिक बार भ्रष्ट इंडेक्स का पुनर्निर्माण करना पड़ा है।


2

यह अनुक्रमणित नहीं करता है कि मुझे पता है, लेकिन मैं बड़ी फ़ाइलों के साथ डंप और पुनर्स्थापना का उपयोग करता हूं, और यादृच्छिक फ़ाइलों का चयन करने के लिए इंटरैक्टिव मोड में पुनर्स्थापना वृक्ष को नेविगेट करना बहुत तेज़ है।


2

यदि आपके पास p7zip-fullपैकेज तक पहुंच है, तो आप 7z (7zip) संग्रह / संपीड़न प्रारूप का उपयोग कर सकते हैं ।

उबंटू पर आप इसे स्थापित करने के लिए इस कमांड का उपयोग कर सकते हैं:

$ sudo apt-get install p7zip-full

एक संग्रह बनाने के लिए, जिसका आप उपयोग कर सकते हैं 7z a <archive_name> <file_or_directory>और यदि आप फ़ाइलों को संपीड़ित नहीं करना चाहते हैं और उन्हें "स्टोर" करना चाहते हैं, तो आप -mx0विकल्प का उपयोग कर सकते हैं :

$ 7z a -mx0 myarchive.7z myfile.txt

Creating archive myarchive.7z

तब आप फ़ाइलों का उपयोग करके निकाल सकते हैं 7z e:

$ 7z e myarchive.7z

Processing archive: myarchive.7z
Extracting  myfile.txt

या आप उस आर्काइव के सूचकांक को सूचीबद्ध कर सकते हैं 7z lजिसके साथ खोजना आसान है grep:

$ 7z l myarchive.7z | grep

2014-07-08 12:13:39 ....A            0            0  myfile.txt

यह tअखंडता का परीक्षण uकरने, संग्रह में एक फ़ाइल जोड़ने / अपडेट करने और dएक फ़ाइल को हटाने का विकल्प भी है ।

महत्वपूर्ण नोट
करो नहीं linux फाइल सिस्टम बैकअप के लिए 7zip स्वरूप का उपयोग के रूप में यह मालिक और निहित फ़ाइलों के समूह की दुकान नहीं है।


लिनक्स के लिए यह एक टार फाइल 7zip के लिए ठीक रहेगा।
थोरबजोरन रावन एंडरसन

1

मुझे विश्वास है कि GNU टार आप जो चाहते हैं वह करने में सक्षम है, लेकिन मैं ऐसा कहने वाले निश्चित संसाधन का पता नहीं लगा सकता।

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


जिप फाइलें बड़ी हो सकती हैं ।
पचेरियर

1
अगर मैं मैनुअल को सही ढंग से पढ़ता हूं, तो यह कभी नहीं कहता कि इसमें किसी भी प्रकार का सूचकांक है और यह फ़ाइल नाम दिए गए संग्रह के भीतर किसी भी फ़ाइल पर कूद सकता है। --seek का अर्थ है कि अंतर्निहित मीडिया खोजी है, ताकि जब वह शुरुआत से पढ़ता है, तो वह फ़ाइल सामग्री पढ़ना छोड़ सकता है, लेकिन उसे अभी भी शुरुआत से प्रवेश शीर्षलेख पढ़ना होगा। उस ने कहा, यदि आपके पास 1M फ़ाइलों के साथ एक संग्रह है, और आप पिछले एक को निकालने की कोशिश करते हैं, तो -नो-तलाश के साथ, आपको सभी फ़ाइलों की सामग्री को पढ़ने की आवश्यकता है; --seek के साथ, आपको केवल 1M हेडर, प्रत्येक फ़ाइल के लिए एक पढ़ना होगा, लेकिन यह अभी भी सुपर स्लो है।
icando

2
@Pacerier मेरी समझ में ZIP64 प्रारूप बहुत बड़ी फ़ाइलों के लिए अनुमति देता है, लेकिन मूल ज़िप प्रारूप नहीं है।
थोरबजोरन रावन एंडरसन

@ ThorbjørnRavnAndersen, एक एकल 4 जीबी फ़ाइल बड़ी दोस्त है।
पचेरियर

3
@Pacerier 4GB डीवीडी आईएसओ के लगभग बीस साल पहले के दृश्य पर आने के बाद से बड़ा नहीं हुआ है। टेराबाइट्स आजकल बड़े हैं।
ओलिगोफ़्रेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.