यूनिक्स आर्काइव फॉर्मेट के लिए छोटा, ar आर्काइव फॉर्मेट, एक फाइल फॉर्मेट है जिसका उपयोग आसान स्टोरेज और ट्रांसमिशन के लिए कई फाइलों को एक ही फाइल में इकट्ठा करने के लिए किया जाता है। यह मूल रूप से यूनिक्स सिस्टम के लिए विकसित क िया गया था लेकिन अब विभिन्न प्लेटफॉर्म पर व्यापक रूप से समर्थित है। नए आर्काइव और कंप्रेशन फॉर्मेट की तुलना में ar फॉर्मेट सरल और अधिक सीमित है, लेकिन यह कुछ निश्चित अनुप्रयोगों के लिए उपयोग में बना हुआ है।
एक ar आर्काइव फाइल में एक ग्लोबल हेडर होता है, जिसके बाद फाइल हेडर और फाइल डेटा की एक श्रृंखला होती है। ग्लोबल हेडर एक साधारण ASCII स्ट्रिंग है जो फाइल को एक ar आर्काइव के रूप में पहचानती है। इसमें वर्ण "!<arch>\n" होते हैं जहाँ "\n" एक न्यूलाइन वर्ण का प्रतिनिधित्व करता है। यह मैजिक स्ट्रिंग यूटिलिटी को ar आर्काइव फाइलों को आसानी से पहचानने की अनुमति देता है।
ग्लोबल हेडर के बाद व्यक्तिगत फाइल प्रविष्टियाँ होती हैं। प्रत्येक फाइल प्रविष्टि एक फाइल हेडर से शुरू होती है जिसमें फाइल के बारे में मेटाडेटा होता है। फाइल हेडर का आकार 60 बाइट का होता है और इसमें निम्नलिखित फ़ील्ड शामिल होते हैं: - फाइल का नाम (16 बाइट): फाइल का नाम, 16 वर्णों से छोटा होने पर रिक्त स्थान से भरा हुआ। यदि नाम लंबा है, तो इसे छोटा कर दिया जाता है और एक अनुगामी "/" वर्ण इंगित करता है कि नाम फाइल डेटा अनुभाग में जारी है। - संशोधन टाइमस्टैम्प (12 बाइट): दशमलव यूनिक्स समय प्रारूप में फाइल का अंतिम संशोधन टाइमस्टैम्प, रिक्त स्थान से भरा हुआ। - स्वामी आईडी (6 बाइट): फाइल के स्वामी की संख्यात्मक उपयोगकर्ता आईडी, दशमलव में, रिक्त स्थान से भरा हुआ। - समूह आईडी (6 बाइट): फाइल के समूह की संख्यात्मक समूह आईडी, दशमलव में, रिक्त स्थान से भरा हुआ। - फाइल मोड (8 बाइट): फाइल की अनुमति और मोड बिट, ऑक्टल में, रिक्त स्थान से भरा हुआ। - फाइल का आकार (10 बाइट): बाइट में फाइल के डेटा का आकार, दशमलव में, रिक्त स्थान से भरा हुआ। - हेडर का अंत (2 बाइट): वर्ण "`\n" जो हेडर के अंत को चिह्नित करते हैं।
प्रत्येक फाइल हेडर के बाद, फाइल का डेटा आर्काइव में संग्रहीत किया जाता है। डेटा का आकार हेडर में निर्दिष्ट फाइल के आकार से मेल खाता है। यदि फाइल का आकार विषम है, तो यह सुनिश्चित करने के लिए एक अतिरिक्त पैडिंग बाइट जोड़ा जाता है कि अगला फाइल हेडर एक सम बाइट सीमा पर शुरू होता है। इस पैडिंग बाइट को हेडर के फाइल आकार फ़ील्ड में नहीं गिना जाता है।
प्रतीक तालिका नामक विशेष फाइल प्रविष्टियाँ भी ar आर्काइव में शामिल की जा सकती हैं। प्रतीक तालिका प्रविष्टियों में एक फाइल नाम होता है जो "/" या "\" से शुरू होता है जिसके बाद अंकों की एक स्ट्रिंग होती है। इन प्रविष्टियों में ऑब्जेक्ट फाइलों को एक साथ जोड़ने के लिए उपयोग किए जाने वाले मेटाडेटा होते हैं। प्रतीक तालिका डेटा का प्रारूप विभिन्न प्रणालियों और कंपाइलरों के बीच भिन्न होता है।
Ar आर्काइव में कोई अंतर्निहित संपीड़न शामिल नह ीं है। फाइलों को उनके मूल रूप में एक साथ जोड़ा जाता है। हालाँकि, ar आर्काइव के भीतर अलग-अलग फाइलों को आर्काइव में जोड़े जाने से पहले gzip जैसे अन्य एल्गोरिदम का उपयोग करके संपीड़ित किया जा सकता है।
अधिक आधुनिक आर्काइव फॉर्मेट की तुलना में ar फॉर्मेट की कुछ सीमाएँ हैं: - फाइल के नाम 16 वर्णों तक सीमित हैं, जो प्रतिबंधात्मक हो सकते हैं। - उपयोगकर्ता आईडी, समूह आईडी और फाइल के आकार जैसे संख्यात्मक मेटाडेटा फ़ील्ड में निश्चित आकार होते हैं, जो उनके अधिकतम मानों को सीमित करते हैं। - प्रारूप में कोई चेकसम या अखंडता सत्यापन नहीं है। - कोई संपीड़न प्रदान नहीं किया गया है, जिसके परिणामस्वरूप gzip के साथ tar जैसे प्रारूपों की तुलना में बड़े आर्काइव आकार होते हैं।
इन सीमाओं के बावजूद, ar फॉर्मेट कुछ विशिष्ट अनुप्रयोगों के लिए उपयोग में बना हुआ है। एक सामान्य उपयोग यूनिक्स जैसी प्रणालियों पर स्थिर ला इब्रेरी फाइलों के लिए है। ".a" एक्सटेंशन वाली ये लाइब्रेरी फाइलें ar आर्काइव हैं जिनमें संकलित ऑब्जेक्ट फाइलें होती हैं जिन्हें निष्पादन योग्य में जोड़ा जा सकता है। ar फॉर्मेट की सादगी और व्यापक समर्थन इसे इस उद्देश्य के लिए उपयुक्त बनाता है।
सारांश में, ar आर्काइव फॉर्मेट कई फाइलों को एक साथ एक ही फाइल में बंडल करने का एक सरल तरीका है। इसमें एक ग्लोबल हेडर होता है जिसके बाद फाइल हेडर और फाइल डेटा की एक श्रृंखला होती है। जबकि इसमें संपीड़न और लंबे फाइल नाम समर्थन जैसी उन्नत सुविधाओं का अभाव है, फिर भी इसका उपयोग विशिष्ट डोमेन जैसे यूनिक्स सिस्टम पर स्थिर लाइब्रेरी फाइलों में इसकी सादगी और संगतता के कारण किया जाता है।
फ़ाइल कंप्रेशन রিডन्डेंसी को कम करता है ताकि वही जानकारी कम बिट्स ले। आप कितनी दूर जा सकते हैं इसकी ऊपरी सीमा सूचना सिद्धांत द्वा रा नियंत्रित होती है: दोषरहित कंप्रेशन के लिए, सीमा स्रोत की एन्ट्रॉपी है (शैनन का स्रोत कोडिंग प्रमेय और उनका मूल 1948 का पेपर “संचार का एक गणितीय सिद्धांत”देखें)। दोषपूर्ण कंप्रेशन के लिए, दर और गुणवत्ता के बीच का ट्रेड-ऑफ दर-विरूपण सिद्धांत द्वारा कब्जा कर लिया गया है।
अधिकांश कंप्रेशर्स के दो चरण होते हैं। सबसे पहले, एक मॉडल डेटा में संरचना की भविष्यवाणी करता है या उजागर करता है। दूसरा, एक कोडर उन भविष्यवाणियों को लगभग-इष्टतम बिट पैटर्न में बदल देता है। एक क्लासिक मॉडलिंग परिवार लेम्पेल-ज़िव है: LZ77 (1977) और LZ78 (1978) बार-बार आने वाले सबस्ट्रिंग का पता लगाते हैं और कच्चे बाइट्स के बजाय संदर्भ उत्सर्जित करते हैं। कोडिंग पक्ष पर, हफमैन कोडिंग (मूल पेपर देखें 1952) अधिक संभावित प्रतीकों को छोटे कोड प्रदान करता है। अरिथमैटिक कोडिंग और रेंज कोडिंग बारीक-बारीक विकल्प हैं जो एन्ट्रॉपी सीमा के करीब निचोड़ते हैं, जबकि आधुनिक असममित अंक प्रणाली (ANS) तेज तालिका-चालित कार्यान्वयन के साथ समान कंप्रेशन प्राप्त करता है।
DEFLATE (gzip, zlib, और ZIP द्वारा उपयोग किया जाता है) LZ77 को हफमैन कोडिंग के साथ जोड़ता है। इसके स्पेक्स सार्वजनिक हैं: DEFLATE RFC 1951, zlib रैपर RFC 1950, और gzip फ़ाइल प्रारूप RFC 1952. Gzip स्ट्रीमिंग के लिए बनाया गया है और स्पष्ट रूप से यादृच्छिक पहुँच प्रदान करने का प्रयास नहीं करता है. PNG छवियां DEFLATE को अपनी एकमात्र कंप्रेशन विधि के रूप में मानकीकृत करती हैं (अधिकतम 32 KiB विंडो के साथ), PNG स्पेक के अनुसार “संपीड़न विधि 0… डिफ्लेट/इन्फ्लेट… अधिकतम 32768 बाइट्स” और W3C/ISO PNG दूसरा संस्करण.
Zstandard (zstd): एक नया सामान्य-उद्देश्य कंप्रेसर है जिसे बहुत तेज डीकंप्रेसन के साथ उच्च अनुपात के लिए डिज़ाइन किया गया है। प्रारूप RFC 8878 (यह भी HTML मिरर) और संदर्भ स्पेक GitHub परमें प्रलेखित है। Gzip की तरह, मूल फ्रेम यादृच्छिक पहुँच का लक्ष्य नहीं रखता है. zstd की महाशक्तियों में से एक शब्दकोश है: आपके कॉर्पस से छोटे नमूने जो कई छोटी या समान फ़ाइलों पर संपीड़न में नाटकीय रूप से सुधार करते हैं (देखें python-zstandard शब्दकोश डॉक्स और निगेल ताओ का काम किया हुआ उदाहरण)। कार्यान्वयन “असंरचित” और “संरचित” दोनों शब्दकोशों को स्वीकार करते हैं (चर्चा).
Brotli: वेब सामग्री के लिए अनुकूलित (जैसे, WOFF2 फोंट, HTTP)। यह एक स्थिर शब्दकोश को एक DEFLATE-जैसे LZ+एन्ट्रॉपी कोर के साथ मिलाता है। स्पेक RFC 7932है, जो 2WBITS−16 की एक स्लाइडिंग विंडो को भी नोट करता है जिसमें WBITS [10, 24] (1 KiB−16 B से 16 MiB−16 B तक) में है और यह यादृच्छिक पहुँच का प्रयास नहीं करता है. Brotli अक्सर वेब टेक्स्ट पर gzip को मात देता है जबकि जल्दी से डीकोड करता है।
ZIP कंटेनर: ZIP एक फ़ाइल संग्रह है जो विभिन्न संपीड़न विधियों (deflate, store, zstd, आदि) के साथ प्रविष्टियों को संग्रहीत कर सकता है। वास्तविक मानक PKWARE का APPNOTE है (देखें APPNOTE पोर्टल, एक होस्ट की गई प्रति, और LC अवलोकन ज़िप फ़ाइल प्रारूप (PKWARE) / ज़िप 6.3.3).
LZ4 म ामूली अनुपात के साथ कच्ची गति को लक्षित करता है। इसकी परियोजना पृष्ठ (“अत्यंत तेज संपीड़न”) और फ्रेम प्रारूपदेखें। यह इन-मेमोरी कैश, टेलीमेट्री, या हॉट पाथ के लिए आदर्श है जहां डीकंप्रेसन को रैम की गति के करीब होना चाहिए।
XZ / LZMA अपेक्षाकृत धीमी संपीड़न के साथ घनत्व (महान अनुपात) के लिए धक्का देते हैं। XZ एक कंटेनर है; भारी उठाने का काम आमतौर पर LZMA/LZMA2 (LZ77-जैसा मॉडलिंग + रेंज कोडिंग) द्वारा किया जाता है। देखें .xz फ़ाइल प्रारूप, LZMA स्पेक (पावलोव), और लिनक्स कर्नेल नोट्स XZ एंबेडेड पर. XZ आमतौर पर gzip को आउट-कंप्रेस करता है और अक्सर उच्च-अनुपात वाले आधुनिक कोडेक्स के साथ प्रतिस्पर्धा करता है, लेकिन धीमी एन्कोड समय के साथ।
bzip2 बरोज़-व्हीलर ट्रांसफ़ॉर्म (BWT), मूव-टू-फ्रंट, RLE, और हफ़मैन कोडिंग लागू करता है। यह आमतौर पर gzip से छोटा लेकिन धीमा होता है; देखें आधिकारिक मैनुअल और मैन पेज (लिनक्स).
“विंडो का आकार” मायने रखता है। DEFLATE संदर्भ केवल 32 KiB पीछे देख सकते हैं (RFC 1951 और PNG की 32 KiB कैप यहाँ उल्लेख किया गया है)। ब्रोटली की विंडो लगभग 1 KiB से 16 MiB तक होती है (RFC 7932). Zstd स्तर के अनुसार विंडो और खोज गहराई को ट्यून करता है (RFC 8878). बेसिक gzip/zstd/brotli स्ट्रीम अनुक्रमिक डिकोडिंग के लिए डिज़ाइन किए गए हैं; आधार प्रारूप रैंडम एक्सेस का वादा नहीं करते हैं, हालांकि कंटेनर (जैसे, टार इंडेक्स, चंक्ड फ्रेमिंग, या प्रारूप-विशिष्ट इंडेक्स) इसे परत कर सकते हैं।
उपरोक्त प्रारूप दोषरहित हैं: आप सटीक बाइट्स का पुनर्निर्माण कर सकते हैं। मीडिया कोडेक्स अक्सर दोषपूर्ण होते हैं: वे कम बिटरेट हिट करने के लिए अगोचर विवरण को त्याग देते हैं। छवियों में, क्लासिक जेपीईजी (डीसीटी, क्वांटिज़ेशन, एन्ट्रॉपी कोडिंग) ITU-T T.81 / ISO/IEC 10918-1में मानकीकृत है। ऑडियो में, एमपी3 (MPEG-1 लेयर III) और एएसी (MPEG-2/4) अवधारणात्मक मॉडल और एमडीसीटी ट्रांसफ़ॉर्म पर निर्भर करते हैं (देखें ISO/IEC 11172-3, ISO/IEC 13818-7, और एक एमडीसीटी अवलोकन यहाँ)। दोषपूर्ण और दोषरहित सह-अस्तित्व में हो सकते हैं (जैसे, यूआई संपत्ति के लिए पीएनजी; छवियों/वीडियो/ऑडियो के लिए वेब कोडेक्स)।
सिद्धांत: शैनन 1948 · दर-विरूपण · कोडिंग: हफमैन 1952 · अरिथमैटिक कोडिंग · रेंज कोडिंग · ANS. प्रारूप: DEFLATE · zlib · gzip · Zstandard · Brotli · LZ4 फ्रेम · XZ प्रारूप. BWT स्टैक: बरोज़-व्हीलर (1994) · bzip2 मैनुअल. मीडिया: जेपीईजी T.81 · एमपी3 ISO/IEC 11172-3 · एएसी ISO/IEC 13818-7 · एमडीसीटी.
निष्कर्ष: एक कंप्रेसर चुनें जो आपके डेटा और बाधाओं से मेल खाता हो, वास्तविक इनपुट पर मापें, और शब्दकोशों और स्मार्ट फ्रेमिंग से होने वाले लाभों को न भूलें। सही जोड़ी के साथ, आप प्राप्त कर सकते हैं छोटी फाइलें, तेज स्थानान्तरण, और तेज ऐप्स - शुद्धता या पोर्टेबिलिटी का त्याग किए बिना।
फ़ाइल संकुचन एक प्रक्रिया है जो फ़ाइल या फ़ाइलों का आकार घटाती है, आमतौर पर संग्रहण स्थान को बचाने या नेटवर्क पर संचार को तेज करने के लिए।
फ़ाइल संकुचन डाटा में रिडंडेंसी की पहचान और हटाने के द्वारा काम करता है। यह एल्गोरिदम का उपयोग करके मूल डेटा को एक छोटे स्थान में कोड करता है।
फ़ाइल संकुचन के दो मुख्य प्रकार हैं - नुकसान रहित और नुकसानदायक संकुचन। नुकसान रहित संकुचन की अनुमति है कि मूल फ़ाइल को पूरी तरह से बहाल किया जा सके, जबकि नुकसानदायक संकुचन डेटा की गुणवत्ता में कुछ हानि की लागत पर अधिक आकार घटाव की अनुमति देता है।
फाइल संकुचन उपकरण का एक लोकप्रिय उदाहरण WinZip है, जो ZIP और RAR सहित कई संकुचन प्रारूपों का समर्थन करता है।
नुकसान रहित संकुचन के साथ, गुणवत्ता अपरिवर्तित रहती है। हालांकि, नुकसानदायक संकुचन के साथ, फ़ाइल का आकार अधिक ध्यान से घटाने के लिए कुछ कम महत्वपूर्ण डेटा को हटाने के कारण गुणवत्ता में ध्यान देने योग्य कमी हो सकती है।
हां, डेटा संरक्षण के संबंध में फ़ाइल संकुचन सुरक्षित है, खासकर नुकसान रहित संकुचन के साथ। हालांकि, किसी भी फ़ाइल की तरह, संकुचित फ़ाइलों को मैलवेयर या वायरस के लक्ष्य के रूप में लिया जा सकता है, इसलिए यह हमेशा महत्त्वपूर्ण होता है कि प्रमुख सुरक्षा सॉफ़्टवेयर स्थापित हो।
लगभग सभी प्रकार की फ़ाइलें संकुचित की जा सकती हैं, जिसमें पाठ फ़ाइलें, चित्र, ऑडियो, वीडियो, और सॉफ़्टवेयर फ़ाइलें शामिल हैं। हालांकि, प्राप्त करने योग्य संकुचन का स्तर फ़ाइल प्रकारों के बीच महत्वपूर्ण रूप से अलग हो सकता है।
ZIP फ़ाइल एक प्रकार की फ़ाइल प्रारूप है जो नुकसान रहित संकुचन का उपयोग करके एक या अधिक फ़ाइलों के आकार को घटाती है। ZIP फ़ाइल में अनेक फ़ाइलें प्रभावी रूप से एक ही फ़ाइल में संग्रहित की जाती हैं, जो साझा करना भी आसान बनाती है।
तकनीकी रूप से, हां, हालांकि अतिरिक्त आकार घटाव न्यूनतम हो सकता है या यहां तक कि प्रतिकूल हो सकता है। पहले से संकुचित फ़ाइल को संकुचित करना कभी-कभी इसका आकार बढ़ सकता है क्योंकि संकुचन एल्गोरिदम द्वारा जोड़ी गई मेटाडाटा।
फ़ाइल को डिकम्प्रेस करने के लिए, आपको आमतौर पर एक डिकम्प्रेसन या अनज़िपिंग उपकरण की आवश्यकता होती है, जैसे WinZip या 7-Zip। ये उपकरण संपीडित प्रारूप से मूल फ़ाइलों को निकाल सकते हैं।