लिनक्स ट्रैश कमांड को पूर्ववत करें


24

क्या हम एक टर्मिनल में किए गए संचालन को पूर्ववत कर सकते हैं, उदाहरण के लिए, फ़ाइल विलोपन rm?

प्राप्त समाधान:

  1. एलियासिंग
  2. उपयोगिताओं को हटा दें
  3. बैकअप उपयोगिताओं
  4. LibTrash
  5. संस्करण (FUSE)

1
On rm: यह इससे एक फ़ाइल को अनलिंक करता है inode। प्रश्न: " rmकमांड जारी होने पर फाइलें कहां जाती हैं " -> unix.stackexchange.com/questions/10883/… आपके लिए भी एक अच्छा पढ़ा जा सकता है।
15

जवाबों:


62

टर्मिनल में हर ऑपरेशन के लिए कोई सामान्य "पूर्ववत" नहीं है। यदि आप उपयोग करने के बाद किसी फ़ाइल को पुनर्प्राप्त करना चाहते हैं, तो आपको rmपुनर्प्राप्ति सॉफ़्टवेयर में देखने की आवश्यकता होगी।

भविष्य की गलतियों से आपको रोकने का एक विकल्प यह है कि आप aliasफाइलों को हटाने के लिए वैकल्पिक आदेशों के लिए भाग लें। उन्हें अपने साथ जोड़ें ~/.bashrcऔर उनके बजाय उनका उपयोग करने की आदत डालें rm

  1. उर्फ रमी = 'आरएम-आई'

    यदि आप उपयोग करते हैं rmi, तो आपको भविष्य के विलोपन की पुष्टि के लिए संकेत दिया जाएगा। आदेश yजारी करने के तुरंत बाद दबाने की आदत को विकसित करने से बचने की कोशिश करें rmi, क्योंकि यह उद्देश्य को हरा देगा।

  2. आप trshअपने रीसायकल बिन (केडीई और सूक्ति पर) टर्मिनल में कमांड द्वारा हटाई गई फ़ाइलों को भी स्थानांतरित कर सकते हैं :

    alias trsh='mv --target-directory="$HOME/.Trash"'
    

    यदि आप उपयोग करते हैं trsh, तो आपके पास एक सीमित "अनिर्धारित" क्षमता होगी। उससे सावधान रहें

    trsh dir1/file1 dir2/file1
    

    अभी भी अप्राप्य डेटा हानि हो सकती है।


3
खदान से बहुत बेहतर उत्तर के लिए +1 =)
-टू-गीक

9
दूसरा उपनाम बहुत चालाक है। +1।
LiraNuna

3
कचरा () {mv $ @ ~ / .Tash; } # बैश फंक्शन, अलियास नहीं। आरएम के अपेक्षित व्यवहार को बदलना एक बुरा विचार है, आईएमएचओ।
रिचर्ड हॉकिंस

20
Aliasing के साथ जोखिम rmको rm -iहै कि यह आपको देता है कि आप सुरक्षा तंत्र आदत हो जाती है। फिर आप एक अन्य मशीन पर चलते हैं, जिसमें वह उर्फ ​​नहीं है ...
डेंट्रासी

3
जिन कारणों के लिए रिचर्ड और डेंट्रासी उल्लेख करते हैं, मैं एक कस्टम फंक्शन या उर्फ rmi-> बनाना पसंद करता हूं rm -i। यह वास्तव में एक मौजूदा कार्यक्रम के रूप में इसे प्राप्त करने के लिए एक गलती है।
टेलीमेकस

6

कमांड लाइन के लिए कोई रीसायकल बिन नहीं है।

आप कुछ विभिन्न उपयोगिताओं की कोशिश कर सकते हैं, लेकिन इस बात की कोई गारंटी नहीं है कि वे काम करेंगे।


हां, कमांड लाइन के लिए एक कचरा है। एक और जवाब में कचरा-पेटी देखें।
गौरव

ट्रैश-क्ली बहुत अच्छी है :) और ट्रश्लिब का उपयोग करता है, बस चलती फाइलों से बेहतर है।
m3nda

5

