जवाबों:
लिनक्स (अन्य यूनियनों की तरह) मूल रूप से एक पूर्ववत सुविधा प्रदान नहीं करता है। दर्शन यह है कि अगर यह चला गया, यह चला गया। यदि यह महत्वपूर्ण था, तो इसे वापस किया जाना चाहिए था।
एक फ्यूज फाइलसिस्टम है जो स्वचालित रूप से पुराने संस्करणों की प्रतियों को रखता है: कॉपीफैक्स , सभी अच्छे वितरणों में उपलब्ध। बेशक, यह बहुत सारे संसाधनों का उपयोग कर सकता है।
इस तरह की दुर्घटनाओं से बचाव का सबसे अच्छा तरीका एक संस्करण नियंत्रण प्रणाली (सीवीएस, बाज़ार, दर्क्स, गिट, मर्क्यूरियल, तोड़फोड़, ...) का उपयोग करना है। इसे सीखने में थोड़ा समय लगता है, लेकिन मध्यम और दीर्घावधि में यह काफी कम हो जाता है।
दुर्भाग्यवश नहीं।
-i
पर विकल्प भी पसंद नहीं है rm
। मेरे यूनिक्स सिस्टम को मेरा हाथ नहीं पकड़ना चाहिए।
नहीं, किसी भी यूनिक्स में कोई जादुई पूर्ववत् नहीं है। यूनिक्स मानता है कि आप जानते हैं कि आप क्या कर रहे हैं। पूर्ववत समर्थन के लिए VCS का उपयोग करें (आपके पाठ संपादक ने शायद इसे भी बनाया है)।
अधिकांश फाइलसिस्टम में पारदर्शी तरीके से इसे करने की क्षमता नहीं होती है।
मैक और विंडोज़ पर क्रमशः टाइम मशीन और सिस्टम रिस्टोर सिर्फ बैकअप / चेंज कंट्रोल सिस्टम हैं।
कमांड लाइन में कोई पूर्ववत नहीं है। हालाँकि, आप कमांड को चला सकते हैं rm -i
और mv -i
। यह आपको "क्या आपको यकीन है?" आदेश को निष्पादित करने से पहले प्रश्न।
स्टार्टअप स्क्रिप्ट (उदाहरण के लिए ) ~/.bashrc
या इसके लिए एक उपनाम जोड़ना भी संभव है /etc/bash.bashrc
:
alias remove='rm -i'
alias move='mv -i'
संपादित करें: नीचे दिए गए सुझावों के द्वारा, मैंने डिफ़ॉल्ट कमांड को उपनाम करने के लिए अपनी सलाह को हटा दिया है। इसके बजाय, यह अब नई कमांड का परिचय देता है)।
mv -i
केवल तभी संकेत देता है जब यह एक फ़ाइल को अधिलेखित कर देगा (जो इसे उपयोगी और अप्रिय नहीं बनाता है)। उसी तरह से, alias cp='cp -i'
।
कारण यह है कि लिनक्स / यूनिक्स सिस्टम के पास एक undelete नहीं है, जिस तरह से अधिकांश फाइल सिस्टम उनकी जानकारी संग्रहीत करते हैं। फ़ाइल मेटा-जानकारी सभी डिस्क के सामने डिस्क के बाकी हिस्सों में संदर्भ के साथ संग्रहीत होती है। आमतौर पर, अधिकांश फाइल सिस्टम इस मेटा-एरिया में एक फाइल में 10 ब्लॉक आवंटित करते हैं। पहले 7 में पहले 7 इनोड का उल्लेख है। 8 वें और 9 वें इनोडेस (दोगुने लिंक वाले ब्लॉक) की सूचियों में जाते हैं और 10 वीं सूची की सूचियों की सूची (ट्रिपली लिंक्ड ब्लॉक) पर जाती है। यह फ़ाइल सिस्टम से फ़ाइल सिस्टम (ext4, jfs, xfs, आदि) में भिन्न होता है, लेकिन ब्लॉक की ये सूची आमतौर पर 2GB से लेकर कई टीबी तक कहीं भी फ़ाइल आकार को संबोधित कर सकती है।
लेकिन क्योंकि यह सारी जानकारी डिस्क के सामने संग्रहीत है, जब कोई फ़ाइल मिटा दी जाती है, तो डिस्क पर इनोड्स को संदर्भित करने का कोई तरीका नहीं है कि वे मेटा-डेटा का क्या उपयोग करते हैं। इसके विपरीत FAT32 और NTFS वास्तव में फाइलों के साथ कुछ हेडर सूचनाओं को संग्रहित करते हैं, जिससे यह पहचानना आसान हो जाता है कि ब्लॉक का एक सेट किस फाइल का उपयोग करता है (ताकि उस स्थान को अभी तक नई फ़ाइलों द्वारा पुनः प्राप्त नहीं किया गया है)। लिनक्स काम में, जब आप कुछ हटाते हैं, तो दक्षता के लिए नए डेटा को तुरंत अधिलेखित किया जाना लगभग हमेशा पहली चीज है।
यदि आप वास्तव में एक पूर्ववत सुविधा चाहते हैं, तो स्रोत नियंत्रण का उपयोग करें। तोड़फोड़ वास्तव में एक उपयोगकर्ता मशीन पर बहुत अच्छी तरह से काम करता है। मैं अपने घर प्रणाली पर अपनी सभी व्यक्तिगत फ़ाइलों को नियंत्रित करने के लिए इसका उपयोग करता हूं। यह ओवरकिल की तरह लगता है, आपदा तक, एक दुष्ट स्क्रिप्ट या कमांड लाइन टाइपो हिट।
rm -r .
हालांकि यह आपकी रक्षा नहीं करेगा । ;)
rm -r project.git
। सौभाग्य से अगर आप किसी अन्य सर्वर को किसी दूरस्थ सर्वर पर रखते हैं जो कि होने की संभावना नहीं है
rm -r .
। वास्तव में मुझे बेवकूफ।
एक चीज़ जो मुझे अपने .bashrc में जोड़ना पसंद है वह एक कॉपी और फंक्शन को हटाने की है। कुछ इस तरह:
cprm(){
cp -p $1 ~/deleted/$1
rm $1
}
लेकिन आपको cmm टाइप करने की आदत डालनी होगी, rm नहीं।
जाहिर है कि यदि आपके पास सीमित डिस्कस्पेस है, तो आपको हटाए गए क्षेत्र के शीर्ष पर रखने की आवश्यकता होगी।
"$1"
:।
GitFS एक फ़्यूज़-आधारित फ़ाइल सिस्टम है, जो स्वचालित रूप से diff
संस्करणों के बीच गणना करता है और उन पर पुनर्स्थापना / ब्राउज़िंग की अनुमति देता है।
वेबपेज: https://www.presslabs.com/gitfs