क्या पुनर्प्राप्त / हटाए गए फ़ाइलों को हटाना रद्द करने के लिए एक आदेश है rm
?
$ rm -rf /path/to/myfile
मैं कैसे ठीक हो सकता हूं myfile
? अगर ऐसा कोई उपकरण है तो मैं इसका उपयोग कैसे कर सकता हूं?
क्या पुनर्प्राप्त / हटाए गए फ़ाइलों को हटाना रद्द करने के लिए एक आदेश है rm
?
$ rm -rf /path/to/myfile
मैं कैसे ठीक हो सकता हूं myfile
? अगर ऐसा कोई उपकरण है तो मैं इसका उपयोग कैसे कर सकता हूं?
जवाबों:
किसी व्यक्ति द्वारा टिप्पणियों में प्रदान किया गया लिंक आपके सर्वोत्तम अवसर की संभावना है।
लिनक्स डिबगफैट्स हैक: अनडेलीट फाइल्स
हालांकि यह लिखना कि थोड़ा डराना-धमकाना वास्तव में पालन करने के लिए काफी सीधा है। सामान्य तौर पर चरण इस प्रकार हैं:
फाइलसिस्टम लॉग देखने के लिए डीबगफ़ का उपयोग करें
$ debugfs -w /dev/mapper/wks01-root
डीबगफुट प्रॉम्प्ट पर
debugfs: lsdel
नमूना उत्पादन
Inode Owner Mode Size Blocks Time deleted
23601299 0 120777 3 1/ 1 Tue Mar 13 16:17:30 2012
7536655 0 120777 3 1/ 1 Tue May 1 06:21:22 2012
2 deleted inodes found.
Debugfs में कमांड चलाएँ
debugfs: logdump -i <7536655>
फ़ाइलों को इनकोड निर्धारित करें
...
...
....
output truncated
Fast_link_dest: bin
Blocks: (0+1): 7235938
FS block 7536642 logged at sequence 38402086, journal block 26711
(inode block for inode 7536655):
Inode: 7536655 Type: symlink Mode: 0777 Flags: 0x0 Generation: 3532221116
User: 0 Group: 0 Size: 3
File ACL: 0 Directory ACL: 0
Links: 0 Blockcount: 0
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x4f9fc732 -- Tue May 1 06:21:22 2012
atime: 0x4f9fc730 -- Tue May 1 06:21:20 2012
mtime: 0x4f9fc72f -- Tue May 1 06:21:19 2012
dtime: 0x4f9fc732 -- Tue May 1 06:21:22 2012
Fast_link_dest: bin
Blocks: (0+1): 7235938
No magic number at block 28053: end of journal.
उपरोक्त इनकोड जानकारी के साथ निम्नलिखित कमांड चलाएं
# dd if=/dev/mapper/wks01-root of=recovered.file.001 bs=4096 count=1 skip=7235938
# file recovered.file.001
file: ASCII text, with very long lines
फाइलें बरामद की गईं recovered.file.001
।
यदि उपरोक्त आपके लिए नहीं है, तो मैंने photorec
पुराने समय में फ़ाइलों को पुनर्प्राप्त करने के लिए टूल का उपयोग किया है , लेकिन यह केवल छवि फ़ाइलों के लिए तैयार है। मैंने इस लेख में अपने ब्लॉग पर इस विधि के बारे में विस्तार से लिखा है:
debugfs -w /dev/sdb2
लेकिन lsdel
: sais0 deleted inodes found.
extundelete
करना ext3 / 4 के लिए आसान है और संभवत: उसी परिणाम को जन्म देगा।
/dev/mapper/wks01-root: No such file or directory while opening filesystem
तुम यह कहाँ /dev/mapper/wks01-root
से मिला?
कुछ अवसरों के साथ, कभी-कभी मैं इस स्क्रिप्ट या उत्तर में अगले समाधान के साथ हटाई गई फ़ाइलों को पुनर्प्राप्त कर सकता हूं:
#!/bin/bash
if [[ ! $1 ]]; then
echo -e "Usage:\n\n\t$0 'file name'"
exit 1
fi
f=$(ls 2>/dev/null -l /proc/*/fd/* | fgrep "$1 (deleted" | awk '{print $9}')
if [[ $f ]]; then
echo "fd $f found..."
cp -v "$f" "$1"
else
echo >&2 "No fd found..."
exit 2
fi
एक और उपयोगी ट्रिक है: यदि आप अपनी डिलीट हुई फाइल्स में एक पैटर्न जानते हैं, तो + को रिबूट करने के लिए alt+ sys+ टाइप करें resuo-रीड-ओनली में रिमाउंट करें, फिर लाइव-सीडी के साथ grep
हार्ड-ड्राइव में सर्च करने के लिए उपयोग करें:
grep -a -C 500 'known pattern' /dev/sda | tee /tmp/recover
उसके बाद /tmp/recover
केवल अपनी फ़ाइल को रखने के लिए संपादित करें ।
अरे, अगर यूनिक्स दर्शन के साथ सभी फाइलें हैं, तो इसका फायदा उठाने का समय है, नहीं?
grep
आधारित समाधान बहुत ही चतुर है और मेरे लिए काम करता है, यहां तक कि फाइल सिस्टम अभी भी घुड़सवार है। धन्यवाद!
grep -av "[^[:print:]]"
grep
समाधान एक संशोधन के साथ मेरे लिए काम किया: मैंने किया था sudo grep --line-buffered -ab "$PATTERN" /dev/sda1 | tee lines
और बाइट ऑफसेट मिला (जैसे 123123123:line\n456456456:another\n...
), तो किया था n=1000; sudo dd of=before if=/dev/sda1 ibs=1 skip=$[123123123-$n] count=$n
और n=1000; sudo dd of=after if=/dev/sda1 ibs=1 skip=123123123 count=$n
विभिन्न साथ n
मूल्यों।
मेरे लिए क्या काम आर्क द्वारा दिया गया था (केवल पाठ फ़ाइलों पर लागू होता है):
grep -a -C 200 -F 'Unique string in text file' /dev/sdXN
कहाँ /dev/sdXN
खो फ़ाइल युक्त विभाजन है ( mount
यदि अनिश्चित के साथ जाँच करें )।
थोड़ा समय लगता है, लेकिन जब मैंने गलती से कुछ स्रोत कोड हटा दिए, तो मैंने अभी तक काम नहीं किया था!
rm data/*.json python myFile.py
के बजायrm data/*.json && python myFile.py
/dev/sdXN
फ़ाइल सिस्टम के लिए है, है ना? मुझे मेरा साथ मिलाdf -T | awk '{print $1,$2,$NF}' | grep "^/dev"
grep: conflicting matchers specified
यद्यपि यह प्रश्न हल हो गया है और कुछ साल पुराना है, मैं टेस्टडिस्क उपयोगिता का उल्लेख करना चाहता हूं ।
Testdisk के साथ फ़ाइलों को पुनर्प्राप्त करने के लिए कैसे इस ट्यूटोरियल में अच्छी तरह से समझाया गया है । फ़ाइलों को चलाने के लिए testdisk /dev/sdX
और अपनी विभाजन तालिका प्रकार का चयन करने के लिए । इसके बाद, सेलेक्ट करें [ Advanced ] Filesystem Utils
, फिर अपना विभाजन चुनें और चुनें [Undelete]
। अब आप हटाए गए फ़ाइलों को ब्राउज़ कर सकते हैं और उन्हें अपने फाइल सिस्टम में किसी अन्य स्थान पर कॉपी कर सकते हैं।
मुझे पिछले हफ्ते भी यही समस्या थी और मैंने बहुत सारे कार्यक्रमों की कोशिश की, जैसे डीबगफ, फोटोरेक, एक्सट्रेग्रेप और एक्स्टेंडेनेट। ext3grep फ़ाइलों को पुनर्प्राप्त करने के लिए सबसे अच्छा कार्यक्रम था। वाक्य रचना बहुत आसान है:
ext3grep image.img --restore-all
या:
ext3grep /dev/sda3 --restore-all --after date -d '2015-01-01 00:00:00' '+%s' --before `date -d ‘2015-01-02 00:00:00’ ‘+%s’
यह वीडियो एक मिनी ट्यूटोरियल है जो आपकी मदद कर सकता है।
हटाने के del
बजाय एक विकल्प का उपयोग किया जा सकता है rm
:
http://fex.belwue.de/fstools/del.html
del
एक नायाब फ़ंक्शन है और किसी भी फ़ाइल सिस्टम के साथ काम करता है।
निश्चित रूप से यह एक समाधान नहीं है यदि आपने पहले से ही "कैदी नहीं कैदियों" के साथ अपनी फ़ाइलें हटा दी हैं: rm: -}
del
कमांड शुरू करने के लिए धन्यवाद ।
बाहरी इंटरफ़ेस के माध्यम से कनेक्ट ड्राइव
umount /dev/{sd*}
extundelete --restore-all /dev/{sd*}
अधिक जानकारी के लिए यह लिंक देखें: extunde के साथ ext4 पर एक बस हटाई गई फ़ाइल को हटाना रद्द करें ।
रिकवरी टूल - कमांड लाइन:
वसूली उपकरण - गुई:
इन्फोस:
अपने व्यक्तिगत अनुभव में, मुझे ufs-explorer और photorec का उपयोग करके अपना डेटा वापस मिलता है
(१) = मुक्त स्रोत नहीं, मुक्त नहीं
(२) = मुक्त स्रोत नहीं, मुक्त
(3) = मुक्त स्रोत और मुक्त
(४) = ntfs सपोर्ट है
(5) = निर्देशिका संरचना सुविधा है
मैं असहमत हूं कि यह असंभव है, बस बहुत मुश्किल है, और न ही मैंने कभी इसे लिनक्स से दूर किया है:
जब फ़ाइलें हटा दी जाती हैं, तो वे वास्तव में नष्ट नहीं होती हैं। क्या होता है कि हार्ड-ड्राइव पर जो स्थान था वह रीसेट की तरह है, ताकि अगर कंप्यूटर वहां डेटा लिखने की कोशिश करे, तो कुछ भी शिकायत न हो। आम तौर पर, आपकी हार्ड ड्राइव का डेटा जिसे आपने सोचा था कि लगभग एक साल बाद डिलीट किया जा सकता है। या कम से कम, यह एक विंडोज मशीन पर मेरा अनुभव है। लिनक्स पर एक कमांडलाइन से उसी तरह काम करता है या नहीं, मुझे यकीन नहीं है, लेकिन आपको इस तरह से विभाजन को खोलने के लिए एक अलग लाइव सीडी की आवश्यकता होगी, और यह भी कोई गारंटी नहीं है कि फाइलें अभी भी हैं। मैंने कई बार जीरो असेंशन रिकवरी का उपयोग करते हुए विंडोज़ एक्सपी पर किया है। मुझे यकीन है कि यदि आप काफी मुश्किल दिखते हैं तो एक समान उपकरण है।
जब आप किसी फ़ाइल को हटाते हैं, तो उस फ़ाइल की इनकोड तालिका की लिंक संख्या एक से कम हो जाती है। यूनिक्स में, जब लिंक की संख्या 0 से नीचे गिर जाती है, तो उस फ़ाइल के डेटा ब्लॉक मुक्त के रूप में चिह्नित किए जाते हैं और आमतौर पर, उन डेटा ब्लॉक के संदर्भ खो जाते हैं। मुझे अभी @ फेडोरक्वी की टिप्पणी से पता चला है कि उन ब्लॉकों तक पहुंचने का कोई तरीका हो सकता है लेकिन यह केवल ext3 फाइलसिस्टम पर लागू होता है।
फ़ाइलों को संरक्षित करने का एक तरीका एक फ़ंक्शन लिखना होगा जो आपको फ़ाइलों को कचरा क्षेत्र में स्थानांतरित करने की अनुमति देगा (हमें कहने दें $HOME/.trash
) और वहां से आवश्यक फ़ाइलों को पुनर्प्राप्त करें। इस फंक्शन को अलियास किया जा सकता है rm
। आप कुछ दिनों के लिए कचरा क्षेत्र में मौजूद फ़ाइलों को हटाने के लिए क्रॉन जॉब शेड्यूल कर सकते हैं।
यह आप में से कुछ के लिए मुसीबत को बचा सकता है।
यदि आपने कभी भी उस फ़ाइल को संपादित करने के लिए gedit का उपयोग किया है, तो डिफ़ॉल्ट रूप से उस फ़ाइल की एक प्रति बनाई जाएगी।
उदाहरण के लिए मान लें कि हमारे पास 'myfile.txt' नाम की दुर्घटना है।
उस फ़ोल्डर में, जिसमें आपके द्वारा अभी-अभी डिलीट की गई फाइल का उपयोग किया गया है और आप कॉपी को वहीं से रिकवर कर लेंगे:
ls | grep 'myfile.txt~'
थोड़ी किस्मत से आप इसे पा लेंगे और फिर:
cp 'myfile.txt~' 'myfile.txt'
मैंने इस विधि का उपयोग करके अभी एक फाइल रिकवर की है। शुभकामनाएँ!