Erlang 21

erl_tar




erlang

erl_tar

मॉड्यूल

erl_tar

मॉड्यूल सारांश

टार अभिलेखागार पढ़ने और लिखने के लिए यूनिक्स 'टार' उपयोगिता।

विवरण

यह मॉड्यूल अभिलेखागार और एक टार फाइल से फाइल निकालता है। यह मॉड्यूल v7, STAR, USTAR, और PAX के साथ-साथ USTAR प्रारूप में कुछ GNU टार के एक्सटेंशन (विशेष रूप से विरल फाइलें) को पढ़ने के लिए सबसे आम टार स्वरूपों को पढ़ने का समर्थन करता है। यह USTAR प्रारूप में टार अभिलेखागार का उत्पादन करता है, जब तक कि संग्रहीत की जा रही फ़ाइलों को USTAR (जैसे यूनिकोड मेटाडेटा, फ़ाइल नाम लंबाई, और अधिक) में प्रतिबंध के कारण PAX प्रारूप की आवश्यकता होती है। जैसे, erl_tar सबसे आधुनिक टार उपयोगिताओं द्वारा उत्पादित टार अभिलेखागार का समर्थन करता है, और टारबॉल बनाता है जो समान रूप से पोर्टेबल होना चाहिए।

कन्वेंशन द्वारा, टार फाइल का नाम " .tar " में समाप्त होना है। सम्मेलन का पालन करने के लिए, " .tar " नाम जोड़ें।

फ़ंक्शन create/2 या create/3 का उपयोग करके एक ऑपरेशन में टार फाइलें बनाई जा सकती हैं।

वैकल्पिक रूप से, अधिक नियंत्रण के लिए, फ़ंक्शन open/2 , add/3,4 और open/2 उपयोग करें।

टार फ़ाइल से सभी फ़ाइलों को निकालने के लिए, फ़ंक्शन extract/1 उपयोग करें। केवल कुछ फ़ाइलों को निकालने या कुछ और विकल्पों को निर्दिष्ट करने में सक्षम होने के लिए, फ़ंक्शन extract/2 उपयोग करें।

टार फ़ाइल में फ़ाइलों की सूची वापस करने के लिए, फ़ंक्शन table/1 या table/2 । Erlang खोल के लिए फ़ाइलों की सूची मुद्रित करने के लिए, फ़ंक्शन t/1 या tt/1

एक पढ़ने योग्य संदेश के ऊपर दिए गए कार्यों में से एक त्रुटि शब्द को परिवर्तित करने के लिए, function format_error/1 उपयोग करें।

यूनिकोड समर्थन

यदि file:native_name_encoding/0 रिटर्न utf8 , पथ नाम यूटीएफ -8 में एन्कोडेड हैं, जब टार फाइल्स बनाते हैं, और टार फाइल्स निकालते समय पथ नामों को यूटीएफ -8 में एन्कोडेड माना जाता है।

यदि file:native_name_encoding/0 रिटर्न latin1 , पथ नामों का कोई अनुवाद नहीं किया जाता है।

PAX हेडर में संग्रहीत यूनिकोड मेटाडेटा संरक्षित है

अन्य संग्रहण मीडिया

ftp मॉड्यूल आमतौर पर file मॉड्यूल का उपयोग करके डिस्क पर टार फ़ाइल तक पहुँचता है। जब अन्य आवश्यकताएं उत्पन्न होती हैं, तो आप भंडारण मीडिया पर लेखन और पढ़ने के प्रदर्शन के लिए अपने स्वयं के निम्न-स्तरीय एर्लांग कार्यों को परिभाषित कर सकते हैं; फ़ंक्शन init/3 उपयोग करें।

इसका एक उदाहरण ssh_sftp:open_tar/3 में SFTP सपोर्ट है ssh_sftp:open_tar/3 । यह फ़ंक्शन एक रिमोट मशीन पर एक SFTP चैनल का उपयोग करके एक टार फाइल खोलता है।

