हटाए गए फ़ाइलों के साथ कोई आरएम लॉग है?


1

क्या यह जांचने का कोई तरीका है कि हाल ही में rmकमांड के साथ क्या हटाया गया था ?


1
नहीं, माफ करिए। जरूरत पड़ने पर आप हार्डडिस्क रिकवरी टूल का उपयोग कर सकते हैं, लेकिन कोई लॉग नहीं हैं।
एफ। होरी

जवाबों:


3

कुछ अलग उपाय

कोई लॉग नहीं है, लेकिन अगर आप चाहते हैं ...

हटाए गए प्रविष्टियों के लिए देखें और लॉग करें

आप पुनरावर्ती और मॉनिटर मोड inotifyमें पुस्तकालयों का उपयोग कर सकते हैं :

inotifywait -e delete --timefmt %c --format '%T %_e %w %f' -r -m / >/path/logfile
Setting up watches.  Beware: since -r was given, this may take a while!
Watches established.
Fri Jul 19 11:57:39 2013 DELETE /tmp/ testfiletodelete
Fri Jul 19 11:57:46 2013 DELETE /home/user/ testfiletodelete

यह एक sysadmin दृष्टिकोण है: सभी उपयोगकर्ता, सभी निर्देशिका और माउंट किए गए बिंदु ...

चेतावनी यह एक छोटे से ओवरकिल पढ़ा जा सकता है ध्यान से आदमी पृष्ठ और कुछ विकल्प जैसे जोड़ें--exclude

पैच rm कमांड

आप अपने लिए कुछ जोड़ सकते हैं .bashrc...

ट्रैश कमांड पर जाने के लिए डिलीटrm से ट्रांसफ़ॉर्म करें

mkdir -p $HOME/.Trashcan
rm() {
    local destdir=$(mktemp -d $HOME/.Trashcan/trash-XXXXXXXXX);
    mkdir $destdir/files
    echo $0 $@ >$destdir/command
    set >$destdir/environ
    mv -t $destdir/files $@
} 

इसलिए हर बार जब आप rmअपने बैश में आते हैं, तो फ़ाइलों को एक डायरेक्टरी में ले जाया जाएगा, कमांड और एनवायरन को भी सहेजा जाएगा।

जैसा कि प्रत्येक rmनई निर्देशिका को सही ढंग से दिनांकित करेगा, उपयोग करने की कोई आवश्यकता नहीं है date

rmकमांड में लॉग स्टेप जोड़ना ।

लेकिन अगर आप उपयोगकर्ता लीवर में अपना ऑपरेशन लॉग करना चाहते हैं:

rm() {
   date >>$HOME/.rm.log +"%a %d %b %Y %T: rm $@"
   /bin/rm $@
}

काम कर सकता था।

नोटा 1

जैसा कि @slhck ने ठीक ही कहा: सामान्य आदेशों को फिर से परिभाषित करने से नए उपयोगकर्ताओं के लिए बुरा व्यवहार हो सकता है, इसलिए यदि आप ऐसे मानकों को संशोधित करते हैं, तो आपको किसी अन्य सिस्टम पर काम करते समय यह नहीं भूलना चाहिए !

नोटा २

यह पैच केवल rmइंटरेक्टिव यूजर शेल द्वारा संचालित कमांड है। आप संपादित कर सकते हैं /etc/bashrcउन्हें सभी उपयोगकर्ताओं के लिए बनाने के लिए है, लेकिन सब पर, केवल बैश उपकरण प्रभावित हो सकता है।

यदि फ़ाइलों को नमूने के लिए हटा दिया जाता unlinkहै perl, तो यह इसके द्वारा लॉग नहीं किया जाएगा।

या यहां तक ​​कि अगर ksh, dashया फिर बैश के बजाय लागू किया जाता है ... कोई लॉग नहीं।

नोटा 3

मूल आदेश तक पहुंचने के लिए, aliasया व्यक्तिगत के बजाय function, आपको पूर्ण पथ को सटीक करना /bin/rm myfileहोगा : हटा देगा myfileलेकिन rmफ़ंक्शन को दरकिनार करके , कुछ भी लॉग नहीं किया जाएगा।


