मान लीजिए कि मेरे पास 10,000 XML फाइलें हैं। अब मान लीजिए कि मैं उन्हें एक दोस्त के पास भेजना चाहता हूं। उन्हें भेजने से पहले, मैं उन्हें संक्षिप्त करना चाहूंगा।
विधि 1: उन्हें संपीड़ित न करें
परिणाम:
Resulting Size: 62 MB
Percent of initial size: 100%
विधि 2: हर फ़ाइल को ज़िप करें और उसे 10,000 xml फ़ाइलें भेजें
कमान:
for x in $(ls -1) ; do echo $x ; zip "$x.zip" $x ; done
परिणाम:
Resulting Size: 13 MB
Percent of initial size: 20%
विधि 3: 10,000 xml फ़ाइलों वाली एकल ज़िप बनाएँ
कमान:
zip all.zip $(ls -1)
परिणाम:
Resulting Size: 12 MB
Percent of initial size: 19%
विधि 4: फ़ाइलों को किसी एकल फ़ाइल में सम्मिलित करें और उसे ज़िप करें
कमान:
cat *.xml > oneFile.txt ; zip oneFile.zip oneFile.txt
परिणाम:
Resulting Size: 2 MB
Percent of initial size: 3%
प्रशन:
- जब मैं सिर्फ एक फ़ाइल को ज़िप कर रहा हूं तो मुझे ऐसे नाटकीय रूप से बेहतर परिणाम क्यों मिलेंगे?
- मैं विधि 2 की तुलना में पद्धति 3 का उपयोग करके बहुत बेहतर परिणाम प्राप्त करने की उम्मीद कर रहा था, लेकिन नहीं। क्यों?
- क्या यह व्यवहार विशिष्ट है
zip
? अगर मैंने प्रयोग करने की कोशिश की तोgzip
क्या मुझे अलग परिणाम मिलेंगे?
अतिरिक्त जानकारी:
$ zip --version
Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license.
This is Zip 3.0 (July 5th 2008), by Info-ZIP.
Currently maintained by E. Gordon. Please send bug reports to
the authors using the web page at www.info-zip.org; see README for details.
Latest sources and executables are at ftp://ftp.info-zip.org/pub/infozip,
as of above date; see http://www.info-zip.org/ for other sites.
Compiled with gcc 4.4.4 20100525 (Red Hat 4.4.4-5) for Unix (Linux ELF) on Nov 11 2010.
Zip special compilation options:
USE_EF_UT_TIME (store Universal Time)
SYMLINK_SUPPORT (symbolic links supported)
LARGE_FILE_SUPPORT (can read and write large files on file system)
ZIP64_SUPPORT (use Zip64 to store large files in archives)
UNICODE_SUPPORT (store and read UTF-8 Unicode paths)
STORE_UNIX_UIDs_GIDs (store UID/GID sizes/values using new extra field)
UIDGID_NOT_16BIT (old Unix 16-bit UID/GID extra field not used)
[encryption, version 2.91 of 05 Jan 2007] (modified for Zip 3)
संपादित करें: मेटा डेटा
एक उत्तर बताता है कि अंतर सिस्टम मेटा डेटा है जो ज़िप में संग्रहीत है। मुझे नहीं लगता कि ऐसा हो सकता है। परीक्षण करने के लिए, मैंने निम्नलिखित कार्य किया:
for x in $(seq 10000) ; do touch $x ; done
zip allZip $(ls -1)
परिणामी ज़िप 1.4MB है। इसका मतलब यह है कि अस्पष्टीकृत स्थान का अभी भी ~ 10 एमबी है।
$(ls -1)
, बस उपयोग *
करें for x in *
:; zip all.zip *
.tar.gz
पूरी निर्देशिका को जिप करने के लिए विरोध करने का कारण बनता है ।