2013-07-14 6 views
9

में वर्चुअल फाइल सिस्टम मैं पर्ल में वर्चुअल फाइल सिस्टम परत की तलाश में हूं। ऐसा कुछ जो मूल फाइल सिस्टम रूटीन जैसे ls, mkdir और इसी तरह से, वास्तविक फाइल सिस्टम को लागू करने के तरीके के बावजूद सामान्य अमूर्तता प्रदान करेगा।पर्ल

मैं इस तरह एक अंतरफलक चाहते हैं:

# create a directory "/some/path/tmp" in my current filesystem 
my $plainfs = Module::new->(type => 'local', root=>'/some/path); 
$plainfs->mdkir("/tmp"); 

# create "tmp" dir on a remote filesystem 
my $sshfs = Module::new->(type=>'ssh', root=>'user:[email protected]:~/pub') 
$sshfs->mdkir("/tmp"); 

मैं MetaCPAN पर the VFS package पाया, तो दुर्भाग्य से केवल खाली है, लागू नहीं किया गया मॉड्यूल हैं।

कुछ पहले से ही लागू किया गया है? अभी, मैं केवल "स्थानीय" फाइल सिस्टम और ftp या ssh-I की तलाश में हूं, मुझे डेटाबेस "फाइल सिस्टम" या किसी अन्य विदेशी "फाइल सिस्टम" की आवश्यकता नहीं है जैसे सीवीएस या तो। 20k मेटाकैपैन मॉड्यूल खोजना किसी भी टैगिंग सिस्टम के बिना दर्दनाक है या एक जैसे ...

+2

फ़ाइल :: सिस्टम अच्छा दिखता है: http://search.cpan.org/~hanenkamp/File-System-1.16/ – perreal

+0

@perreal यह वास्तव में अच्छा लगता है। गहरी जांच करने जा रहे हैं। ये तुम्हें कैसे मिला? मैं "फाइल सिस्टम" के लिए मेटापैन खोज रहा हूं, यह पैकेज पहले 7 पृष्ठों में नहीं दिखाया गया है। ; (मेटाकैप खोज वास्तव में गंभीर है। बहुत बहुत धन्यवाद। – kobame

+1

@ कोबामे, जबकि यह सुझाव दिया जा सकता है कि मैंने उत्तर से पीछे काम किया है, अगर मैं मेटाकैपैन पर "फाइल सिस्टम" (कोई उद्धरण नहीं) खोजता हूं तो यह पहला परिणाम है। उत्कृष्ट आईएमई है, लेकिन यह केवल उस डेटा के साथ काम कर सकता है और जो इनपुट आप इसे देते हैं –

उत्तर

1

शायद File::System जो आप खोज रहे हैं वह है। यह वर्चुअल फाइल सिस्टम के प्रबंधन के लिए सामान्य ऑपरेटिंग सिस्टम में मिली बुनियादी कार्यक्षमताओं को प्रदान करता है (जरूरी नहीं कि केवल फाइलों और निर्देशिकाओं में शामिल हो)।

अधिकांश कार्यक्षमताओं को File::System::Object पैकेज की विधि के रूप में प्रस्तुत किया जाता है।

1

कुछ FUSE कार्यान्वयन के बारे में क्या? (उपयोगकर्ता स्पेस में फाइल सिस्टम)? मुझे लगता है कि उस पर आधारित पर्ल में कम से कम एक छद्म-फाइल सिस्टम लागू किया गया है। आखिरकार, इसे कार्यान्वित करना काफी आसान होना चाहिए, मूल रूप से यह माउंट, एलएस, डीएफ, स्टेट आदि जैसे संचालन के कुछ सेट से अधिक नहीं है। मैं सी में ऑटोफॉस स्रोतों के माध्यम से एक बार था, बहुत सरल दिखता था। आप http://code.google.com/p/mogilefs/ भी देख सकते हैं।

+0

मैं 'कार्यान्वित नहीं करना चाहता' फाइल सिस्टम, लेकिन * उपयोग * पहले से ही कार्यान्वित किया गया है, इसलिए एक मॉड्यूल की तलाश है जो पहले से ही अमूर्तता कर चुका है। शायद यह "करने योग्य" है, लेकिन कुछ ऐसा करने की उम्मीद है जो पहले से ही हो चुका है :) पॉजिटर के लिए mogilefs - thanx जांचने के लिए जा रहा है। – kobame

+0

बस किसी भी उपयोगकर्ता स्पेस फाइल सिस्टम को ले जाएं, और कुछ बुनियादी स्तर पर, प्रत्येक शीर्ष स्तर पर, शायद "वापसी सही" या इसी तरह डालने से, इसे हर मूल संचालन आंतरिक के तहत क्या करना है, उससे छुटकारा पाएं। –

1

मॉड्यूल दृष्टिकोण पर भी अटक न जाएं। आपको केवल कुछ उपयोगिता की आवश्यकता है जो स्थानीय फाइल सिस्टम के रूप में एसएसएच/एफ़टीपी फाइल सिस्टम को माउंट करता है और फिर आप सीडी, एमकेडीआईआर आदि जैसे मानक कमांड का उपयोग करेंगे। इसका कारण यह है कि आप इसके लिए कोई मॉड्यूल नहीं देखते हैं कि यह दृष्टिकोण आम तौर पर पसंद किया जाता है। http://sourceforge.net/apps/mediawiki/fuse/index.php?title=FileSystems

पर

देखो आप बस उन फाइल सिस्टम के किसी भी माउंट करने के लिए फ्यूज का उपयोग करेगा और है कि यह है। यहां देखने के लिए कुछ लिंक दिए गए हैं, लेकिन उनमें से अधिकतर अधिकांश वितरणों में संकुल के रूप में भी मिल सकते हैं।

http://search.cpan.org/~dpavlin/Fuse/Fuse.pm

0

फ़ाइल की एक बहुत :: * मॉड्यूल जो पार मंच के विभिन्न भागों को संभाल रहे हैं:

http://sourceforge.net/projects/lufs/ http://lftpfs.sourceforge.net

यहाँ मॉड्यूल बस पर्ल के भीतर फ्यूज फाइल सिस्टम माउंट करने के लिए है फाइल सिस्टम प्रबंधन।

उदाहरण के लिए

:

use File::Spec::Functions qw(catfile); 

आप मिलता है कि मेरा $ फ़ाइल नाम = catfile $ जड़, $ पथ, "। $ फ़ाइल नाम $ ext"; या मेरी $ new_directory = catfile $ path, "new_sub_directory"; और सही विभाजक का उपयोग करना सुनिश्चित करें, उदा।/या \, et cetera।

एक और बात आप चाहते करने लगते हैं के साथ किया जा सकता है:

use File::Path qw(make_path); 

जो बहुत आसान है, और make_path की तरह कहा जा सकता है ($ new_directory, {मोड => 0755});

मुझे सच में यकीन नहीं है कि फ़ाइल :: सिस्टम वास्तव में रिमोट सिस्टम को जिस तरह से आप चाहते हैं उसे संभालता है।

इसे संभालने के लिए मेरे लिए कुछ अलग-अलग तरीके सामने आते हैं, लेकिन मुझे लगता है कि नेट :: एसएसएच :: उम्मीद है जो मैंने अतीत में उपयोग की है, और यह बहुत बुरा नहीं है, हालांकि आप शायद एक आसान समय अगर आप स्थानीय रूप से दूरस्थ फाइल सिस्टम को माउंट कर सकते हैं, तो आपको जो करना है, उसे अनमाउंट करें।