लिनक्स पर मल्टीपार्ट (स्पान्ड) ज़िप को कैसे अनज़िप करें?


73

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

मैं अपने स्वयं के फ़ोल्डर में एक परीक्षण बनाया है, में एक पीडीएफ ऊपर ज़िप करने test.zip.001, .002और .003। मैं इसे अनज़िप कैसे करूँ? क्या मुझे पहले उनसे जुड़ने की आवश्यकता है?

कृपया ध्यान दें कि मैं 7z का उपयोग करके उतना ही खुश रहूंगा जितना कि मैं ज़िप प्रारूप का उपयोग कर रहा हूं। यदि इससे परिणाम पर कोई फर्क पड़ता है।


यह सीमित सॉफ्टवेयर के साथ एक वेब सर्वर पर सहायक नहीं हो सकता है, लेकिन मैंने इस समाधान को कहीं और नहीं देखा है और यह वही है जो मैं उपयोग करता हूं: java.util.zip एपीआई ने उन सभी जिप भागों से निपटा दिया है जिन्हें मैंने इसे फेंक दिया है। , यहां तक ​​कि अनुगामी भागों या अंतिम भाग के अपूर्ण होने के अधिक सामान्य मामले में भी नहीं। मैं इसे Jython से बुलाता हूं, इसलिए यह एक स्क्रिप्ट के रूप में है, और यहां कोड है: github.com/combatopera/unzipparts
Andrzej Cichocki

जवाबों:


74

आपको पहले उनसे जुड़ने की आवश्यकता होगी। आप catनीचे दिए गए उदाहरण के अनुसार , सामान्य लिनक्स ऐप का उपयोग कर सकते हैं :

cat test.zip* > ~/test.zip

यह आपके के सभी जोड़ होगा test.zip.001, test.zip.002एक बड़ा, test.zip फ़ाइल में, आदि फ़ाइलें। एक बार आपके पास वह एकल फ़ाइल है, तो आप चला सकते हैंunzip test.zip

"लिनक्स में ज़िप अभिलेखागार कैसे बनाएं, विभाजित करें, जुड़ें और निकालें" मदद कर सकता है।


1
ठीक है, मुझे यह पसंद है ... प्रगति ... लेकिन मैं वास्तव में यहाँ एक लिनक्स n00b हूँ। मुझे लगता x*है फ़ाइल नाम है? और ~/hugefileएक निर्देशिका है? टिल्ड प्रतीक का उद्देश्य क्या है? यह पूछने के लिए क्षमा करें कि मुझे क्या संदेह है, बहुत ही मूल प्रश्न हैं।
टिम

जब आप फ़ाइलों को विभाजित करते हैं, तो आपको x_ (जैसे: x_split1, x_split2, ...) जैसे उपसर्ग का उपयोग करना चाहिए, जैसे विंडोज़ में फ़ाइल प्रत्यय फ़ाइल, फ़ाइल.002 ... आदि) टिल्ड आपके होम डायरेक्टरी का प्रतिनिधित्व करता है। ~ / विशालकाय के रूप में ही है / घर / टिम / विशालकाय। क्या आपने अपनी फ़ाइलों को विभाजित किया है? विभाजित फ़ाइलों के नाम क्या हैं?
Fromnaboo

1
मुझे लगता है कि मैं देख रहा हूं कि यह मुद्दा कहां आएगा, स्पोंड आर्काइव को विंडोज में बनाया गया था, जिसमें जिप एक्सटेंशन के साथ 7zip का उपयोग किया गया था, इसलिए यह ऑटो बनाता है TEST.zip.001, TEST.zip.002और TEST.zip.003जिसका अर्थ है कि विभाजन बहुत अलग है। ऐसा लगने लगा है कि VMWare पर लिनक्स को फेंकना और यहां फाइलें बनाना आसान हो सकता है, फिर कम से कम मैं केवल 1 ओएस के साथ काम कर रहा हूं। क्या आप किसी फ़ाइल प्रकार पर SPLIT कमांड का उपयोग कर सकते हैं? यानी चित्र, ऑडियो फिल्में आदि?
टिम

हाँ, स्प्लिट कमांड किसी भी फाइल पर काम करता है। p7zip को apt-get install p7zip के साथ debian या yum install p7zip पर फेडोरा पर स्थापित करें, फाइलों के साथ जुड़ें: cat TEST.zip। *> आर्काइव करें और उनके साथ एक्सट्रैक्ट करें।
Fromnaboo

1
7za x archiveशायद बेहतर है अगर संग्रह में निर्देशिका संरचना है।
SLM

38

लिनक्स unzipउपयोगिता वास्तव में मल्टीपार्ट ज़िप का समर्थन नहीं करती है। से मैनुअल :

ज़िप के साथ संयोजन के अलावा, बहु-भाग अभिलेखागार अभी तक समर्थित नहीं हैं। (सभी भागों को क्रम में एक साथ सम्‍मिलित किया जाना चाहिए, और उसके बाद zip -F ( zip -FFज़िप 3.x के लिए ) या (ज़िप 3.x के लिए) इसे "ठीक" करने के लिए संक्षिप्त संग्रह पर किया जाना चाहिए। इसके अलावा, ज़िप 3.0 और बाद में संयोजन कर सकते हैं। मल्टी-पार्ट (स्प्लिट) अभिलेखों का उपयोग करके एक संयुक्त एकल-फ़ाइल संग्रह में zip -s- inarchive -O outarchive। अधिक जानकारी के लिए ज़िप 3 मैनुअल पेज देखें।)

