कंप्रेस (सॉफ़्टवेयर)

From Vigyanwiki
compress / uncompress
Original author(s)Spencer Thomas
Initial releaseFebruary 1985; 39 years ago (1985-02)
Operating systemUnix, Unix-like, IBM i
TypeCommand
compress .Z
Filename extension
.Z
Internet media type
application/x-compress
Developed bySpencer Thomas
Type of formatdata compression

कंप्रेस एक यूनिक्स शैल संपीड़न कार्यक्रम है जो एलजेडडब्ल्यू कंप्रेशन एल्गोरिदम पर आधारित है।[1] जीज़िप सबसे तेज़ सेटिंग की तुलना में, कंप्रेसर संपीड़न पर थोड़ा कम है, डीकंप्रेसन पर थोड़ा तेज़ है, और इसमें डेटा कम्प्रेशन रेश्यो अधिक कम है।[2] हटर पुरस्कार डेटा को संपीड़ित करने के लिए 1.8 एमआईबी मेमोरी का उपयोग किया जाता है, जो कि जीज़िप की सबसे धीमी सेटिंग से थोड़ा अधिक है।[3]

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

उपलब्ध POSIX और सिंगल यूनिक्स विशिष्टता संशोधन में, यह योजना बनाई गई है कि जीज़िप प्रारूप में उपयोग किए जाने वाले DEFLATE एल्गोरिदम को उन उपयोगिताओं में समर्थित किया जाएगा।[4]


प्रोग्राम का विवरण

कंप्रेस द्वारा संपीड़ित फ़ाइलों को समान्यत: ".Z" एक्सटेंशन दिया जाता है (पहले के पैक प्रोग्राम के आधार पर तैयार किया गया था जिसमें एक्सटेंशन ".z" का उपयोग किया गया था)। कमांड लाइन विकल्प "-Z" दिए जाने पर अधिकांश टार प्रोग्राम अपने डेटा को कंप्रेस के माध्यम से पाइप करेंगे। (टार प्रोग्राम अपने आप में संपीड़ित नहीं होता है; यह बस एक टेप संग्रह के भीतर कई फाइलों को संग्रहीत करता है।)

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

अन्य प्रणालियों पर कंप्रेस द्वारा उत्पादित फ़ाइलों के लिए, अनकंप्रेस 9- से 16-बिट संपीड़न का समर्थन करता है।

इतिहास

(compress) में प्रयुक्त एलजेडडब्ल्यू एल्गोरिदम को 1983 में स्पेरी रिसर्च सेंटर द्वारा पेटेंट कराया गया था। टेरी वेल्च ने 1984 में एल्गोरिदम पर एक आईईईई लेख प्रकाशित किया था,[5] किन्तु यह ध्यान देने में असफल रहे कि उन्होंने एल्गोरिदम पर पेटेंट के लिए आवेदन किया था। यूटा विश्वविद्यालय के स्पेंसर थॉमस ने इस लेख को लिया और 1984 में कंप्रेस प्रयुक्त किया, बिना यह अनुभव किए कि एलजेडडब्ल्यू एल्गोरिथ्म पर एक पेटेंट लंबित था। GIF छवि प्रारूप में एलजेडडब्ल्यू संपीड़न को भी इस तरह से सम्मिलित किया गया था, और यूनिसिस ने बाद में GIF के कार्यान्वयन पर रॉयल्टी का प्रमाण किया। जोसेफ एम. ओरोस्ट ने टीम का नेतृत्व किया और थॉमस एट अल के साथ काम किया। (compress) का 'अंतिम' (4.0) संस्करण बनाया और इसे 1985 में 'net.sources' USENET समूह में मुफ्त सॉफ्टवेयर के रूप में प्रकाशित किया। U.S. Patent 4,558,302 1985 में प्रदान किया गया था, और यही कारण है कि बिना कंप्रेस का उपयोग नहीं किया जा सकता है। स्पेरी रिसर्च को रॉयल्टी का भुगतान करना, जिसका अंततः यूनिसिस में विलय हो गया।

compress विशेष उपयोगकर्ता-समूहों के पक्ष से बाहर हो गया है क्योंकि यह एलजेडडब्ल्यू एल्गोरिथ्म का उपयोग करता है, जिसे यूनिसिस पेटेंट द्वारा कवर किया गया था –  इस वजह से, उत्तम फ़ाइल संपीड़न के साथ-साथ अपने वैकल्पिक एल्गोरिदम के कारण लिनक्स-आधारित ऑपरेटिंग सिस्टम पर जीज़िप और bzip2 की लोकप्रियता बढ़ गई। चूँकि, कॉम्प्रेस ने यूनिक्स और बीएसडी सिस्टम पर उपस्थिति बनाए रखी है compress और uncompress कमांड को IBM i ऑपरेटिंग सिस्टम में भी पोर्ट कर दिया गया है।[6]

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

उपलब्ध POSIX और सिंगल यूनिक्स विशिष्टता संशोधन में, यह योजना बनाई गई है कि जीज़िप प्रारूप में उपयोग किए जाने वाले DEFLATE एल्गोरिदम को उन उपयोगिताओं में समर्थित किया जाएगा।

विशेष आउटपुट स्वरूप

