मुझे लगता है कि आप फ़ाइल के मूल स्टेट को देखो और inode
जो फ़ाइल के पहचानकर्ता है देखने के लिए होगा। अगर फ़ाइल एक विभाजन/फाइल सिस्टम/ड्राइव से दूसरे में नहीं चली गई (जो वास्तव में एक कॉपी-अप-डिलीट-मूल ऑपरेशन होना चाहिए), तो inode
वही होगा।
दुर्भाग्यवश, आमतौर पर inode
एस की कोई लुकअप तालिका नहीं है, ताकि उनका नया नाम/स्थान प्राप्त हो सके। आपको पूरी प्रणाली को व्यवस्थित रूप से खोजना होगा, जो शायद इतना बुरा नहीं हो सकता है कि आप पहले संभावित स्थानों को देख सकते हैं। या यदि आप केवल सीमित क्षेत्र की खोज कर सकते हैं।
आप एक अस्थायी हार्ड लिंक (रिकार्डो का विचार) का उपयोग यह पता लगाने के लिए कर सकते हैं कि इसे स्थानांतरित करने के बजाय हटा दिया गया है या नहीं। जब आप अपना कड़ी लिंक बनाते हैं तो लिंक काउंटर की संख्या 1 से 2 में बदल जाएगी, और आपके अस्थायी हार्ड लिंक के समकक्ष को हटाए जाने पर 2 से 1 तक बदल जाएगी। अगर इसे हटा दिया गया है, तो आपको फ़ाइल के गंतव्य की तलाश करने की आवश्यकता नहीं है।
यदि केवल हैं, तो इस क्षेत्र में कुछ हज़ार फाइलें कहें, यहां पर समाधान बहुत अच्छी तरह से काम करना चाहिए, यदि आपके सिस्टम के आधार पर और अधिक है, तो यह काम कर सकता है, लेकिन देरी हो सकती है।
यदि आप देरी को कम करना चाहते हैं, तो आपके पास फाइलों का एक SQL डेटाबेस हो सकता है जिसे आप पहले ही inode
एस के बारे में जानते हैं। उदाहरण के लिए, /folder/filea
और /folder/fileb
दोनों अलग-अलग inode
एस के साथ मौजूद हैं। जब fileb
filec
पर ले जाया गया है, तो आपको stat
filea
inode
की तलाश करने की आवश्यकता नहीं है क्योंकि आप पहले से ही इसे पहले देख चुके हैं। इस तर्क को नाटकीय रूप से stat
आदेशों की संख्या को कम करना चाहिए। हालांकि, अगर filea
हटा दिया गया है और fileb
filea
की जगह में स्थानांतरित किया गया है, तो इस नाटकीय कमी विधि को कोई परिणाम नहीं मिलेगा, इस मामले में आपको पूरी कार्य निर्देशिका खोजने के लिए वापस गिरना होगा।
आपके पास अभी भी यह सुनिश्चित करने का विकल्प है कि ओएस फ़ोल्डर्स /etc
या /dev
जैसे हैं। केवल अंतिम उपाय के रूप में उपयोग किया जाता है।जिसे आप कभी भी खोजना नहीं चाहते हैं, मानते हैं कि आप अस्थायी हार्ड लिंक का उपयोग करके हटाना का पता लगा सकते हैं।
आपका कामकाजी क्षेत्र कितना बड़ा है? क्या आप निश्चित रूप से जानते हैं कि फ़ाइल हमेशा एक निश्चित कार्य फ़ोल्डर में एक स्थान से दूसरे स्थान पर ले जाया जाएगा? आपकी समस्या पर्यावरण पर अतिरिक्त विवरण सहायक होंगे।
स्रोत
2011-11-21 19:34:33
शायद आप कॉलबैक में फ़ाइल नाम के साथ कुछ कर सकते हैं? लिनक्स और विंडोज को घटना के साथ एक फ़ाइल नाम वापस करना होगा। –
@ क्रिस बिस्कार्दी मैं एक मैक लड़का हूं, इसलिए फाइलनाम हमेशा मेरे सिस्टम पर 'शून्य' है; मैंने कहीं और परीक्षण नहीं किया है। मुझे यह जानकर उत्सुकता होगी कि फ़ाइल फ़ाइल (या हटाए जाने पर) लिनक्स/विंडोज के तहत 'फ़ाइल नाम' तर्क क्या है। –
हाँ, मैं भी एक मैक लड़का हूँ। मैंने अभी कुछ निक्स सर्वर पर कुछ सामानों का परीक्षण किया है, लेकिन जब मैंने एक फ़ाइल mv'd किया तो कोई घटना नहीं निकाल दी गई थी। शायद v0.6.1 में एक बग? वैसे भी, आप fs.watch से प्राप्त करते हैं, फ़ाइल नाम है, कोई रास्ता नहीं है। fs.watchFile हालांकि एक स्टेट ऑब्जेक्ट देता है, उपयोगी हो सकता है। –