लेकिन यह वास्तव में आपकी फ़ाइलों को नष्ट नहीं करता है, और यह प्रश्न का उत्तर नहीं देता है। उन फ़ाइलों को कब हटाया गया?
एसएससी

@ टाइसिस राइट, मैंने उसी प्रिंसिपल का एक और संस्करण जोड़ा है।
एफ। होरी

2
बिल्डिंस को फिर से परिभाषित rmकरना बुरा अभ्यास है, क्योंकि जब आप वास्तव में ऐसा नहीं कर रहे हैं, तो आप सुरक्षित होने की आदत डाल लेंगे - एक अन्य सिस्टम पर काम करने की कल्पना करें जिसमें यह फ़ंक्शन नहीं है। यह उन गलतियों से सीखने के और प्रकार बेहतर है rm -iया इसी तरह जब भी अनिश्चित, या हटाए जाने से पहले फ़ाइलों की सूची और फिर बदलने के lsसाथ rm
19

1
@slhck ( alias ls=rm...; ;-) आप ठीक कह रहे हैं, मैं सहमत हूँ: यह वास्तविक अच्छा विचार नहीं है क्योंकि सीमा प्रभाव पड़ सकता है ... लेकिन यह नौसिखियों के पहले चरणों में मदद कर सकता है, ज्यादातर अगर यह स्वयं द्वारा जोड़ा गया था। अपने लिए, मैं उपयोग करता हूं alias ls="/bin/ls -ltrF --color --show-control-chars" la="ls -a"और कभी भी आश्चर्यचकित नहीं होता lsहूं जब कमांड सामान्य प्रभाव नहीं देता है।
एफ। होरी

मुझे लगता है कि पहिए पर लगाम लगाने का कोई मतलब नहीं है। देखें: safe-rmपैकेज (और पढ़ें: serverfault.com , launchpad.net , डेबियन पैकेज )।
patryk.beza

3

यदि यह आप है जिसने गलती से फ़ाइलों को हटा दिया है, और आपका शेल इतिहास का समर्थन करता है, तो आप इतिहास को इस तरह वापस सूचीबद्ध कर सकते हैं:

history | grep rm

बेशक, आपको यह जानने के लिए इतिहास के माध्यम से एक अंतर्दृष्टि खोज करनी होगी कि आपने फ़ाइल को कहाँ हटाया है।

यदि यह एक अन्य उपयोगकर्ता था, तो शायद उसकी / ~/.bash_historyया इसी तरह की फ़ाइल (जो भी उपयोगकर्ता उपयोग करता है शेल के लिए) उस जानकारी हो सकती है, अगर उन्होंने इसे वहां से नहीं हटाया।

लेकिन वास्तव में, जैसा कि अन्य उत्तर प्रस्तावित करते हैं, कोई लॉग नहीं है। अभी तक नहीं हटाए गए फ़ाइलों के लिए सतह को स्कैन करने का मतलब है।

वैसे, कॉपी-ऑन-राइट फाइलसिस्टम का उपयोग करके, जैसे कि ZFS या btrfs, आप समय में ड्राइव के "राज्यों" के बीच की गई फ़ाइलों को हटा सकते हैं, जिसे स्नैपशॉट कहा जाता है।

आपके पास हाल ही में पर्याप्त स्नैपशॉट है, और फिर स्नैपशॉट और वर्तमान स्थिति के बीच अंतर सुनिश्चित करने के लिए आवश्यक समय ग्रैन्युलैरिटी के साथ एक क्रोन कार्य हो सकता है।

एक और तरीका है। आप अपने स्वयं के आरएम बाइनरी को संकलित कर सकते हैं, जो कि यह क्या करता है के निशान को बचाता है।


0

नहीं, दुर्भाग्य से, ऐसा कोई लॉग नहीं है। हालाँकि, हटाई गई फ़ाइलों को पुनर्प्राप्त करने के लिए कई उपकरण हैं ।


0

नहीं, ऐसा कोई लॉग नहीं है। जो हटा दिया जाता है उसे बस हटा दिया जाता है।

यदि आपके पास बैकअप है तो आप कंप्यूटर पर वर्तमान में मौजूद फाइलों के साथ बैकअप में फाइलों की तुलना कर सकते हैं। यह आपको बैकअप और अब के बीच समय सीमा में हटा दी गई फ़ाइलों की एक सूची देगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.