सीमाएं

  • यदि आपको USTAR टार प्रारूप के साथ संगत रहना चाहिए, तो आपको यह सुनिश्चित करना होगा कि स्टोर किए जा रहे फ़ाइल पथ कुल 255 बाइट्स से कम हों, अधिकतम 100 बाइट्स की फ़ाइल नाम घटक लंबाई के साथ। USTAR नाम फ़ील्ड के अलावा हेडर फ़ील्ड (उपसर्ग) का उपयोग करता है, और फ़ाइल पथ को दो भागों में 100 बाइट्स से अधिक लंबा करता है। यह विभाजन एक निर्देशिका सीमा पर किया जाता है, और इस तरह से उन दो क्षेत्रों में उपलब्ध स्थान का सबसे अच्छा उपयोग करने के लिए किया जाता है, लेकिन व्यवहार में इसका अक्सर अर्थ होगा कि आपके पास एक पथ के लिए 255 बाइट्स से कम है। erl_tar स्वचालित रूप से लंबे फ़ाइलनामों को संभालने के लिए PAX के लिए प्रारूप को स्वचालित रूप से अपग्रेड कर देगा, इसलिए यह केवल एक समस्या है अगर आपको erl_tar या tar पुराने कार्यान्वयन के साथ संग्रह को निकालने की आवश्यकता है जो PAX का समर्थन नहीं करता है। इस मामले में, पैक्स हेडर नियमित फ़ाइलों के रूप में निकाले जाएंगे, और आपको उन्हें मैन्युअल रूप से लागू करने की आवश्यकता होगी।

  • उपरोक्त की तरह, यदि आपको USTAR संगत रहना चाहिए, तो आपको प्रतीकात्मक / कठिन लिंक के लिए रास्तों से भी सुनिश्चित करना होगा कि लिंक 100 बाइट्स से अधिक नहीं हैं, अन्यथा PAX हेडर का उपयोग किया जाएगा।

निर्यात

add (TarDescriptor, Filename, Options) -> RetValue

प्रकार

एक फ़ाइल को टार फ़ाइल में जोड़ता है जिसे open/2 द्वारा लिखने के लिए खोला गया है।

NameInArchive वह नाम है जिसके तहत फ़ाइल टार फ़ाइल में संग्रहीत हो जाती है। टार फ़ाइल से निकाले जाने पर फ़ाइल को यह नाम मिलता है।

विकल्प:

dereference

डिफ़ॉल्ट रूप से, प्रतीकात्मक लिंक को टार फ़ाइल में प्रतीकात्मक लिंक के रूप में संग्रहीत किया जाता है। डिफ़ॉल्ट को ओवरराइड करने के लिए और उस फ़ाइल को संग्रहीत करें जिसे प्रतीकात्मक लिंक टार फ़ाइल में इंगित करता है, विकल्प dereference उपयोग करें।

verbose

जोड़े गए फ़ाइल के बारे में एक सूचना संदेश प्रिंट करता है।

{chunks,ChunkSize}

फ़ाइल से भागों में डेटा पढ़ता है। यह स्मृति-सीमित मशीनों के लिए अभिप्रेत है, उदाहरण के लिए, SFTP पर दूरस्थ मशीन पर एक टार फ़ाइल बनाता है, ssh_sftp:open_tar/3

{atime,non_neg_integer()}

अंतिम बार, POSIX time रूप में सेट POSIX time , जब फ़ाइल पढ़ी गई थी। file:read_file_info/1 भी देखें file:read_file_info/1

{mtime,non_neg_integer()}

आखिरी बार सेट POSIX time , जब POSIX time रूप में, जब फ़ाइल लिखी गई थी। file:read_file_info/1 भी देखें file:read_file_info/1

{ctime,non_neg_integer()}

समय सेट करता है, POSIX time रूप में, जब फ़ाइल बनाई गई थी। file:read_file_info/1 भी देखें file:read_file_info/1

{uid,non_neg_integer()}

फ़ाइल स्वामी सेट करता है। file:read_file_info/1

{gid,non_neg_integer()}

