एक डायरेक्टरी में कितनी फाइल्स हैं? (नेट से डेटा डाउनलोड करना)


19

अभिवादन,

मैं विभिन्न फोटो वेबसाइटों से छवियों को संसाधित करने के लिए कुछ स्क्रिप्ट लिख रहा हूं। अभी मैं एक ही निर्देशिका में अलग-अलग पाठ फ़ाइलों में यह सभी डेटा संग्रहीत कर रहा हूँ।

निर्देशिका वेब सुलभ है। एक अंतिम उपयोगकर्ता एक वेब सेवा के लिए एक कॉल करता है जो उपयोगकर्ता को फाइल की आवश्यकता के लिए रास्ता देता है।

मैं सोच रहा था कि इन सभी फाइलों को एक ही डायरेक्टरी में रखने से मुझे किस स्टेज पर असर पड़ेगा? (यदि कोई)



जवाबों:


12

आपके द्वारा उपयोग की जा रही फाइलसिस्टम के अनुसार प्रदर्शन भिन्न होता है।

  • वसा: इसे भूल जाओ :) (ठीक है, मुझे लगता है कि सीमा प्रति निर्देशिका 512 फाइलें है)
  • NTFS: यह सोचा था कि यह प्रति फ़ोल्डर 4billion फाइलें पकड़ सकता है, यह अपेक्षाकृत जल्दी खराब हो जाता है - एक हजार के आसपास आप प्रदर्शन के मुद्दों को नोटिस करना शुरू कर देंगे, कई हजार और आप देखेंगे कि एक्सप्लोरर काफी समय से लटका हुआ है।
  • EXT3: शारीरिक सीमा 32,000 फाइलें है, लेकिन कई हजार फाइलों के बाद भी पूर्णता ग्रस्त है।

  • EXT4: सैद्धांतिक रूप से असीम

  • ReiserFS, XFS, JFS, BTRFS: ये एक डायरेक्टरी में बहुत सारी फाइलों के लिए अच्छे हैं क्योंकि वे अधिक आधुनिक हैं और कई फाइलों को संभालने के लिए डिज़ाइन किए गए हैं (अन्य को उन दिनों में डिज़ाइन किया गया था जब HDD को MB नहीं GB में मापा जाता था) । प्रदर्शन बहुत सारी फ़ाइलों (ext4 के साथ) के लिए बहुत बेहतर है क्योंकि वे दोनों एक द्विआधारी खोज प्रकार एल्गोरिथ्म का उपयोग करते हैं जो आप चाहते हैं कि फाइल प्राप्त करने के लिए (अन्य एक अधिक रैखिक एक का उपयोग करें)।


6
ये गलत है। EXT3 में 32000 फाइलों की सीमा नहीं है। 32000 उपनिर्देशिकाओं की सीमा है। मुझे यहाँ 300000 से अधिक फाइलों के साथ एक निर्देशिका मिली है और यह अच्छा प्रदर्शन करती है।
davidsheldon

1
काफी हद तक सही है - फ़ाइल सीमा पूरी फाइल सिस्टम की इनोड्स पर सीमा है, लेकिन आप 32k लिंक (यानी सबडिर) तक सीमित हैं।
gbjbaanb

वर्तमान NTFS के लिए कथन भी सत्य नहीं है, यह 4,294,967,295 (2 ^ 32 - 1) तक पकड़ सकता है: Technet.microsoft.com/en-us/library/cc781134%28WS.10%29.aspx
Fleshgrinder

फ़ाइलों के साथ उप-निर्देशिकाओं को भ्रमित न करें, CentOS मशीन पर मेरे पास 32000 उप-निर्देशिकाएं थीं, सीमा तक पहुंच गई, मैंने सभी फ़ाइलों को उस एक निर्देशिका में स्थानांतरित कर दिया और अभी भी ठीक काम करता है।
adrianTNT


8

मैं एक वेब सर्वर द्वारा सेवा के लिए छवियों को संग्रहीत करता हूं, और मेरे पास EXT3 पर एक निर्देशिका में 300,000 से अधिक छवियां हैं। मुझे प्रदर्शन की कोई समस्या नहीं है। इसे स्थापित करने से पहले, मैंने एक निर्देशिका में 500k छवियों के साथ परीक्षण किया, और बेतरतीब ढंग से फाइलों को नाम से एक्सेस किया, और निर्देशिका में 10k छवियों पर 500k के साथ कोई महत्वपूर्ण मंदी नहीं थी।

मैं केवल यह देख सकता हूं कि नए को दूसरे से अलग करने के लिए सिंक करने के लिए मुझे rsyncपूरी निर्देशिका पर चलना होगा, और इसे अभी हाल के एक हजार या उससे अधिक उप निर्देशिका को सिंक करने के लिए नहीं कह सकता।


खैर, एक दूसरे सर्वर के साथ सामंजस्य बनाने के लिए मुझे लगता है कि आपको एक संरचना और एल्गोरिथ्म बनाना होगा जो परिवर्तनों को रखता है, फिर यह लॉग आपको बहुत अधिक समय बचा सकता है।
बहादिर तस्देमीर १३'१६

+1 यह वास्तव में प्रश्न का उत्तर देता है।
कुबंज़िक

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

3

