क्या असफल mv कमांड के बाद फाइलें रिकवर की जा सकती हैं?


1

मैंनें इस्तेमाल किया mv * .. Unix में निर्देशिका की सभी सामग्री को उसके मूल फ़ोल्डर में ले जाने के लिए। वर्तमान निर्देशिका और माता-पिता दोनों में "डाउनलोड" नामक एक फ़ोल्डर था। माता-पिता में से एक को शुरू करने के लिए खाली था।

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

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


क्या आप कमांड चलाने के ठीक बाद उसी फ़ोल्डर में कोई निर्देशिका देख सकते हैं? शेष निर्देशिकाओं को ब्राउज़ करने और फ़ाइलों को अंदर देखने का प्रयास करें।
julianm

जवाबों:


3

यदि कोई नोड गायब हो गया हो, तो आप एक फ़ाइल सिस्टम जांच चलाना चाहते हैं:

fsck -fyv /dev/sdaX

आपको बदलना चाहिए sdaX अपने वास्तविक विभाजन के लिए। लेकिन जहां तक ​​मुझे पता है, यदि कोई फ़ाइल निकाल दी जाती है, तो वह हमेशा के लिए चली जाती है। इसलिए मैं हमेशा दौड़ता हूं cp और जब मैं देखता हूं तो सबकुछ ठीक है मैं चलता हूं rm। आप डेटा रिकवरी टूल के साथ भी कोशिश कर सकते हैं, लेकिन यह 100% गारंटी नहीं है कि आप सब कुछ ठीक कर लें। एक बार खाली जाने के बाद आप कभी वापस नहीं जाते


1

आपको सावधानी बरतने की आवश्यकता है mv तथा cp : वे अक्षम हैं, और आप आसानी से फाइलें खो सकते हैं, जैसे: -

mv * ..    ; # moves from current directory to parent, overwriting duplicates

मैं हमेशा उपयोग करने की सलाह देता हूं -n या -मैं ओवरराइट को रोकने के लिए। मैं भी सुझाव देता हूं -v सूचीबद्ध करने के लिए क्या किया गया था। मैंने एक बार गलती की थी (मैंने अपने कीबोर्ड पर वापस जाने के लिए # कुंजी पकड़ी थी): -

mv * other/#

इसने पहली फ़ाइल को 'अन्य / #' में स्थानांतरित कर दिया, फिर उसी '#' को हर दूसरी फ़ाइल के साथ अधिलेखित कर दिया, जिससे मुझे केवल '#' छोड़ कर, अंतिम फ़ाइल चली गई! मैंने ऐसा दोबारा नहीं किया है।

क्योंकि मैं भी विंडोज पर TCC का उपयोग करता हूं, मैंने टारगेट डायरेक्टरी में उसी नाम की फाइलों को स्थानांतरित करने के लिए अनपेक्षित रूप से उम्मीद की है: -

mv -iv * other/*    ; # In TCC, MOVE * other\* would do what I wanted

यह सामान्य रूप से विफल रहता है, जब तक कि लक्ष्य में अंतिम विस्तारित नाम एक निर्देशिका नहीं है, जिस स्थिति में वर्तमान निर्देशिका में सभी फाइलें और लक्ष्य में अन्य सभी फाइलें उसके पास ले जाया जाता है।

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

यदि आप विकल्पों को याद रखने के लिए खुद पर भरोसा नहीं करते हैं, तो निम्न कमांड (या समान) को या तो जोड़ें ~ / .Bashrc या ~ / .Bash_aliases : -

alias mv="`which mv` -iv"

तो mv * .. ओवरराइट करना चाहिए? यह अजीब है क्योंकि मूल खाली निर्देशिका वही है जो लगता है।
noktulo

हाँ, mv डिफ़ॉल्ट रूप से चुपचाप ओवरराइट करता है, हालांकि यह पुष्टि के लिए संकेत देगा कि क्या गंतव्य फ़ाइल लिखने योग्य नहीं है। मैं यह नहीं समझा सकता कि आप अपनी सभी फाइलें क्यों खो देंगे: मैं डिस्क या नेटवर्क की विफलता की उम्मीद करूंगा कि उस समय केवल फाइल खो जाए, हालांकि यह संभव है कि यह एक विफलता के बाद चलती फ़ाइलों को रखने और समान देने के लिए जारी रहे। प्रत्येक पर त्रुटि। मैं आसानी से यह जाँच नहीं कर सकता। ध्यान दें कि एक निर्देशिका को स्थानांतरित करना इसके तहत सभी फाइलों और उपनिर्देशिकाओं को अव्यवस्थित रूप से स्थानांतरित करता है।
AFH
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.