মুছে ফেলা ফাইলগুলি পুনরুদ্ধার / মোছার জন্য কোনও আদেশ আছে rm
?
$ rm -rf /path/to/myfile
আমি কিভাবে পুনরুদ্ধার করতে পারি myfile
? যদি এমন কোনও সরঞ্জাম থাকে তবে আমি কীভাবে এটি ব্যবহার করতে পারি?
মুছে ফেলা ফাইলগুলি পুনরুদ্ধার / মোছার জন্য কোনও আদেশ আছে rm
?
$ rm -rf /path/to/myfile
আমি কিভাবে পুনরুদ্ধার করতে পারি myfile
? যদি এমন কোনও সরঞ্জাম থাকে তবে আমি কীভাবে এটি ব্যবহার করতে পারি?
উত্তর:
মন্তব্যে যে লিঙ্কটি সরবরাহ করা হয়েছে তা সম্ভবত আপনার সেরা সুযোগ।
লিনাক্স ডিবাগ হ্যাক: ফাইলগুলি মুছে ফেলুন
কিছুটা ভয় দেখানো সত্ত্বেও সেই লেখার বিষয়টি অনুসরণ করার জন্য মোটামুটি সোজা এগিয়ে forward সাধারণভাবে পদক্ষেপগুলি নিম্নরূপ:
একটি ফাইল সিস্টেম লগ দেখতে ডিবাগফ ব্যবহার করুন
$ debugfs -w /dev/mapper/wks01-root
ডিবাগ প্রম্পটে At
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: 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
সাইস দিয়ে চেষ্টা করেছি :0 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 /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
একটি মুছে ফেলা ফাংশন আছে এবং যে কোনও ফাইল সিস্টেমের সাথে কাজ করে।
অবশ্যই যদি আপনি ইতিমধ্যে আপনার ফাইলগুলি "বন্দী না রাখুন" আরএম দিয়ে মুছে ফেলে থাকেন তবে এটি কোনও সমাধান নয়: -}
del
আদেশটি প্রবর্তনের জন্য ধন্যবাদ ।
বাহ্যিক ইন্টারফেস মাধ্যমে ড্রাইভ সংযোগ
umount /dev/{sd*}
extundelete --restore-all /dev/{sd*}
আরও তথ্যের জন্য এই লিঙ্কটি দেখুন: এক্সট্রাউলিট দিয়ে এক্সট 4 এ সবেমাত্র মোছা ফাইলটি মুছে ফেলুন ।
পুনরুদ্ধার সরঞ্জাম - কমান্ড লাইন:
পুনরুদ্ধার সরঞ্জাম - গুই:
ইনফোস:
আমার ব্যক্তিগত অভিজ্ঞতায় আমি ইউএফএস-এক্সপ্লোরার এবং ফটোরেক ব্যবহার করে আমার ডেটা ফিরে পাই
(1) = মুক্ত উত্স নয়, নিখরচায় নয়
(২) = মুক্ত উত্স নয়, বিনামূল্যে
(3) = মুক্ত উত্স এবং বিনামূল্যে
(4) = এনটিএফএস সমর্থন করুন
(5) = ডিরেক্টরি কাঠামো বৈশিষ্ট্য রয়েছে
আমি একমত নই যে এটি অসম্ভব, খুব খুব কঠিন এবং আমি কখনও এটি লিনাক্স থেকে শেষ করতে পারি নি:
ফাইলগুলি মুছে ফেলা হয়, সেগুলি আসলে মুছে ফেলা হয় না। যা ঘটে তা হ'ল হার্ড-ড্রাইভে যে জায়গাটি ছিল তা হ'ল পুনরায় সেট করা, যাতে কম্পিউটার যদি সেখানে ডেটা লেখার চেষ্টা করে তবে কিছুই অভিযোগ করে না। সাধারণত, আপনার হার্ড ড্রাইভের ডেটা আপনি ভেবেছিলেন যে আপনি মুছে ফেলেছেন প্রায় এক বছর পরে সেখানে থাকতে পারে। বা কমপক্ষে, এটি একটি উইন্ডোজ মেশিনে আমার অভিজ্ঞতা। এটি লিনাক্সের একটি কমান্ডলাইন থেকে একইভাবে কাজ করে বা না, আমি নিশ্চিত নই, তবে সম্ভবত এই জাতীয় পার্টিশনটি খোলার জন্য আপনার একটি পৃথক লাইভ সিডি লাগবে এবং ফাইলগুলি এখনও রয়েছে বলে কোনও গ্যারান্টি নেই। আমি জিরো অ্যাসম্পশন রিকভারিটি ব্যবহার করে উইন্ডোজ এক্সপি-তে বেশ কয়েকবার করেছি। আমি নিশ্চিত আপনি যদি যথেষ্ট পরিশ্রমী দেখেন তবে আশেপাশে একই রকম সরঞ্জাম রয়েছে।
আপনি যখন কোনও ফাইল মুছবেন, সেই ফাইলটির জন্য ইনোড টেবিলের লিঙ্ক গণনাটি একটির মাধ্যমে হ্রাস পেয়েছে। ইউনিক্সে, যখন লিঙ্কের গণনা 0 তে নেমে আসে, তখন সেই ফাইলটির ডেটা ব্লকগুলি নিখরচায় চিহ্নিত করা হয় এবং সাধারণত, সেই ডেটা ব্লকের উল্লেখ হারিয়ে যায়। আমি @ ফেডোরকি'র মন্তব্যটি থেকে সন্ধান করেছি যে এই ব্লকগুলি অ্যাক্সেস করার কিছু উপায় থাকতে পারে তবে এটি কেবলমাত্র ext3 ফাইল সিস্টেমের ক্ষেত্রে প্রযোজ্য।
ফাইলগুলি সংরক্ষণ করার একটি উপায় হ'ল একটি ফাংশন লিখুন যা আপনাকে ফাইলগুলি ট্র্যাশ অঞ্চলে স্থানান্তর করতে দেয় (আমাদের বলি $HOME/.trash
) এবং সেখান থেকে প্রয়োজনীয় ফাইলগুলি পুনরুদ্ধার করে। এই ফাংশনটি এ্যালাইজ করা যেতে পারে rm
। ট্র্যাশ অঞ্চলে থাকা ফাইলগুলি নির্দিষ্ট সময়ের জন্য মুছে ফেলার জন্য আপনি ক্রোন জব শিডিয়ুল করতে পারেন।
এটি আপনার কারও জন্য ঝামেলা বাঁচাতে পারে।
আপনি যদি কখনও ফাইলটি সম্পাদনা করতে জিডিট ব্যবহার করেন, ডিফল্টরূপে সেই ফাইলটির একটি অনুলিপি তৈরি করা হবে।
উদাহরণস্বরূপ ধরা যাক আমরা দুর্ঘটনাক্রমে 'myfile.txt' মুছে ফেলেছি।
আপনি যে ফোল্ডারে ফাইলটি ধারণ করেছিলেন সেগুলিতে আপনি কেবলমাত্র এই আদেশগুলি ব্যবহার করে মুছে ফেলেছেন এবং আপনি অনুলিপিটি সেখান থেকে পুনরুদ্ধার করতে পারবেন: ভাগ্যিসের
ls | grep 'myfile.txt~'
সাথে আপনি এটি খুঁজে পাবেন এবং তারপরে:
cp 'myfile.txt~' 'myfile.txt'
এই পদ্ধতিটি ব্যবহার করে এখনই আমি একটি ফাইল উদ্ধার করেছি। শুভকামনা করছি!