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

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

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

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

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

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

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

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

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

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

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

यह भी देखें

 * डाटा कम्प्रेशन
 * इमेज कम्प्रेशन
 * यूनिक्स कमांड की सूची
 * गज़िप

बाहरी संबंध

 * ncompress - public domain compress/uncompress implementation for POSIX systems
 * compress - original Unix compress (in a compress'd archive)
 * compress - original Unix compress executable (gzip'd)
 * Source Code for compress v4.0 (gzip'd sharchives)
 * ZIP File containing a Windows port of the compress utility
 * source code to the current version of fcompress.c from compress
 * bit groups alignment - Explanation of bit groups alignment.
 * lzws - New library and CLI, implemented without legacy code.
 * ruby-lzws - Ruby bindings with streaming support.
 * compress.com - official website for file compression.
 * source code to the current version of fcompress.c from compress
 * bit groups alignment - Explanation of bit groups alignment.
 * lzws - New library and CLI, implemented without legacy code.
 * ruby-lzws - Ruby bindings with streaming support.
 * compress.com - official website for file compression.