मैक ओएस एक्स में एक निर्देशिका में कई फाइलें होने के लिए कोई सीमा?


9

मेरे पास अपने MacOS X में एक निर्देशिका में 100,000+ फाइलें हैं और लगता है कि यह मेरी स्क्रिप्ट के लिए उनमें एक फ़ाइल पढ़ने के लिए धीमी है।

क्या कोई सीमा या सिफारिश है कि कई फाइलें हों? क्या मुझे उन्हें कुछ निर्देशिकाओं में विभाजित करना चाहिए?

जो सीमा मुझे मिली वह यह थी कि मैं mv * fooसभी 100,000 फाइलों के लिए नहीं कर सकता । यह एक त्रुटि दर्शाता है, "बहुत लंबा तर्क।" यह लगभग 20,000 से कम फाइलों के साथ काम करता है।


वर्तमान में मेरे पास एक निर्देशिका में 380,000 फाइलें हैं और महसूस करती हैं कि एक फाइल खोलने में भी केवल 10+ सेकंड लगते हैं। मैंने उन्हें कुछ निर्देशिकाओं में अलग करने का फैसला किया है।
Daisuki Honey

1
HFS + फ़ाइल सिस्टम को एक निर्देशिका में बड़ी संख्या में फ़ाइलों को संग्रहीत करने और उन तक पहुँचने में सक्षम होना चाहिए जो बहुत अधिक परेशानी के बिना उनके पूर्ण नाम से हों। लेकिन आपको वाइल्डकार्ड के साथ बाहर देखने की जरूरत है। आप का उपयोग करते हैं *या ?किसी आदेश को एक बहस के भाग के रूप, ऑपरेटिंग सिस्टम खोजें मिलान फ़ाइलों के लिए पूरी निर्देशिका (धीमा), और फिर इसे अपने तर्क हर मिलान फ़ाइल (लंबी) की एक सूची है, जो यह तो गुजरता के साथ बदलता है आदेश। आप लूप के साथ या कई एमवी कमांड के साथ बेहतर कर सकते हैं, उदाहरण के लिए mv a* foo && mv b* foo
मथायस फ्राईप

जवाबों:


1

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

उन्होंने कहा, सिर्फ इसलिए कि यह 2.1 बिलियन आइटम तक पकड़ सकता है इसका मतलब यह नहीं है कि यह उस स्तर पर प्रदर्शन को बनाए रख सकता है। विकिपीडिया के अनुसार ; जोर मेरा है:

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

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

कैटलॉग फ़ाइल एक जटिल संरचना है। क्योंकि यह सभी फ़ाइल और निर्देशिका जानकारी रखता है, यह फ़ाइल सिस्टम के क्रमांकन को बल देता है - आदर्श स्थिति नहीं जब बड़ी संख्या में थ्रेड फ़ाइल I / O निष्पादित करना चाहते हैं। एचएफएस में, कोई भी ऑपरेशन जो किसी फाइल को बनाता है या किसी भी तरह से फाइल को संशोधित करता है, कैटलॉग फाइल को लॉक करना पड़ता है, जो अन्य थ्रेड्स को कैटलॉग फाइल के लिए केवल पढ़ने के लिए एक्सेस से रोकता है। कैटलॉग फ़ाइल तक पहुंच एकल-लेखक / मल्टीएडर होनी चाहिए।


बहुत बहुत धन्यवाद। मैं समझता हूं कि कैटलॉग फ़ाइल तक पहुंच अड़चन होगी और यह विशेष रूप से मल्टीटास्किंग के लिए गंभीर प्रदर्शन समस्या पैदा कर सकती है।
डेसुकी हनी

@DaisukiHoney आपका स्वागत है! तो अगर आपको मेरा जवाब मददगार लगा, तो कृपया इसे वोट करना न भूलें। और अगर यह जवाब था कि आपकी समस्या हल हो गई तो कृपया इसे इस तरह से जांचना याद रखें।
जेकगोल्ड

हां, निश्चित रूप से मैं आपके उत्तर पर मतदान कर रहा हूं और इसकी जांच कर रहा हूं। फिर, बहुत बहुत धन्यवाद।
Daisuki Honey

विकिपीडिया वर्गों आप का हवाला देते फाइल सिस्टम प्रति scalability सीमा, प्रति निर्देशिका नहीं के बारे में बात कर रहे हैं: फाइल सिस्टम में केवल एक सूची फ़ाइल और उस पर सभी का उपयोग करना चाहिए serialize है। यह सवाल के लिए काफी अप्रासंगिक है।
पूल डे

