क्या mvकमांड के साथ 180GB के साथ फ़ोल्डर का नाम बदलना जोखिम भरा है ?
हमारे पास एक फ़ोल्डर /dataहै जिसमें 180GB है।
हम कमांड के साथ /dataफ़ोल्डर का नाम बदलना चाहते हैं ।/BD_FILESmv
क्या ऐसा करना सुरक्षित है?
क्या mvकमांड के साथ 180GB के साथ फ़ोल्डर का नाम बदलना जोखिम भरा है ?
हमारे पास एक फ़ोल्डर /dataहै जिसमें 180GB है।
हम कमांड के साथ /dataफ़ोल्डर का नाम बदलना चाहते हैं ।/BD_FILESmv
क्या ऐसा करना सुरक्षित है?
जवाबों:
किसी फ़ोल्डर पर नाम बदलना सुरक्षित है, अगर वह उसी फ़ाइल सिस्टम में रहता है।
यदि यह एक आरोह बिंदु है ( /dataथोथा ऐसा लग रहा है कि यह मेरे लिए एक आरोह बिंदु हो सकता है, तो इसके साथ जांच करें mount), तो आपको केवल एक सरल के अलावा कुछ करने की आवश्यकता है mvक्योंकि mv /data /BD_FILESडेटा को रूट विभाजन में ले जाया जाएगा (जो नहीं हो सकता है तुम चाहते हो)।
आपको फ़ाइल सिस्टम को अनमाउंट करना चाहिए, अब खाली निर्देशिका का नाम बदलना चाहिए, /etc/fstabइस फाइल सिस्टम के लिए नए स्थान के साथ अपडेट करना चाहिए , और फिर नामांकित स्थान पर फाइल सिस्टम को रिमाउंट करना चाहिए।
दूसरे शब्दों में,
umount /datamv /data /BD_FILES(यह मानते हुए /BD_FILESकि पहले से मौजूद नहीं है, उस स्थिति में इसे पहले से बाहर ले जाएँ)/etc/fstab, से माउंट बिंदु को बदलने के /dataलिए/BD_FILESmount /BD_FILESइसमें किसी भी फाइल को कॉपी करना शामिल नहीं है, यह सिर्फ उस डायरेक्टरी का नाम बदलता है जो फाइल सिस्टम के लिए आरोह बिंदु के रूप में कार्य करता है।
यदि निर्देशिका का नाम बदलने में इसे एक नई फ़ाइल प्रणाली में स्थानांतरित करना शामिल है (जो /dataएक डिस्क पर है, जबकि /BD_FILESदूसरी डिस्क पर है, तो एक सामान्य बात यह है कि यदि आप चीजों को एक बड़े विभाजन में स्थानांतरित कर रहे हैं, तो उदाहरण के लिए) , जब तक आप जाँच नहीं कर सकते कि मैं कॉपी को ठीक कर रहा हूँ, तब तक मूल बरकरार रखते हुए डेटा कॉपी करने की सलाह दूंगा। आप इसके साथ कर सकते हैं
rsync -a /data/ /BD_FILES/
उदाहरण के लिए, लेकिन rsyncयह क्या करता है और क्या नहीं करता है इसके लिए मैनुअल देखें (उदाहरण के लिए, यह हार्ड लिंक को संरक्षित नहीं करता है)।
एक बार जब फ़ोल्डर का नाम बदल दिया जाता है, तो आपको यह भी सुनिश्चित करना होगा कि मौजूदा प्रक्रियाएं (प्रोग्राम और उपयोगकर्ता फ़ोल्डर, बैकअप आदि का उपयोग कर रहे हैं) नाम परिवर्तन के बारे में जानते हैं।
mvकरने की उम्मीद है rename, लेकिन परिस्थितियों के कारण किसी को एहसास नहीं हुआ कि यह फाइलों को कॉपी करने और मूल को हटाने की कोशिश कर रहा है। अगर मुझे पूरी तरह से निश्चित होने की जरूरत है तो एक renameसिस्टम कॉल किया जाता है और mvमेरी पीठ के पीछे "चतुर" कुछ करने की ज़रूरत नहीं है, मैं पायथन खोल और उपयोग करता हूं os.rename।
mkdir /BD_FILES && mount -M /data /BD_FILES && rmdir /data
rsyncयह है कि यह पुनरारंभ करने योग्य है।
rsync -aलगभग सभी मेटाडेटा को संरक्षित करता है, लेकिन कड़ी नहीं, एसीएल या विस्तारित विशेषताएँ ( -HAXउस के लिए जोड़ें )।
renameअलग व्यवहार के साथ अलग- अलग कमांड होते हैं। मुझे लगता है कि renameजब आप कुछ करने जा रहे हैं तो आप निश्चित होना चाहते हैं कि कमांड का उपयोग न करने के लिए पर्याप्त कारण है ।
आप निर्देशिका में प्रत्येक फ़ाइल का नाम नहीं बदल रहे हैं, आप एक फ़ाइल को / में बदल रहे हैं । ऐसा इसलिए है क्योंकि:
इस प्रकार, एक निर्देशिका का नाम बदलना, चाहे कितनी भी फाइलें हों या उसमें कितना भी डेटा हो, तुच्छ है।
यदि आप सिर्फ नाम बदलते हैं ( समान फ़ाइल सिस्टम में स्रोत और लक्ष्य ), तो यह बस एक निर्देशिका प्रविष्टि का नाम है। यह या तो सफल होता है और निर्देशिका का नया नाम होता है, या विफल रहता है जिस स्थिति में कुछ भी नहीं बदलता है * ।
यदि स्रोत और लक्ष्य अलग-अलग फ़ाइल सिस्टम पर हैं, तो डेटा को कॉपी करने की आवश्यकता है mv। फ़ाइल सिस्टम सुविधाओं में अंतर, जैसे अधिकतम फ़ाइल आकार, फ़ाइल नाम में सीमाएं, आदि, समस्याएं पैदा कर सकते हैं। समस्याओं से बचने के लिए, पहले फ़ाइलों की प्रतिलिपि बनाएँ ( cp, rsync…,) और प्रतिलिपि सफलतापूर्वक पूर्ण होने के बाद, मूल स्थान में फ़ाइलों को हटा दें।
* हालांकि कुछ कोने के मामले हैं, उदाहरण के लिए आदमी 2 नाम में BUGS अनुभाग में उल्लेख किया गया है
जैसा कि दूसरों ने कहा है, एक फ़ोल्डर का नाम बदलने से सामग्री के लिए कोई अंतर्निहित जोखिम नहीं होता है। लेकिन एक अलग तरह का जोखिम है जिस पर आप विचार कर सकते हैं।
मौजूदा प्रक्रियाओं, लिपियों, उपयोगकर्ता-परिभाषित शॉर्टकट, और कॉन्फ़िगरेशन जो मूल स्थान को संदर्भित करते हैं, इस परिवर्तन से टूट सकते हैं, और यदि पथ डेटाबेस में संग्रहीत किए जाते हैं, उदाहरण के लिए, उन्हें अपडेट करना एक बड़ा काम हो सकता है।
एक चीज जो आप कर सकते हैं, वह नई निर्देशिका नाम के लिए एक प्रतीकात्मक लिंक है, लेकिन पुराने नाम को थोड़ी देर के लिए छोड़ दें। इस बदलाव के प्रभाव का मूल्यांकन करने के लिए आपको समय मिलेगा। आप पुराने नाम को अस्थायी रूप से हटा सकते हैं, देख सकते हैं कि क्या कोई समस्या है, और यदि हैं, तो बस पुराने नाम को फिर से बनाएँ ताकि लोग काम करना जारी रख सकें, जब आपको पता चल जाए कि क्या अद्यतन करने की आवश्यकता है।
एक कमांड कुछ इस तरह से करना चाहिए:
ln -s /data /BD_FILES
mv thing1 thing2 ; ln --symbolic ./thing2 thing1। इस तरह से मुझे नया नाम मिल गया है और आसानी से पुराने की अनुपस्थिति को सिमलिंक हटाकर परीक्षण कर सकते हैं।
नाम परमाणु है। एकमात्र उचित जोखिम यह है कि mvकिसी कारण के लिए सब कुछ कॉपी करने का फैसला करता है और आधे रास्ते से दुर्घटनाग्रस्त हो जाता है। यदि आपके पास जीएनयू है mv, तो mv -Tइस जोखिम को हटा देगा।
mv -Tबताता है mvकि यह एक गैर-फ़ोल्डर में जा रहा है; जिसके कारण इसे करने से मना कर दिया mkdir()जाएगा जो बदले में एक फ़ोल्डर ले जाने पर विफल हो जाएगा और इसने किसी कारण से कॉपी करने का निर्णय लिया।
मैं mv -Tसालों पहले अपने गुरु की थीसिस पर काम करने के दौरान बग को हिलाने में शामिल था। यह बहुत सारे किनारे के मामलों पर गलत काम करता था।
दूसरी ओर, आपके पास रूट विभाजन पर 180GB उपयोगकर्ता डेटा है। आप शायद इसे रूट विभाजन से दूर करना चाहते हैं।
mvतो-iविकल्प के साथ कॉल करें ।