आप इस्तेमाल कर सकते हैं कचरा CLI यदि आप केडीई का उपयोग जब आप एक जीयूआई चलाते हैं। यह केडीई कचरा सुविधाओं का उपयोग कर हटाने / बहाल करने के लिए कमांड लाइन उपयोगिता है।


1
ट्रैश-क्ली गनोम ट्रैश के साथ भी काम करता है और इसे आरएम विकल्प संगतता (अलियासिंग के लिए) प्रदान करने के लिए डिज़ाइन किया गया है।
एंड्रिया फ्रांसिया

alias rm=trashइतना मत भूलो कि आपके सामान्य कमांड-लाइन स्क्रू-अप पूर्ववत बटन के साथ आते हैं।
रयान सी। थॉम्पसन

मुझे लगता alias rm=trashहै कि संभावित रूप से खतरनाक है, अगर कोई मौका है तो आप एक दिन किसी और के सिस्टम का उपयोग करेंगे और भूल जाएंगे (या ssh)। ज्यादा सुरक्षित के trashबजाय लिखने के लिए इस्तेमाल किया हो rm
स्पार्कहॉक

4

आप कमांड के rmलिए एक उपनाम बना सकते हैं trash(आपको trashपहले स्थापित करने की आवश्यकता होगी ।) इसे अपने में जोड़ें ~/.bashrc:

alias rm='trash'

इस के alias rm='mv --target-directory=$HOME/.Trash'बाद से बेहतर है ~ /। कचरा नहीं सूक्ति के लिए कचरा फ़ोल्डर है। trashवास्तविक ट्रैश फ़ोल्डर कहां है, यह पता लगाने के लिए बेहतर IMHO है।

btw मैंने इसे एक टिप्पणी में पोस्ट किया होगा, लेकिन मेरे पास पर्याप्त प्रतिनिधि नहीं है।


5
+1 के लिए "के बाद से ~ /। कचरा नहीं सूक्ति के लिए कचरा फ़ोल्डर है।" हालाँकि, rm को या तो ट्रैश में अलियास नहीं किया जाना चाहिए। यदि आप चाहते हैं तो आपको rm के बजाय कूड़ेदान का उपयोग करना चाहिए।
नगुल

सच है, लेकिन कुछ लोगों के लिए पुरानी आदतें मुश्किल से मरती हैं।
एल्विन रो

'rmtrash' एक और विकल्प है।
इताची

3

दो और तकनीकी समाधानों को अभी तक नाम नहीं दिया गया है:

  1. libtrash : एक डायनेमिक लाइब्रेरी जिसे आपके शेल में पहले से लोड किया जा सकता है, जो सिसकल्स को हटाने / हटाने से रोकती है और फाइलों को ट्रैश फ़ोल्डर में ले जाती है (बहुत ज्यादा उर्फ ​​की तरह लेकिन प्रीलोड होने पर किसी भी एप्लिकेशन के लिए काम करती है)।
  2. एक वर्जनिंग फाइल सिस्टम। यदि आप एक फ़ाइल को हटाते हैं (या संपादित करते हैं, या कॉपी करते हैं, या ...), तो आप बस एक पुरानी स्थिति में वापस आ सकते हैं। यह एक FUSE फाइल सिस्टम और इसके एक संस्करण फाइलसिस्टम के साथ किया जा सकता है ।

3

यहाँ एक बड़ा सवाल है जो संबोधित करने लायक है। शेल कमांड्स बकवास नहीं हैं (वे जो आप चाहते हैं उसकी दोहरी जांच नहीं करते हैं), और वे आपसे उम्मीद करते हैं कि आपको पता है कि आप क्या कर रहे हैं। यह मौलिक है कि उन्हें कैसे डिज़ाइन किया गया है । यह एक विशेषता है, बग नहीं।

कुछ लोगों को मर्दाना लगता है जब वे इस तरह के आदेश, जो मुझे लगता है कि बहुत मूर्खतापूर्ण है का उपयोग करें, लेकिन यह है खतरों को समझने के लिए महत्वपूर्ण है। यदि आप रूट नहीं हैं तो भी आप टर्मिनल में बहुत नुकसान कर सकते हैं। मुझे लगता है कि आपको वास्तव में बस परवाह है rm, लेकिन जब से आपने कहा कि "क्या हम टर्मिनल में किए गए कार्यों को पूर्ववत कर सकते हैं", मुझे लगा कि यह कहने लायक है। सामान्य उत्तर नहीं है, आप नहीं कर सकते।