@poolie प्रश्न प्रति निर्देशिका के बारे में है जो एक फ़ाइल सिस्टम पर मौजूद है। कैटलॉग फ़ाइल प्रति फ़ाइल सिस्टम में मौजूद है, लेकिन निर्देशिका स्वयं उसी फ़ाइल सिस्टम पर भी मौजूद है। यह एक निर्देशिका में 10,000+ फाइलों से संबंधित एक प्रश्न से संबंधित है जो एकल फाइल सिस्टम पर मौजूद है। लेकिन यह सवाल 2+ साल पुराना है, इसलिए विकी लिंक के लिए धन्यवाद। मैंने नए उत्तर को शामिल करने के साथ-साथ प्रश्न में अनुभाग का सीधा लिंक शामिल करने के लिए अपना उत्तर अपडेट कर दिया है।
जेकगोल्ड

4

संक्षिप्त उत्तर: ठीक है, अगर आप 100,000 फाइलें पढ़ रहे हैं, तो मुझे उम्मीद है कि स्क्रिप्ट धीमी होगी।

दीर्घ उत्तर: इस प्रश्न का अधिक अच्छी तरह से उत्तर देने के लिए, आपको मैक पर फ़ाइल सिस्टम को देखना होगा। Mac, HFS + ( Hierarchical File System Plus ) का उपयोग करते हैं, जो एक आधुनिक फाइल सिस्टम है जिसकी सीमाएँ हैं, लेकिन केवल चरम स्थितियों में।

मेरे अनुभव से, यह लिनक्स EXT जर्नलिंग फाइल सिस्टम की तरह है। यह निर्देशिका बढ़ते समर्थन करता है, यूनिक्स की तरह अनुमतियाँ, आदि यह फ़ाइलें एक 32-बिट प्रारूप में के अनुसार संबोधित किया, फ़ाइलों को एक मात्रा +४२९४९६७२९५ में संग्रहित किया जा सकता की अधिकतम संख्या बनाने, इस स्रोत।

फ़ाइल सिस्टम आधुनिक सिस्टम पर 8 EB से बड़ी फ़ाइलों के साथ टूटना शुरू कर देता है और एक स्थान पर 2.1 बिलियन फ़ाइलों और फ़ोल्डरों को यहाँ उल्लिखित किया गया है

जिस तरह से HFS +- के लिए वास्तव में किसी भी फाइल सिस्टम को उस मामले के लिए सेटअप किया गया है, उसे देखते हुए - एक फ़ोल्डर में बहुत सारी फाइलें होने के बावजूद कुछ भी 'अजीब' नहीं होना चाहिए।

ईमानदारी से, मुझे नहीं लगता कि एक अधिक जटिल फ़ोल्डर पदानुक्रम में फ़ाइलों को वितरित करने में एक प्रदर्शन सुधार होगा। वास्तव में, यह तकनीक कम कुशल हो सकती है क्योंकि आपकी स्क्रिप्ट को निर्देशिकाओं को मध्य-प्रक्रिया में बदलने के लिए कॉल करना होगा।


सही। मैंने निर्देशिका पदानुक्रम को बदलने के बारे में सोचा था लेकिन यह अधिक जटिल एल्गोरिथ्म का कारण बनता है और मुझे संदेह है कि बहुत प्रदर्शन में सुधार हुआ है। जवाब के लिए धन्यवाद। मेरे पास वर्तमान में 200,000 फाइलें हैं और अंत में 1,000,000 हो सकती हैं। मुझे आशा है कि यह उस खराब प्रदर्शन के बिना ठीक काम करेगा।
डेसुकी हनी

@DaisukiHoney यदि आप कई फाइलों के साथ काम कर रहे हैं, तो यह देखने के लायक हो सकता है कि क्या आप चीजों को निर्देशिकाओं में बदल सकते हैं। इस स्तर पर करना मुश्किल हो सकता है, लेकिन आगे बढ़ने में चीजें थोड़ी अधिक स्थिर हो सकती हैं।
जेकगोल्ड

@JakeGould सलाह के लिए धन्यवाद। मैं पुनर्गठन के बारे में सोच रहा हूं क्योंकि मैं कुछ और फाइलें जोड़ सकता हूं। धन्यवाद।
Daisuki Honey
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.