वह समूह सेट करता है जो फ़ाइल स्वामी का है। file:read_file_info/1

जोड़ें (TarDescriptor, FilenameOrBin, NameInArchive, विकल्प) -> वापसी

प्रकार

एक फ़ाइल को टार फ़ाइल में जोड़ता है जिसे open/2 द्वारा लिखने के लिए खोला गया है। यह फ़ंक्शन add/3,4 के समान विकल्पों को स्वीकार करता है।

करीब (TarDescriptor)

प्रकार

open/2 द्वारा खोली गई एक टार फाइल को बंद करता है।

create (नाम, फाइललिस्ट) -> RetValue

प्रकार

एक टार फाइल बनाता है और उन फाइलों को संग्रहित करता है जिनके नाम FileList में निर्दिष्ट हैं। फ़ाइलों को या तो डिस्क से पढ़ा जा सकता है या बायनेरिज़ के रूप में निर्दिष्ट किया जा सकता है।

बनाएं (नाम, फाइललिस्ट, ऑप्शनलिस्ट)

प्रकार

एक टार फाइल बनाता है और उन फाइलों को संग्रहित करता है जिनके नाम FileList में निर्दिष्ट हैं। फ़ाइलों को या तो डिस्क से पढ़ा जा सकता है या बायनेरिज़ के रूप में निर्दिष्ट किया जा सकता है।

OptionList में विकल्प इस प्रकार से चूक को संशोधित करते हैं:

compressed

संपूर्ण टार फ़ाइल संपीड़ित है, जैसे कि इसे gzip प्रोग्राम के माध्यम से चलाया गया हो। इस कन्वेंशन का पालन करने के लिए कि एक संकुचित टार फाइल " .tar.gz " या " .tgz " में समाप्त होना है, उचित एक्सटेंशन जोड़ें।

cooked

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

dereference

डिफ़ॉल्ट रूप से, प्रतीकात्मक लिंक को टार फ़ाइल में प्रतीकात्मक लिंक के रूप में संग्रहीत किया जाता है। डिफ़ॉल्ट को ओवरराइड करने के लिए और उस फ़ाइल को संग्रहीत करें जिसे प्रतीकात्मक लिंक टार फ़ाइल में इंगित करता है, विकल्प dereference उपयोग करें।

verbose

प्रत्येक जोड़े गए फ़ाइल के बारे में एक सूचना संदेश प्रिंट करता है।

extract (नाम) -> RetValue

प्रकार

टार आर्काइव से सभी फाइलें निकालता है।

यदि तर्क Name को {binary,Binary} रूप में निर्दिष्ट किया जाता है {binary,Binary} की सामग्री को टार संग्रह माना जाता है।

यदि तर्क का Name {file,Fd} रूप में निर्दिष्ट किया गया है, तो Fd को एक फ़ाइल विवरणक माना जाता है जो फ़ंक्शन file:open/2 से लौटा है file:open/2

अन्यथा, Name एक फ़ाइल नाम होना है।

ध्यान दें

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

अर्क (नाम, विकल्प सूची)

प्रकार

टार आर्काइव से फाइलें निकालता है।

यदि तर्क Name को {binary,Binary} रूप में निर्दिष्ट किया जाता है {binary,Binary} की सामग्री को टार संग्रह माना जाता है।

यदि तर्क का Name {file,Fd} रूप में निर्दिष्ट किया गया है, तो Fd को एक फ़ाइल विवरणक माना जाता है जो फ़ंक्शन file:open/2 से लौटा है file:open/2

अन्यथा, Name एक फ़ाइल नाम होना है।

निम्न विकल्प निष्कर्षण के लिए चूक को निम्नानुसार संशोधित करते हैं:

{cwd,Cwd}

रिश्तेदार फ़ाइल नाम के साथ फ़ाइलें डिफ़ॉल्ट रूप से वर्तमान कार्यशील निर्देशिका में निकाली गई हैं। इस विकल्प के साथ, फाइलों को निर्देशिका Cwd में निकाला जाता है।

{files,FileList}

