क्या फ़ाइल पुनर्प्राप्त करने योग्य है?
संक्षिप्त उत्तर: आमतौर पर नहीं।
@ मर्क प्लॉटनिक टिप्पणियों में बताते हैं, आप Uncompyle का उपयोग .py
करने से फ़ाइलों को पुनर्प्राप्त कर सकते हैं । यह आपकी स्थिति के लिए एकदम सही होना चाहिए।.pyc
सामान्य तौर पर, हालांकि, यह बहुत कठिन है। सैद्धांतिक रूप से आप फ़ाइलों को हटाना रद्द करने के लिए फोरेंसिक टूल का उपयोग कर सकते हैं। संभवतः मैंने जो सबसे आसान प्रयोग किया है, वह है testdisk
(उर्फ "PhotoRec")। यह केवल कभी-कभी काम करता है और यह एक धीमी प्रक्रिया है। यह आमतौर पर इसके लायक नहीं है, इसलिए, हाँ, यह संभव है , लेकिन असली जवाब "नहीं" है।
कर सकते हैं > अधिलेखित निष्पादनयोग्य नहीं बदला जा?
नहीं, निष्पादन योग्य के रूप में केवल फाइलों को पुनर्निर्देशित करने के लिए शेल को बताने का कोई मानक तरीका नहीं है। वहाँ "noclobber" है जो मौजूदा फ़ाइलों में पुनर्निर्देशन को रोक देगा, निष्पादन योग्य या नहीं, लेकिन उस पर मेरी टिप्पणियों को देखें।
भविष्य में क्या करना है?
यह मूर्खतापूर्ण लग सकता है, लेकिन भविष्य की गलतियों को रोकने के लिए, आपको शायद कुछ भी करने की आवश्यकता नहीं है। मेरी शर्त यह है कि आपने पहले ही यह सबक सीख लिया है।
मैं बहुत लंबे समय से यूनिक्स का उपयोग कर रहा हूं और सिखा रहा हूं, जबकि लोग अक्सर एक बार यह गलती करते हैं, वे शायद ही कभी इसे दोहराते हैं। क्यों नहीं? इसी कारण से चाकू से अनुभव किया गया व्यक्ति खुद को नहीं काटता: मनुष्य सीखने में अच्छा होता है। आखिरकार, सही काम करना दूसरी प्रकृति बन जाता है।
एक पाठ संपादक का उपयोग करें जो आपके लिए बैकअप बनाता है। उदाहरण के लिए, यदि आप उपयोग करते हैं emacs
, तो आपके प्रोग्राम का पिछला संस्करण mac_ip.py ~ में सेव हो जाता है। अन्य संपादकों को इसी तरह काम करने के लिए कॉन्फ़िगर किया जा सकता है (उदाहरण के लिए, "बैकअप सेट करें" .nanorc
)। संपादकों के लिए जो स्वचालित बैकअप का समर्थन नहीं करते हैं, आप अपने .bashrc में एक सरलीकृत कार्य कर सकते हैं:
myeditor() { cp -p "$1" "$1~"; editor "$1"; }
खुद के लिए प्रतियां बनाना आसान बनाएं। उदाहरण के लिए, जिस परियोजना पर आप काम कर रहे हैं, उसकी निर्देशिका में, आपके पास इस तरह के लक्ष्य के साथ मेकफाइल हो सकता है:
# Use `make tar` to backup all files in this directory.
# Tar filename will be ../<currentdirectory>-<date>.tar.gz
DIRNAME = $(shell basename `pwd`)
TIMESTAMP = $(shell date +%s)
tar:
@echo "[Tarring up ${DIRNAME}.tar.gz]"
(cd .. ; tar -zcvf "${DIRNAME}-${TIMESTAMP}.tar.gz" "${DIRNAME}")
(नोट: स्टैकएक्सचेंज टीएबी को 4 रिक्त स्थान के रूप में गलत बता रहा है।)
इसी तरह, आप एक ऐसा मेकफाइल लक्ष्य बना सकते हैं जो rsync
एक दूरस्थ यूनिक्स होस्ट के लिए करता है जिसे आप ssh
एक्सेस करते हैं। (उपयोग करें ssh-copy-id
ताकि आपसे आपका पासवर्ड बार-बार न पूछा जाए।)
का उपयोग करें git
। आरंभ करने पर कई उत्कृष्ट ट्यूटोरियल हैं। कोशिश करो man gittutorial
, man gittutorial-2
और man giteveryday
। अपनी खुद की गिट रिपॉजिटरी सेट करना कठिन नहीं है, लेकिन आप github.com पर किसी भी कीमत पर एक रिमोट रिपॉजिटरी भी बना सकते हैं।
यदि उपरोक्त समाधान बहुत भारी हैं, तो आप छोटी स्क्रिप्ट को gist.github.com पर सहेज सकते हैं । हालांकि वेब ब्राउज़र से पेस्ट या अपलोड करना संभव है, मैं चीजों को सुपर आसान बनाने के लिए कमांड लाइन जिस्ट इंटरफेस का उपयोग करने की सलाह देता हूं ।
मैं "noclobber" का उपयोग करके दृढ़ता से हतोत्साहित करता हूं।
हां, यदि आप चुनते हैं, set -o noclobber
तो आप ऐसा कर सकते हैं जब भी आप किसी मौजूदा फ़ाइल को अधिलेखित करने का प्रयास करेंगे तो आपको त्रुटि संदेश मिलेंगे। यह एक बुरा विचार है, मेरी राय में। *
यह शेल को गैर-मानक तरीके से बनाता है जिसमें कोई भी दृश्य संकेत नहीं है कि क्या यह सक्षम है। आपको सामान्य चीजें करने के लिए एक अलग वाक्यविन्यास का उपयोग करना होगा। सबसे बुरी बात यह है कि अगर आपको नोबलर की आदत हो जाती है, तो किसी दिन आप एक और यूनिक्स मशीन का इस्तेमाल कर सकते हैं, बिना नोकबर्बर के और इस तरह की दुर्घटना फिर से हो सकती है।
जैसा कि आप शायद जानते हैं, यूनिक्स खोल विशेषज्ञों के लिए एक तेज उपकरण होने के लिए डिज़ाइन किया गया था। यह उपयोग करने के लिए तेज़ है और आपके रास्ते में नहीं आएगा - और यह आपको काट देगा यदि आप भूल जाते हैं कि कौन सा अंत नुकीला है। लेकिन, जितना अधिक आप इसका उपयोग करते हैं, उतना ही मुझे लगता है कि आप इसकी सराहना करेंगे कि यह एक अच्छी बात हो सकती है।
* फुटनोट: शायद नमक के दाने के साथ मेरी राय लें। मैं भी उस तरह का व्यक्ति हूं जो सोचता है कि साइकिल प्रशिक्षण के पहिये एक बुरा विचार हैं।
set -o noglobber
और बैश अब मौजूदा फ़ाइलों में पुनर्निर्देशित नहीं करेंगे। विवरण के लिए यहाँ देखें: cyberciti.biz/tips/howto-keep-file-safe-from-overwriting.html