आउटपुट बाइनरी में बिट समूह होते हैं। प्रत्येक बिट समूह में निश्चित मात्रा में बिट्स (9-16) वाले कोड होते हैं। प्रत्येक समूह (अंतिम को छोड़कर) को बिट्स की मात्रा को 8 से गुणा करके और शून्य के साथ दाएं पैड करके संरेखित किया जाना चाहिए। अंतिम समूह को 8 से संरेखित किया जाना चाहिए और शून्य के साथ पैडेड होना चाहिए। आप ncompress अंक में अधिक जानकारी पा सकते हैं।

उदाहरण:

आप दस 9-बिट कोड, पांच 10-बिट कोड और तेरह 11-बिट कोड आउटपुट करना चाहते हैं। अब आपके पास बिट्स के तीन समूह हैं जिन्हें आप आउटपुट करना चाहते हैं: 90 बिट्स, 50 बिट्स और 143 बिट्स।
  • पहले समूह को 72 बिट्स (9 बिट्स × 8) से संरेखित करने के लिए 90 बिट्स डेटा + 54 शून्य बिट्स पैडिंग होना चाहिए।
  • दूसरे समूह में 50 बिट डेटा + 30 शून्य बिट पैडिंग होनी चाहिए जिससे इसे 80 बिट्स (10 बिट्स × 8) पर संरेखित किया जा सकता है।
  • तीसरे समूह में 143 बिट डेटा + 1 शून्य बिट पैडिंग होनी चाहिए जिससे इसे 8 बिट्स (केवल 1 बाइट, क्योंकि यह आउटपुट में अंतिम समूह है) से संरेखित किया जा सकता है।

यह वास्तव में एक बग है एलजेडडब्ल्यू को किसी संरेखण की आवश्यकता नहीं है। यह बग मूल UNIX कंप्रेस, ncompress, जीज़िप और यहां तक ​​कि विंडोज़ पोर्ट का भी भाग है। यह 35 वर्षों से अधिक समय से अस्तित्व में है। सभी एप्लिकेशन/एक्स-कंप्रेस फ़ाइलें इस बग का उपयोग करके बनाई गई थीं। इसलिए हमें इसे आउटपुट स्पेसिफिकेशन में सम्मिलित करना होगा।

कुछ कंप्रेस कार्यान्वयन अप्रारंभीकृत बफ़र से यादृच्छिक बिट्स को संरेखण बिट्स के रूप में लिखते हैं। इस बात की कोई आश्वासन नहीं है कि संरेखण बिट्स शून्य होंगे। इसलिए 100% अनुकूलता के संदर्भ में डीकंप्रेसर को केवल संरेखण बिट मानों को अनदेखा करना होगा।

मानकीकरण और उपलब्धता

कंप्रेस को 1994 में एक्स/ओपन सीएई विशिष्टता में मानकीकृत किया गया था,[7] और आगे द ओपन ग्रुप बेस स्पेसिफिकेशंस, अंक 6 और 7 में[8] लिनक्स मानक आधार को कंप्रेस की आवश्यकता नहीं है।[9]

कंप्रेस अधिकांशतः लिनक्स वितरण में डिफ़ॉल्ट रूप से स्थापित नहीं होता है, किन्तु एक अतिरिक्त पैकेज से स्थापित किया जा सकता है।[10] कंप्रेस FreeBSD, OpenBSD, MINIX, सोलारिस और AIX के लिए उपलब्ध है।

RFC 1977 में प्वाइंट-टू-प्वाइंट प्रोटोकॉल के लिए और RFC 9110 में HTTP/1.1 के लिए कंप्रेस की अनुमति है, चूँकि आधुनिक तैनाती में इसका उपयोग संभवतः ही कभी किया जाता है क्योंकि उत्तम डिफ्लेट/जीज़िप उपलब्ध है।

यह भी देखें

संदर्भ

  1. Frysinger, Mike. "ncompress: a public domain project". Retrieved 2014-07-30. Compress is a fast, simple LZW file compressor. Compress does not have the highest compression rate, but it is one of the fastest programs to compress data. Compress is the de facto standard in the UNIX community for compressing files.
  2. Gommans, Luc. "compression - What's the difference between gzip and compress?". Unix & Linux Stack Exchange (in English).
  3. "बड़ा पाठ संपीड़न बेंचमार्क". mattmahoney.net. compress 4.3d....
  4. "0001041: Encourage implementations to include better integrity checksum, compression and decompression utilities if possible". Austin Group Bug Tracker. Retrieved 2017-11-23.
  5. Welch, Terry A. (1984). "उच्च प्रदर्शन डेटा संपीड़न के लिए एक तकनीक" (PDF). IEEE Computer. 17 (6): 8–19. doi:10.1109/MC.1984.1659158. S2CID 2055321.
  6. IBM. "IBM System i Version 7.2 Programming Qshell" (PDF). IBM (in English). Retrieved 2020-09-05.
  7. X/Open CAE Specification Commands and Utilities Issue 4, Version 2 (pdf), 1994, opengroup.org
  8. compress – Shell and Utilities Reference, The Single UNIX Specification, Version 3 from The Open Group
  9. Chapter 17. Commands and Utilities in Linux Standard Base Core Specification 5.0.0, linuxfoundation.org
  10. ncompress, pkgs.org


बाहरी संबंध