डिफ़ॉल्ट रूप से, सभी फाइलें टार फाइल से निकाली जाती हैं। इस विकल्प के साथ, केवल उन फ़ाइलों को निकाला जाता है जिनके नाम FileList में शामिल हैं।

compressed

इस विकल्प के साथ, फ़ाइल निकालते समय असम्पीडित है। यदि टार फ़ाइल संपीड़ित नहीं है, तो इस विकल्प को अनदेखा कर दिया जाता है।

cooked

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

memory

किसी निर्देशिका को निकालने के बजाय, यह विकल्प परिणाम को ट्यूपल्स {Filename, Binary} की सूची के रूप में देता है, जहां Binary एक बाइनरी है जिसमें फ़ाइल नाम टार फ़ाइल में Filename नाम से निकाला गया है।

keep_old_files

डिफ़ॉल्ट रूप से, टार फ़ाइल में फ़ाइलों के समान नाम वाली सभी मौजूदा फाइलें अधिलेखित हो जाती हैं। इस विकल्प के साथ, मौजूदा फाइलें अधिलेखित नहीं हैं।

verbose

प्रत्येक निकाले गए फ़ाइल के लिए एक सूचना संदेश प्रिंट करता है।

format_error (कारण) -> स्ट्रिंग ()

प्रकार

एक मानव-पठनीय त्रुटि संदेश स्ट्रिंग में एक त्रुटि कारण अवधि देता है।

init (यूजरपार्टी, एक्सेसमोड, फन) -> {ठीक है, टैरडिसस्क्रिप्ट} | {त्रुटि, कारण}

प्रकार

Fun की परिभाषा है कि क्या करना है जब विभिन्न भंडारण संचालन कार्यों को उच्च टार हैंडलिंग कार्यों (जैसे कि add/3 , add/4 और close/1 ) से बुलाया जाना है।

जब फंक्शन एक लो-लेवल ऑपरेशन करना चाहता है, तो Fun उसको कहा जाता है, जैसे किसी फाइल को ब्लॉक लिखना। Fun को Fun(Op, {UserPrivate,Parameters...}) , जहां Op ऑपरेशन नाम है, UserPrivate शब्द को UserPrivate init/1 और Parameters... के पहले तर्क के रूप में पारित किया गया Parameters... डेटा द्वारा जोड़े गए हैं। टार फ़ंक्शन को स्टोरेज हैंडलिंग फ़ंक्शन के लिए नीचे दिया जाएगा।

पैरामीटर UserPrivate आमतौर पर एक फ़ाइल डिस्क्रिप्टर या एक SFTP चैनल आईडी की तरह एक निम्न-स्तरीय संरचना को खोलने का परिणाम है। अलग-अलग Fun क्लॉज उसी टर्म पर काम करते हैं।

निम्नलिखित मज़ेदार खंड पैरामीटर सूचियाँ हैं:

(write, {UserPrivate,DataToWrite})

DataToWrite का उपयोग करके लिखता है।

(close, UserPrivate)

पहुँच को बंद करता है।

(read2, {UserPrivate,Size})

UserPrivate का उपयोग कर पढ़ता है, लेकिन केवल Size बाइट्स। ध्यान दें कि केवल एक एरिटी -2 रीड फ़ंक्शन है, न कि एक एरिटी -1 फ़ंक्शन।

(position,{UserPrivate,Position})

file:position/2 में फ़ाइलों के लिए निर्धारित के रूप में UserPrivate की स्थिति निर्धारित file:position/2

उदाहरण:

निम्नलिखित file मॉड्यूल का उपयोग कर फ़ाइलों पर पढ़ने और लिखने के लिए एक पूर्ण Fun पैरामीटर है:

ExampleFun = 
   fun(write, {Fd,Data}) ->  file:write(Fd, Data);
      (position, {Fd,Pos}) -> file:position(Fd, Pos);
      (read2, {Fd,Size}) -> file:read(Fd, Size);
      (close, Fd) -> file:close(Fd)
   end