2

विकल्प 1: एक ext2 फाइल सिस्टम से अंडरटेक्स लिनक्स फाइलें देखें । यह पृष्ठ लुनेटिक्स कंपनी के सेबेस्टियन हेटेज द्वारा लिखे गए एक कार्यक्रम की ओर इशारा करता है, जो (जैसा कि शीर्षक से पता चलता है) ने हाल ही में एक ext2 फाइल सिस्टम से फ़ाइलों को हटा दिया है। उदाहरण का उपयोग:

# undelete -d /dev/hdc3 -a 10

चेतावनी:

  • मूल वेब साइट चली गई है। लिंक, ऊपर, इंटरनेट आर्काइव के लिए है।
  • साइट (s) अंग्रेजी और जर्मन के मिश्रण में हैं।
  • जैसा कि ऊपर कहा गया है, उपकरण विशेष रूप से ext2 फाइलसिस्टम के लिए डिज़ाइन किया गया है। यह किसी अन्य फाइलसिस्टम प्रकार पर काम करने की संभावना नहीं है; विशेष रूप से अतिरिक्त एन के अलावा अन्य नहीं ।

विकल्प 2: मेरे पास मेरी मशीन पर rsnapshot (rsync) चल रहा है जो मेरे चयनित फ़ोल्डरों के प्रति घंटे स्नैपशॉट बनाता है। यह हर घंटे, 2 घंटे या जो कुछ भी आप CRON को करने के लिए कहते हैं, वह करता है। पूरे दिन के बाद यह इन स्नैपशॉट्स को एक दैनिक स्नैपशॉट में और एक सप्ताह में 7 दिनों के बाद और इसी तरह से पुन: उपयोग करता है। यह मुझे हर घंटे के लिए लगभग एक महीने या समय के लिए वापस जाने में सक्षम बनाता है! यह डिस्क स्थान के साथ बहुत अच्छा है क्योंकि यह फ़ाइलों को प्रतीकात्मक लिंक बनाता है जो कभी नहीं बदला ...


बस स्पष्ट करने के लिए, # 1 ext2 filesystems के लिए विशिष्ट है। यह एक ext3 फाइल सिस्टम पर काम नहीं करेगा।
नगुल


1

Ext2 के लिए undelete उपयोगिताओं मौजूद हैं, लेकिन अधिकांश अन्य लिनक्स फ़ाइल सिस्टम पाषाण युग में अटके हुए हैं और उनमें कोई उन्नत उपयोगिता सुविधाएँ नहीं हैं। पर्याप्त स्थान के साथ विशाल ड्राइव पर विचार करने वाले मामलों की दु: खद स्थिति एक फाइल को फिर से हटाने के लिए आम नहीं है।

तो आप तीन विकल्पों के साथ फंस गए हैं:

  1. उदाहरण के लिए, उदाहरण के लिए, नियमित रूप से बैकअप करें:

    rsync -axvRP --backup --backupdir=/backup/incr/$(date -I) /home/ /backup/root/

  2. gitअपने सभी काम के लिए एक संस्करण नियंत्रण उपकरण का उपयोग करें । हालांकि यह एक पागल के खिलाफ रक्षा नहीं करेगा rm -rजो रिपॉजिटरी को मारता है, यह नियमित परेशानियों से रक्षा करेगा क्योंकि आप git rmकच्चे नहीं का उपयोग करेंगे rm

  3. अतिरिक्त सावधान रहें और में बहुत ज्यादा विश्वास नहीं करते हैं rm -i, trash-cliऔर दोस्तों, सबसे डेटा के रूप में आप खोल पर खो देंगे आप नहीं होगा खो आकस्मिक द्वारा rm, लेकिन वे गलत पाइप, गलत लिखे गए उत्पादन फ़ाइलें, misdirected द्वारा mvऔर सामान, यानी, चीजें हैं जो ऊपर लिख देगा आपका डेटा, न केवल इसे हटाएं।