एक फ़ोल्डर में फ़ाइलों की मात्रा सैद्धांतिक रूप से असीम हो सकती है। हालांकि, हर बार जब ओएस फ़ाइलों की खोज करने के लिए विशिष्ट फ़ोल्डर तक पहुंच जाएगा, तो उसे फ़ोल्डर में सभी फ़ाइलों को संसाधित करना होगा। 500 से कम फ़ाइलों के साथ, आप किसी भी देरी को नोटिस नहीं कर सकते हैं। लेकिन जब आपके पास एक फ़ोल्डर में हजारों फाइलें हैं, तो एक साधारण फ़ोल्डर सूची कमांड (ls या dir) बहुत लंबा रास्ता तय कर सकती है। जब इन फ़ोल्डरों को FTP के माध्यम से एक्सेस किया जा सकता है, तो यह वास्तव में बहुत धीमा होगा ...

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


लेकिन फ़ाइल को सीधे एक्सेस करने से निर्देशिकाओं के साथ अड़चनें दूर हो जाएंगी या एक निर्देशन तक पहुँचने के लिए अभी भी एक अंतर्निहित खोज कॉल होगी? (लिनक्स, डेबियन)
स्टीव

3
सीधे फ़ाइल तक पहुँचने से ये समस्याएँ कम होंगी। मैं ext3 पर परीक्षण कर चुका हूं, और एक निर्देशिका में 500000 फ़ाइलों वाली नाम से एक फ़ाइल तक पहुंचना 1000 से एक की तुलना में काफी धीमा नहीं है। जाहिर lsहै एक समस्या है।
davidsheldon

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

1

यदि 1000 से अधिक फाइलें हैं और फ़ोल्डर को ब्राउज किया जाएगा (यानी इंटरनेट या एक्सप्लोरर के माध्यम से) या 5000 फाइलें अन्यथा।


0

जैसा कि @skaffman बताते हैं, सीमाएं ऑपरेटिंग सिस्टम पर निर्भर करती हैं। आपके पुराने OS पर सीमा से प्रभावित होने की संभावना है। मुझे याद है कि सोलारिस का एक पुराना संस्करण प्रति निर्देशिका 32768 फाइलों तक सीमित था।

सामान्य समाधान है किसी प्रकार के हैशिंग का उपयोग करना, अर्थात साइरस इमैप सर्वर उपयोगकर्ताओं को एक अल्फाबेट हैश द्वारा विभाजित करता है:

/var/spool/imap/a/user/anna/
/var/spool/imap/a/user/albert/
/var/spool/imap/d/user/dan/
/var/spool/imap/e/user/ewan/

1
धन्यवाद, मैं निश्चित रूप से जगह में एक बार एक dir 2k फ़ाइलों से अधिक है होगा! :)
स्टीव

इस सवाल के कुछ अच्छे जवाब हैं: serverfault.com/questions/95444/…
davey

मेरे अंगूठे का सामान्य नियम यह है कि एक निर्देशिका में लगभग 20,000 से अधिक फाइलें एक अच्छा विचार नहीं है। अधिकांश आधुनिक फाइलसिस्टम उस कई फाइलों के साथ ठीक करते हैं। एक बार जब आप एक निर्देशिका में 32k फ़ाइलों को हिट करते हैं, तो कुछ फाइल सिस्टम जैसे ext3 में गंभीर प्रदर्शन समस्याएँ होने लगेंगी।
फिल हॉलनबैक

फिल - क्या आपके पास प्रदर्शन की समस्याओं के बारे में 32k फ़ाइलों के साथ ext3 के साथ कोई जानकारी है, मैं किसी भी समय 300k से अधिक के साथ नहीं देख रहा हूं शायद यह ऐसा कुछ है जो मेरे उपयोग के पैटर्न को प्रभावित नहीं कर रहा है।
davidsheldon

मेरी पिछली नौकरी में वैज्ञानिक सॉफ्टवेयर एक निर्देशिका में बहुत सारी छोटी (कुछ k प्रत्येक) फाइलें उत्पन्न करेगा। हम निश्चित रूप से देखा कि> 32k फ़ाइलों निर्देशिका के लिए पढ़ा बार बेहद गले में गोली मार देंगे। बस एक निर्देशिका पर 'ls' चलाना, जिसके साथ कई फाइलें एक मिनट या उससे अधिक का समय लेगी।
फिल होलेनबैक

0

यदि आप किसी फ़ाइल को सीधे एक्सेस कर रहे हैं तो डायरेक्टरी में फाइलों की संख्या कोई गति समस्या नहीं है।

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

gbjbaanb ext3 की अधिकतम फ़ाइल आकार के बारे में उनके उत्तर में गलत है। आम तौर पर ext आपके डिस्क पर फ़ाइलों की संख्या को सामान्य रूप से सीमित करता है। आप अधिक फ़ाइलें नहीं बना सकते हैं तो आपके पास इनोड टेबल है। वह कई फाइलों के साथ अधिक प्रदर्शन के लिए reiserfs का सुझाव देने में सही है


0

NTFS (विंडोज 7, 64 बिट) में 10K फ़ाइलों के साथ चेक किया गया फ़ोल्डर। किसी भी दृश्य (सूची, चिह्न आदि) में 10K छवियों के साथ फ़ोल्डर काम करता है और किसी भी समझदार देरी के बिना स्क्रॉल करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.