यहाँ Fd को init/3 रूप में कार्य करने के लिए निर्दिष्ट किया गया था:

{ok,Fd} = file:open(Name, ...).
{ok,TarDesc} = erl_tar:init(Fd, [write], ExampleFun),

TarDesc का उपयोग तब किया जाता है:

erl_tar:add(TarDesc, SomeValueIwantToAdd, FileNameInTarFile),
...,
erl_tar:close(TarDesc)

उदाहरण के लिए, जब erl_tar कोर चाहता है, तो Data का एक टुकड़ा लिखें, यह उदाहरण के लिए कॉल ExampleFun(write, {UserPrivate,Data})

ध्यान दें

file मॉड्यूल संचालन के साथ यह उदाहरण सीधे उपयोग करने के लिए आवश्यक नहीं है, क्योंकि यह वही है जो सिद्धांत रूप में open/2 कार्य करता है।

चेतावनी

TarDescriptor शब्द एक फ़ाइल विवरणक नहीं है। आपको सलाह दी जाती है कि इस शब्द की विशिष्ट सामग्री पर भरोसा न करें, क्योंकि यह भविष्य में Erlang / OTP रिलीज़ में बदल सकता है जब इस मॉड्यूल में अधिक सुविधाएँ जोड़ी जाती हैं।

open (नाम, OpenModeList) -> RetValue

प्रकार

लिखने के लिए एक टार फ़ाइल बनाता है (उसी नाम की कोई भी मौजूदा फ़ाइल काट दी जाती है)।

कन्वेंशन द्वारा, टार फाइल का नाम " .tar " में समाप्त होना है। सम्मेलन का पालन करने के लिए, " .tar " नाम जोड़ें।

write परमाणु को छोड़कर, निम्नलिखित परमाणुओं को OpenModeList जोड़ा जा सकता है:

compressed

संपूर्ण टार फ़ाइल संपीड़ित है, जैसे कि इसे gzip प्रोग्राम के माध्यम से चलाया गया हो। इस कन्वेंशन का पालन करने के लिए कि एक संकुचित टार फाइल " .tar.gz " या " .tgz " में समाप्त होना है, उचित एक्सटेंशन जोड़ें।

cooked

डिफ़ॉल्ट रूप से, टार फ़ाइल raw मोड में खोली जाती है, जो तेज़ होती है लेकिन रिमोट (Erlang) फ़ाइल सर्वर का उपयोग करने की अनुमति नहीं देती है। मोड सूची में cooked जोड़ना डिफ़ॉल्ट को ओवरराइड करता है और बिना विकल्प raw के टार फ़ाइल खोलता है।

एक खुली हुई टार फाइल में उस समय एक फाइल जोड़ने के लिए, फंक्शन add/3,4 उपयोग करें। जब आप फ़ाइलें जोड़ना समाप्त कर लें, तो टार फ़ाइल को बंद करने के लिए फ़ंक्शन close/1 का उपयोग करें।

चेतावनी

TarDescriptor शब्द एक फ़ाइल विवरणक नहीं है। आपको सलाह दी जाती है कि इस शब्द की विशिष्ट सामग्री पर भरोसा न करें, क्योंकि यह भविष्य में Erlang / OTP रिलीज़ में बदल सकता है जब इस मॉड्यूल में अधिक सुविधाएँ जोड़ी जाती हैं।

तालिका (नाम) -> RetValue

प्रकार

टार फ़ाइल Name में सभी फ़ाइलों के नामों को पुनः प्राप्त करता है।

तालिका (नाम, विकल्प)

प्रकार

टार फ़ाइल Name में सभी फ़ाइलों के नामों को पुनः प्राप्त करता है।

टी (नाम)

प्रकार

टार फ़ाइल में सभी फ़ाइलों के नामों को प्रिंट करता है नाम Erlang शेल (" tar t " के समान)।

टीटी (नाम)

प्रकार

टार फ़ाइल में सभी फाइलों के बारे में नाम और जानकारी प्रिंट करता है नाम Erlang शेल (" tar tv " के समान)।