अधिकतम सुरक्षा के लिए तीनों करें।


यह ext2 आधुनिक कॉल करने के लिए बहुत प्रफुल्लित करने वाला है। नए filesystems ext2 / 3 की तुलना में अधिक जटिल ऑन-डिस्क प्रारूपों का उपयोग करते हैं, और उन स्थानों को आसानी से ढूंढना पड़ता है, जहां आपको अन-डिलीट करने के लिए फाइलें मिल सकती हैं। वे उन लोगों के लिए डिज़ाइन किए गए हैं जो उन चीज़ों का बैकअप बनाते हैं जिनकी वे परवाह करते हैं। BTW, मैं हमेशा mv और cp -i का उपयोग करता हूं, क्योंकि मैं सामान्य रूप से कुछ भी नहीं देखना चाहता हूं। मैं आम तौर पर \ rm टाइप करता हूं, क्योंकि मैंने rm को rm -i को भी अलियास किया है, लेकिन मैं इसके प्रश्न का उत्तर नहीं देना चाहता।
पीटर कॉर्ड्स

0

यह जाँच करें ... मददगार होना चाहिए http://artmees.github.io/rm/

मान लीजिए आपने किया

rm very_important_file

टर्मिनल से। इस फ़ाइल को पुनर्प्राप्त करना एक थकाऊ और हमेशा सफल प्रक्रिया नहीं है

इसके बजाय यदि आपने स्क्रिप्ट का उल्लेख किया है। आपको इस बारे में चिंता करने की आवश्यकता नहीं है क्योंकि

rm very_important_file
mv very_important_file ~/.Trash/

समतुल्य हैं। स्क्रिप्ट अधिक मामलों को संभालती है और आपके सिस्टम rmको बिल्कुल भी परिवर्तित नहीं करती है और ऐसा इसलिए है क्योंकि यह उपयोगकर्ता स्थानीय बिन फ़ोल्डर में डाल दिया जाता है ताकि यह सिस्टम rm को छाया दे और फिर भी इसे प्रभावित न करे या इसका उपयोग करने को अक्षम न करे

यह एक परिष्कृत अलियासिंग दृष्टिकोण है लेकिन बिना किसी सुविधा को खोए


1
यह अच्छा होगा यदि आप कुछ स्पष्टीकरण जोड़ सकते हैं कि यह क्या करता है और यह प्रश्न पर कैसे लागू होता है, शायद एक उदाहरण जोड़ें, आदि
slhck


0

मेरे लिए (ओपनसेप लीप 42.2, NTFS pendrive) PhotoRec - testdiskरचनाकारों द्वारा भी - काम किया गया :) हालाँकि इसमें फ़ाइल नाम नहीं हैं।

PhotoRec फाइल डाटा रिकवरी सॉफ्टवेयर है जिसे डिजिटल कैमरा मेमोरी से वीडियो, डॉक्यूमेंट्स और आर्काइव्स सहित हार्ड डिस्क, सीडी-रोम और खोई हुई तस्वीरों (जैसे फोटो रिकवरी नाम) को रिकवर करने के लिए बनाया गया है। PhotoRec फ़ाइल सिस्टम को अनदेखा करता है और अंतर्निहित डेटा के बाद चला जाता है, इसलिए यह तब भी काम करेगा, भले ही आपके मीडिया का फ़ाइल सिस्टम गंभीर रूप से क्षतिग्रस्त या सुधारित हो।

मैंने इसे खुले में मानक रिपॉजिटरी का उपयोग करके स्थापित किया है

अनुदेश


1
सुपर उपयोगकर्ता में आपका स्वागत है! कृपया पढ़ें कैसे सॉफ्टवेयर की सिफारिश करने के लिए न्यूनतम आवश्यक जानकारी कैसे सूपर उपयोगकर्ता पर सॉफ्टवेयर की सिफारिश करने पर और सुझावों। आपके उत्तर को उपयोगी रखने के लिए, भले ही प्रदान की गई कड़ी इन विवरणों को आपके उत्तर में संपादित कर दे।
मैं कहता हूं कि मोनिका
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.