कंप्रेस (सॉफ़्टवेयर): Difference between revisions

From Vigyanwiki
(Created page with "{{Short description|Unix shell compression program based on the LZW compression algorithm}} {{redirect|compress|the cloth used in medicine|Compress (medical)|other uses|Compre...")
 
No edit summary
Line 1: Line 1:
{{Short description|Unix shell compression program based on the LZW compression algorithm}}
{{Short description|Unix shell compression program based on the LZW compression algorithm}}
{{redirect|compress|the cloth used in medicine|Compress (medical)|other uses|Compression (disambiguation)}}
{{redirect|compress|the cloth used in medicine|Compress (medical)|other uses|Compression (disambiguation)}}
{{More citations needed|date=June 2012}}
 
{{lowercase title}}
{{Infobox software  
{{Infobox software  
| name                  = compress / uncompress
| name                  = compress / uncompress
Line 27: Line 26:
| website  =  
| website  =  
}}
}}
कंप्रेस एक [[ यूनिक्स शैल ]] [[संपीड़न कार्यक्रम]] है जो [[LZW]] कंप्रेशन एल्गोरिदम पर आधारित है।<ref>{{cite web |url=http://ncompress.sourceforge.net/ |title=ncompress: a public domain project |last=Frysinger |first=Mike |access-date=2014-07-30 |quote=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. }}</ref> जी[[ gzip ]] सबसे तेज़ सेटिंग की तुलना में, कंप्रेसर संपीड़न पर थोड़ा कम है, डीकंप्रेसन पर थोड़ा तेज़ है, और इसमें [[डेटा संपीड़न अनुपात]] काफी कम है।<ref>{{cite web |first=Luc|last=Gommans|title=compression - What's the difference between gzip and compress? |url=https://unix.stackexchange.com/a/412573 |website=Unix & Linux Stack Exchange |language=en}}</ref> [[ हटर पुरस्कार ]]डेटा को संपीड़ित करने के लिए 1.8 MiB मेमोरी का उपयोग किया जाता है, जो कि gzip की सबसे धीमी सेटिंग से थोड़ा अधिक है।<ref>{{cite web |title=बड़ा पाठ संपीड़न बेंचमार्क|url=http://mattmahoney.net/dc/text.html |website=mattmahoney.net |quote=compress 4.3d....}}</ref>
कंप्रेस एक [[ यूनिक्स शैल ]] [[संपीड़न कार्यक्रम]] है जो [[LZW|एलजेडडब्ल्यू]] कंप्रेशन एल्गोरिदम पर आधारित है।<ref>{{cite web |url=http://ncompress.sourceforge.net/ |title=ncompress: a public domain project |last=Frysinger |first=Mike |access-date=2014-07-30 |quote=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. }}</ref> [[ gzip | जीज़िप]] सबसे तेज़ सेटिंग की तुलना में, कंप्रेसर संपीड़न पर थोड़ा कम है, डीकंप्रेसन पर थोड़ा तेज़ है, और इसमें [[डेटा संपीड़न अनुपात|डेटा कम्प्रेशन रेश्यो]] अधिक कम है।<ref>{{cite web |first=Luc|last=Gommans|title=compression - What's the difference between gzip and compress? |url=https://unix.stackexchange.com/a/412573 |website=Unix & Linux Stack Exchange |language=en}}</ref> [[ हटर पुरस्कार ]]डेटा को संपीड़ित करने के लिए 1.8 एमआईबी मेमोरी का उपयोग किया जाता है, जो कि जीज़िप की सबसे धीमी सेटिंग से थोड़ा अधिक है।<ref>{{cite web |title=बड़ा पाठ संपीड़न बेंचमार्क|url=http://mattmahoney.net/dc/text.html |website=mattmahoney.net |quote=compress 4.3d....}}</ref>
 
''कंप्रेस'' उपयोगिता का उपयोग करके संपीड़ित करने के बाद अनकंप्रेस उपयोगिता फ़ाइलों को उनकी मूल स्थिति में पुनर्स्थापित कर देगी। यदि कोई फ़ाइल निर्दिष्ट नहीं है, तो [[मानक इनपुट]] मानक आउटपुट पर असंपीड़ित हो जाएगा।
''कंप्रेस'' उपयोगिता का उपयोग करके संपीड़ित करने के बाद अनकंप्रेस उपयोगिता फ़ाइलों को उनकी मूल स्थिति में पुनर्स्थापित कर देगी। यदि कोई फ़ाइल निर्दिष्ट नहीं है, तो [[मानक इनपुट]] मानक आउटपुट पर असंपीड़ित हो जाएगा।


आगामी [[POSIX]] और सिंगल यूनिक्स विशिष्टता संशोधन में, यह योजना बनाई गई है कि gzip प्रारूप में उपयोग किए जाने वाले [[DEFLATE]] एल्गोरिदम को उन उपयोगिताओं में समर्थित किया जाएगा।<ref>{{cite web|url=http://austingroupbugs.net/view.php?id=1041|website=Austin Group Bug Tracker|access-date=2017-11-23|title=0001041: Encourage implementations to include better integrity checksum, compression and decompression utilities if possible.}}</ref>
उपलब्ध [[POSIX]] और सिंगल यूनिक्स विशिष्टता संशोधन में, यह योजना बनाई गई है कि जीज़िप प्रारूप में उपयोग किए जाने वाले [[DEFLATE]] एल्गोरिदम को उन उपयोगिताओं में समर्थित किया जाएगा।<ref>{{cite web|url=http://austingroupbugs.net/view.php?id=1041|website=Austin Group Bug Tracker|access-date=2017-11-23|title=0001041: Encourage implementations to include better integrity checksum, compression and decompression utilities if possible.}}</ref>
 




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


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


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


== इतिहास ==
== इतिहास ==
LZW एल्गोरिथम का उपयोग किया गया {{Mono|compress}} को 1983 में [[स्पेरी कॉर्पोरेशन]] द्वारा पेटेंट कराया गया था। [[टेरी वेल्च]] ने 1984 में एल्गोरिदम पर एक IEEE लेख प्रकाशित किया था,<ref>{{cite journal|author=Welch, Terry A.|author-link=Terry Welch|url=https://www.cs.duke.edu/courses/spring03/cps296.5/papers/welch_1984_technique_for.pdf|title=उच्च प्रदर्शन डेटा संपीड़न के लिए एक तकनीक|journal=IEEE Computer|volume=17|issue=6|pages=8–19|year=1984|doi=10.1109/MC.1984.1659158|s2cid=2055321 }}</ref> लेकिन यह ध्यान देने में असफल रहे कि उन्होंने एल्गोरिदम पर पेटेंट के लिए आवेदन किया था। [[यूटा विश्वविद्यालय]] के स्पेंसर थॉमस ने इस लेख को लिया और लागू किया {{Mono|compress}} 1984 में, यह जाने बिना कि LZW एल्गोरिथम पर एक पेटेंट लंबित था। [[ग्राफिक्स बदलाव प्रारूप]] छवि प्रारूप में भी इस तरह से LZW संपीड़न को शामिल किया गया, और [[यूनिसिस]] ने बाद में GIF के कार्यान्वयन पर रॉयल्टी का दावा किया। जोसेफ एम. ओरोस्ट ने टीम का नेतृत्व किया और थॉमस एट अल के साथ काम किया। का 'अंतिम' (4.0) संस्करण बनाने के लिए {{Mono|compress}} और इसे 1985 में 'net.sources' [[USENET]] समूह में मुफ्त सॉफ्टवेयर के रूप में प्रकाशित किया। {{US patent|4558302}} 1985 में प्रदान किया गया था, और यही कारण है {{Mono|compress}} का उपयोग स्पेरी रिसर्च को रॉयल्टी का भुगतान किए बिना नहीं किया जा सकता था, जिसे अंततः यूनिसिस में विलय कर दिया गया था।
({{Mono|compress}}) में प्रयुक्त एलजेडडब्ल्यू एल्गोरिदम को 1983 में स्पेरी रिसर्च सेंटर द्वारा पेटेंट कराया गया था। टेरी वेल्च ने 1984 में एल्गोरिदम पर एक आईईईई लेख प्रकाशित किया था,<ref>{{cite journal|author=Welch, Terry A.|author-link=Terry Welch|url=https://www.cs.duke.edu/courses/spring03/cps296.5/papers/welch_1984_technique_for.pdf|title=उच्च प्रदर्शन डेटा संपीड़न के लिए एक तकनीक|journal=IEEE Computer|volume=17|issue=6|pages=8–19|year=1984|doi=10.1109/MC.1984.1659158|s2cid=2055321 }}</ref> किन्तु यह ध्यान देने में असफल रहे कि उन्होंने एल्गोरिदम पर पेटेंट के लिए आवेदन किया था। यूटा विश्वविद्यालय के स्पेंसर थॉमस ने इस लेख को लिया और 1984 में कंप्रेस प्रयुक्त किया, बिना यह अनुभव किए कि एलजेडडब्ल्यू एल्गोरिथ्म पर एक पेटेंट लंबित था। GIF छवि प्रारूप में एलजेडडब्ल्यू संपीड़न को भी इस तरह से सम्मिलित किया गया था, और यूनिसिस ने बाद में GIF के कार्यान्वयन पर रॉयल्टी का प्रमाण किया। जोसेफ एम. ओरोस्ट ने टीम का नेतृत्व किया और थॉमस एट अल के साथ काम किया। ({{Mono|compress}}) का 'अंतिम' (4.0) संस्करण बनाया और इसे 1985 में 'net.sources' USENET समूह में मुफ्त सॉफ्टवेयर के रूप में प्रकाशित किया। {{US patent|4558302}} 1985 में प्रदान किया गया था, और यही कारण है कि बिना कंप्रेस का उपयोग नहीं किया जा सकता है। स्पेरी रिसर्च को रॉयल्टी का भुगतान करना, जिसका अंततः यूनिसिस में विलय हो गया।


  {{Mono|compress}} विशेष उपयोगकर्ता-समूहों के पक्ष से बाहर हो गया है क्योंकि यह LZW एल्गोरिथ्म का उपयोग करता है, जिसे यूनिसिस पेटेंट द्वारा कवर किया गया था{{snd}} इस वजह से, बेहतर फ़ाइल संपीड़न के साथ-साथ अपने वैकल्पिक एल्गोरिदम के कारण [[लिनक्स]]-आधारित ऑपरेटिंग सिस्टम पर gzip और [[bzip2]] की लोकप्रियता बढ़ गई। हालाँकि, कॉम्प्रेस ने [[यूनिक्स]] और [[बीएसडी]] सिस्टम पर उपस्थिति बनाए रखी है {{Mono|compress}} और {{Mono|uncompress}} कमांड को [[IBM i]] ऑपरेटिंग सिस्टम में भी पोर्ट कर दिया गया है।<ref>{{cite web |title=IBM System i Version 7.2 Programming Qshell |language=en |author=IBM |website=[[IBM]] |author-link=IBM |url=https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_74/rzahz/rzahzpdf.pdf?view=kc |access-date=2020-09-05 }}</ref>
  {{Mono|compress}} विशेष उपयोगकर्ता-समूहों के पक्ष से बाहर हो गया है क्योंकि यह एलजेडडब्ल्यू एल्गोरिथ्म का उपयोग करता है, जिसे यूनिसिस पेटेंट द्वारा कवर किया गया था{{snd}} इस वजह से, उत्तम फ़ाइल संपीड़न के साथ-साथ अपने वैकल्पिक एल्गोरिदम के कारण [[लिनक्स]]-आधारित ऑपरेटिंग सिस्टम पर जीज़िप और [[bzip2]] की लोकप्रियता बढ़ गई। चूँकि, कॉम्प्रेस ने [[यूनिक्स]] और [[बीएसडी]] सिस्टम पर उपस्थिति बनाए रखी है {{Mono|compress}} और {{Mono|uncompress}} कमांड को [[IBM i]] ऑपरेटिंग सिस्टम में भी पोर्ट कर दिया गया है।<ref>{{cite web |title=IBM System i Version 7.2 Programming Qshell |language=en |author=IBM |website=[[IBM]] |author-link=IBM |url=https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_74/rzahz/rzahzpdf.pdf?view=kc |access-date=2020-09-05 }}</ref>
यूएस एलजेडडब्ल्यू पेटेंट 2003 में समाप्त हो गया, इसलिए यह अब संयुक्त राज्य अमेरिका में सार्वजनिक डोमेन में है। दुनिया भर में LZW पर सभी पेटेंट भी समाप्त हो गए हैं (ग्राफिक्स इंटरचेंज फॉर्मेट#यूनिसिस और LZW पेटेंट प्रवर्तन देखें)।
यूएस एलजेडडब्ल्यू पेटेंट 2003 में समाप्त हो गया, इसलिए यह अब संयुक्त राज्य अमेरिका में सार्वजनिक डोमेन में है। विश्व भर में एलजेडडब्ल्यू पर सभी पेटेंट भी समाप्त हो गए हैं (ग्राफिक्स इंटरचेंज फॉर्मेट या यूनिसिस और एलजेडडब्ल्यू पेटेंट प्रवर्तन देखें)।


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


== विशेष आउटपुट स्वरूप ==
== विशेष आउटपुट स्वरूप ==
आउटपुट बाइनरी में बिट समूह होते हैं। प्रत्येक बिट समूह में निश्चित मात्रा में बिट्स (9-16) वाले कोड होते हैं। प्रत्येक समूह (अंतिम को छोड़कर) को बिट्स की मात्रा को 8 से गुणा करके और शून्य के साथ दाएं पैड करके संरेखित किया जाना चाहिए। अंतिम समूह को 8 से संरेखित किया जाना चाहिए और शून्य के साथ गद्देदार होना चाहिए। आप ncompress [https://github.com/vapier/ncompress/issues/5 अंक] में अधिक जानकारी पा सकते हैं।
आउटपुट बाइनरी में बिट समूह होते हैं। प्रत्येक बिट समूह में निश्चित मात्रा में बिट्स (9-16) वाले कोड होते हैं। प्रत्येक समूह (अंतिम को छोड़कर) को बिट्स की मात्रा को 8 से गुणा करके और शून्य के साथ दाएं पैड करके संरेखित किया जाना चाहिए। अंतिम समूह को 8 से संरेखित किया जाना चाहिए और शून्य के साथ पैडेड होना चाहिए। आप ncompress [https://github.com/vapier/ncompress/issues/5 अंक] में अधिक जानकारी पा सकते हैं।


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


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


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


== मानकीकरण और उपलब्धता ==
== मानकीकरण और उपलब्धता ==
कंप्रेस को 1994 में एक्स/ओपन सीएई विशिष्टता में मानकीकृत किया गया था,<ref>[https://pubs.opengroup.org/onlinepubs/009656399/toc.pdf X/Open CAE Specification Commands and Utilities Issue 4, Version 2] (pdf), 1994, opengroup.org</ref> और आगे द ओपन ग्रुप बेस स्पेसिफिकेशंस, अंक 6 और 7 में।<ref>{{man|cu|compress|SUS6}}</ref> [[लिनक्स मानक आधार]] को कंप्रेस की आवश्यकता नहीं है।<ref>[https://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/command.html Chapter 17. Commands and Utilities] in Linux Standard Base Core Specification 5.0.0, linuxfoundation.org</ref>
कंप्रेस को 1994 में एक्स/ओपन सीएई विशिष्टता में मानकीकृत किया गया था,<ref>[https://pubs.opengroup.org/onlinepubs/009656399/toc.pdf X/Open CAE Specification Commands and Utilities Issue 4, Version 2] (pdf), 1994, opengroup.org</ref> और आगे द ओपन ग्रुप बेस स्पेसिफिकेशंस, अंक 6 और 7 में<ref>{{man|cu|compress|SUS6}}</ref> [[लिनक्स मानक आधार]] को कंप्रेस की आवश्यकता नहीं है।<ref>[https://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/command.html Chapter 17. Commands and Utilities] in Linux Standard Base Core Specification 5.0.0, linuxfoundation.org</ref>
कंप्रेस अक्सर लिनक्स वितरण में डिफ़ॉल्ट रूप से स्थापित नहीं होता है, लेकिन एक अतिरिक्त पैकेज से स्थापित किया जा सकता है।<ref>[https://pkgs.org/download/ncompress ncompress], pkgs.org</ref> कंप्रेस FreeBSD, OpenBSD, MINIX, सोलारिस और AIX के लिए उपलब्ध है।
 
कंप्रेस अधिकांशतः लिनक्स वितरण में डिफ़ॉल्ट रूप से स्थापित नहीं होता है, किन्तु एक अतिरिक्त पैकेज से स्थापित किया जा सकता है।<ref>[https://pkgs.org/download/ncompress ncompress], pkgs.org</ref> कंप्रेस FreeBSD, OpenBSD, MINIX, सोलारिस और AIX के लिए उपलब्ध है।


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


== यह भी देखें ==
== यह भी देखें ==
* [[आधार - सामग्री संकोचन]]
* डाटा [[आधार - सामग्री संकोचन|कम्प्रेशन]]  
* [[छवि संपीड़न]]
* [[छवि संपीड़न|इमेज]] [[आधार - सामग्री संकोचन|कम्प्रेशन]]  
* [[यूनिक्स कमांड की सूची]]
* [[यूनिक्स कमांड की सूची]]
* गज़िप
* गज़िप

Revision as of 20:47, 2 August 2023

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


बाहरी संबंध