तो आपको पहले टुकड़ों को समतल करने की आवश्यकता है, फिर परिणाम की मरम्मत करें। वाइल्डकार्ड वर्णों के किसी भी अनुक्रम के लिए खड़ा है, जहां cat test.zip.*बुलाया सभी फाइलों test.zip.*को समाप्‍त कर देता *है; फाइलें लेक्सोग्राफिक क्रम में एनुमरेट की जाती हैं, जो कि अग्रणी शून्य के लिए संख्यात्मक क्रम के समान है। >test.zipफ़ाइल में आउटपुट को निर्देशित करता है test.zip

cat test.zip.* >test.zip
zip -FF test.zip --out test-full.zip
unzip test-full.zip

यदि आपने ज़िप फ़ाइल को सीधे विभाजित करके टुकड़े बनाए हैं, तो आधिकारिक Pkzip उपयोगिता के साथ एक बहु-भाग ज़िप बनाने का विरोध करते हुए, आपको केवल उन हिस्सों में शामिल होने की आवश्यकता है।

cat test.zip.* >test.zip
unzip test.zip

1
दूसरा आदेश zip -FF test.zip --out test-full.zip होना चाहिए - आपको --आउट कमांड के बिना एक त्रुटि देगा
Alvin

3
मेरे लिए, FFयदि मैंने zipपहली मल्टी-पार्ट फ़ाइल की ओर इशारा किया, तो काम करने की catज़रूरत नहीं है।
जानिस एल्मरिस

1
जैसा कि @ JANisElmeris ने पहले ही उल्लेख किया है, zip -FFउन पर उपयोग करने से पहले अभिलेखागार को संक्षिप्त करने की आवश्यकता नहीं है।
रेने

24
7z x archive.zip.001

यह अपने आप ही बाकी मिल जाएगा


1
यह बहुत अजीब है ... इसे काम करने के लिए, आपको पहले सभी ज़िप फ़ाइलों (.zXX और .zip) का नाम बदलकर .zip.xxx (.zip अंतिम भाग) करना होगा, फिर आप पहली बार 7z x का उपयोग कर सकते हैं। , जो एक संक्षिप्त ज़िप के लिए "अर्क" जो फिर से अनज़िप का उपयोग करके विघटित हो सकता है, लेकिन 7z नहीं ... मुझे पूरी तरह से यकीन नहीं है कि फ़ाइल सही ढंग से अनपैक की गई है, लेकिन कम से कम इस बार अनज़िप सीआरसी त्रुटियों की शिकायत नहीं करता है .. लिनक्स पर अविश्वसनीय रूप से ज़िप टूट गया है - यदि आप कर सकते हैं तो बचें। :(
Energiequant

कम से कम
सेंटो के

20

मुझे यहाँ उत्तर मिला: https://superuser.com/a/517758/10264

यह उत्तर गाइल्स की अवधारणा के समान है , अर्थात् पहले आप विभाजन संग्रह को विभाजित करके एक सामान्य संग्रह में जोड़ते हैं, और फिर आप इसे अनज़िप का उपयोग करके अनपैक करते हैं।

अंतर यह है कि -FFझंडे का उपयोग करने के बजाय , जो मेरे लिए काम नहीं करता था, आप बस विभाजन के बिना विभाजन फ़ाइल को वापस करने के लिए ज़िप को बताते हैं। यही -s 0ध्वज का अर्थ है।

तो, पहले, एक ही संग्रह में विभाजन संग्रह को संयोजित करें:

zip -s 0 split-foo.zip --out unsplit-foo.zip

फिर, अनज़िप का उपयोग करके एकल संग्रह निकालें:

unzip unsplit-foo.zip

2
ज़िप 3.x के लिए यह सही उत्तर है
टेक्ससब्रूस

0

बस एक और उदाहरण। इसने मेरे लिए 3GB ओरेकल इंस्टॉलर को विभाजित करने के लिए बैश में काम किया:

echo "<installOracleDB.sh>: Splitting OracleDB installer"
zip /tmp/linuxx64_12201_database.zip --out /tmp/linuxx64_12201_oradb.zip -s 1000m
echo "<installOracleDB.sh>: Merging OracleDB installer"
zip -FF /tmp/linuxx64_12201_oradb.zip --out /tmp/linuxx64_12201_database.zip
echo "<installOracleDB.sh>: Removing temporary files OracleDB installer"
find /tmp -type f -name 'linuxx64_12201_oradb*' -exec rm {} +
echo "<installOracleDB.sh>: Unizipping OracleDB installer"
unzip /tmp/linuxx64_12201_database.zip

यह पिछले उत्तरों के समान दिखता है। क्या आप बता सकते हैं कि यह क्या कर रहा है, और यह कैसे अलग है जो पहले से ही पोस्ट किया गया है? कृपया टिप्पणियों में प्रतिक्रिया न दें; इसे स्पष्ट और अधिक पूर्ण बनाने के लिए अपना उत्तर संपादित करें।
स्कॉट

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

0

मुझे लगता है कि यह ध्यान देने योग्य है कि अनार कमांड-लाइन टूल अनज़िप, अनरार, अन 7ज़िप, अनटार आदि को स्प्लिटेड फ़ाइलों सहित, सक्षम करने में सक्षम है:

unar first_file

https://directory.fsf.org/wiki/Unar#Details

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