स्टीफन किट के उत्तर पाने और संभावित समाधान के रूप में इस कमांड पर चर्चा करने के बाद:
sudo mv -i ~/my_data_on_60GB_partition/* /media/admin/my_data/
मैंने इसे चलाने का फैसला किया जब तक कि मुझे अपना सिर नहीं मिला जब तक यह नहीं हो रहा था, यह उत्तर बताता है कि मैंने क्या पाया और क्या कर रहा था।
मैं ग्नू का उपयोग कर रहा हूं, mv
जो फ़ाइलों को लक्ष्य में कॉपी करता है, उसके बाद ही यदि कॉपी ऑपरेशन सफल होता है, तो यह मूल को हटा देता है।
हालाँकि मैं mv
इस बात की पुष्टि करना चाहता था कि क्या यह अनुक्रम एक समय में एक फ़ाइल करता है, अगर यह सच था, तो मूल फ़ोल्डर सामग्री को दो भागों में साफ कर दिया जाएगा, एक भाग गंतव्य पर स्थानांतरित हो गया, दूसरा अभी भी स्रोत पर पीछे रह गया। और संभवतः एक फाइल होगी जो कॉपी के दौरान बाधित हुई थी जो दो निर्देशिकाओं के बीच आम होगी - और यह संभवतः विकृत होगी।
उन फ़ाइलों की खोज करने के लिए जो दो निर्देशिकाओं के बीच सामान्य थीं, मैं भाग गया:
~% sudo diff -r --report-identical-files my_data_on_60GB_partition/. /media/admin/mydata/. | grep identical | wc -l
14237
यह परिणाम सुझाया गया कि स्रोत और लक्ष्य निर्देशिका दोनों में एक ही फ़ाइलों के 14,237 उदाहरण हैं, मैंने फ़ाइलों की मैन्युअल रूप से जाँच करके पुष्टि की है - हाँ दोनों निर्देशिकाओं में समान फ़ाइलों के कई थे। इससे पता चलता है कि केवल mv
बड़ी फ़ाइलों की प्रतिलिपि बनाने के बाद ही यह स्रोत फ़ाइलों को हटाने का कार्य करता है। कमांड info
पर एक त्वरित लुकअप mv
दिखाया गया
यह [ mv
] पहले कुछ समान कोड का उपयोग cp -a
करता है जो अनुरोधित निर्देशिकाओं और फ़ाइलों की प्रतिलिपि बनाने के लिए उपयोग किया जाता है , फिर (प्रतिलिपि को सफल मानकर) यह मूल को हटा देता है। यदि प्रतिलिपि विफल हो जाती है, तो गंतव्य विभाजन पर कॉपी किया गया भाग हटा दिया जाता है।
मैंने कमांड नहीं चलाया, लेकिन मुझे संदेह है कि अगर मैंने चलाने की कोशिश की
sudo mv -i ~/my_data_on_60GB_partition/* /media/admin/my_data/
-i
शीघ्र से पहले ऊपर लिख संभावना 14,000 से अधिक बार ट्रिगर होता।
तो फिर यह जानने के लिए कि नई बनाई गई निर्देशिका में कुल कितनी फाइलें हैं:
~% sudo find my_data_on_60GB_partition/ -type f -a -print | wc -l
14238
तो फिर अगर नई निर्देशिका में कुल 14238 नियमित फाइलें थीं और 14237 स्रोत में समान मूल वापस थीं, तो इसका मतलब है कि नई निर्देशिका में केवल एक फ़ाइल थी जो स्रोत पर एक समान फ़ाइल वापस नहीं थी। यह जानने के लिए कि वह फ़ाइल क्या थी, मैं स्रोत की दिशा में वापस rsync चला गया:
~% sudo rsync -av --dry-run my_data_on_60GB_partition/ /media/admin/my_data
sending incremental file list
./
Education_learning_reference/
Education_learning_reference/Business_Education/
Education_learning_reference/Business_Education/Business_education_media_files/
Education_learning_reference/Business_Education/Business_education_media_files/Jeff Hoffman - videos/
Education_learning_reference/Business_Education/Business_education_media_files/Jeff Hoffman - videos/Jeff and David F interview/
Education_learning_reference/Business_Education/Business_education_media_files/Jeff Hoffman - videos/Jeff and David F interview/018 business plans-identifying main KPIs.flv
sent 494,548 bytes received 1,881 bytes 330,952.67 bytes/sec
total size is 1,900,548,824 speedup is 3,828.44 (DRY RUN)
एक त्वरित जाँच ने पुष्टि की कि यह विकृत फ़ाइल थी, जहाँ फ़ाइल स्रोत और गंतव्य, गंतव्य फ़ाइल = 64MB, मूल = 100MB दोनों पर मौजूद थी। यह फ़ाइल और इसकी निर्देशिका पदानुक्रम अभी भी रूट के स्वामित्व में थी और अभी तक मूल अनुमतियाँ बहाल नहीं हुई थीं।
तो संक्षेप में:
- सभी फाइलें जो
mv
कभी नहीं पहुंची थीं, वे अभी भी अपने मूल स्थानों में वापस हैं (जाहिर है)
mv
पूरी तरह से कॉपी करने वाली सभी फाइलें अभी भी स्रोत निर्देशिका में अपनी मूल प्रतियां थीं
- फ़ाइल जो केवल आंशिक रूप से कॉपी की गई थी, अभी भी मूल निर्देशिका में वापस आ गई है
दूसरे शब्दों में, सभी मूल फाइलें अभी भी बरकरार थीं और इस मामले में समाधान केवल नई निर्देशिका को हटाना था!
Control-Z
बजाय टाइप करने के लिए (रुकने के लिए) आदत में जाओControl-C
। इस स्थिति में, आप यह देख पाएंगे कि उस समय कौन सी फ़ाइल स्थानांतरित की जा रही थी और इसलिए यह जानें कि कौन सी फ़ाइल आंशिक रूप से कॉपी की गई थी। फिर आप शांति से तय कर सकते हैं कि आगे कैसे बढ़ना है। (kill -stop
Tty में नहीं प्रक्रियाओं के लिए उपयोग करें )।