ইউনিক্স / লিনাক্স মুছে ফেলা ফাইলগুলি মুছে ফেলা / পুনরুদ্ধার করুন


124

মুছে ফেলা ফাইলগুলি পুনরুদ্ধার / মোছার জন্য কোনও আদেশ আছে rm?

$ rm -rf /path/to/myfile

আমি কিভাবে পুনরুদ্ধার করতে পারি myfile? যদি এমন কোনও সরঞ্জাম থাকে তবে আমি কীভাবে এটি ব্যবহার করতে পারি?


1
cyberciti.biz/tips/… সহায়তা করতে পারে। এছাড়াও এটি স্ট্যাক এক্সচেঞ্জে ভাল ।
ফেডোরকুই

1. এটি ইউনিক্স এবং লিনাক্সের জন্য আরও ভাল হবে ? 2. ব্যাকআপ?

1
আপনি কিছু করার আগে, ফাইল-সিস্টেমটি কেবল পঠনযোগ্যভাবে মাউন্ট করুন যাতে ডেটা ওভাররাইট করা হয় না তা নিশ্চিত করে। এছাড়াও, এই পোস্টটি একবার দেখুন: superuser.com/questions/170857/ext4-undelete-utilities

1
@ ইভটিটেলম্যান আপনার অর্থ রিমাম্ট রিড-রিলিং কেবল ফাইলটি সঞ্চারিত হওয়ার পরে পুনরুদ্ধার করার চেয়ে ভাল কি? বিটিডাব্লু, মিডনাইট কম্যান্ডার
পাওয়ার

1
সেরা সমাধান হ'ল সামনে চিন্তা করা এবং একটি সংশোধন নিয়ন্ত্রণ সরঞ্জাম ব্যবহার করা।
ctrl-alt-delor

উত্তর:


66

মন্তব্যে যে লিঙ্কটি সরবরাহ করা হয়েছে তা সম্ভবত আপনার সেরা সুযোগ।

লিনাক্স ডিবাগ হ্যাক: ফাইলগুলি মুছে ফেলুন

কিছুটা ভয় দেখানো সত্ত্বেও সেই লেখার বিষয়টি অনুসরণ করার জন্য মোটামুটি সোজা এগিয়ে forward সাধারণভাবে পদক্ষেপগুলি নিম্নরূপ:

  1. একটি ফাইল সিস্টেম লগ দেখতে ডিবাগফ ব্যবহার করুন

    $ debugfs -w /dev/mapper/wks01-root
    
  2. ডিবাগ প্রম্পটে At

    debugfs: lsdel
    
  3. নমুনা আউটপুট

    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.
    
  4. ডিবাগগুলিতে কমান্ডটি চালান

    debugfs: logdump -i <7536655>
    
  5. ফাইলগুলি ইনোড নির্ধারণ করুন

    ...
    ...
    ....
    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.
    
  6. উপরের ইনোড তথ্য সহ নিম্নলিখিত কমান্ডগুলি চালান

    # 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অতীতে ফাইলগুলি পুনরুদ্ধার করার জন্য সরঞ্জামগুলি ব্যবহার করেছি তবে এটি কেবল চিত্র ফাইলগুলির জন্যই প্রস্তুত। এই নিবন্ধটি শিরোনামে আমার ব্লগে আমি এই পদ্ধতিটি সম্পর্কে ব্যাপকভাবে লিখেছি:

ফেডোরা / সেন্টোস / আরএইচইএল-তে ডিজিটাল ক্যামেরার এসডিডি কার্ড থেকে কীভাবে দুর্নীতিগ্রস্থ জেপিগ এবং মুভ ফাইলগুলি পুনরুদ্ধার করবেন


11
আমি debugfs -w /dev/sdb2তবে lsdelসাইস দিয়ে চেষ্টা করেছি :0 deleted inodes found.
রুবো 77

5
extundeleteext3 / 4 এর জন্য ব্যবহার করা সহজ এবং সম্ভবত একই ফলাফল হতে পারে।
ইডমাস্টার

1
এটি একটি ফাইল পুনরুদ্ধার করতে কাজ করেছে, তবে আমি received @ y U T6 Ԝ * e 0 v' T 0 <#selinuxsystem_u: অবজেক্ট_r: rpm_var_lib_t পেয়েছি: s0 } y U T6 ..... চেষ্টা করে কনভ = এসকিআই, কন = ইবিএম, এবং কন = ইব্যাকডিক একই সমস্যা দেয়
codyc4321

2
lsdel: ফাইল সিস্টেম খোলা নেই, কীভাবে সমাধান করবেন?
অমিতাভ

3
আমি পেয়েছি তুমি /dev/mapper/wks01-root: No such file or directory while opening filesystemকোথা /dev/mapper/wks01-rootথেকে এলে?
মার্কো আলেলিš

29

কিছুটা সম্ভাবনার সাথে, কখনও কখনও আমি এই স্ক্রিপ্ট বা উত্তরের পরবর্তী সমাধান সহ মুছে ফেলা ফাইলগুলি পুনরুদ্ধার করতে পারি:

#!/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কেবলমাত্র আপনার ফাইল (গুলি) আগে যা ছিল তা রাখতে সম্পাদনা করুন।

আরে, ইউনিক্স দর্শনের সাথে সবই যদি ফাইল হয় তবে সময় করে এর সুবিধা নেওয়ার সময় এসেছে, না?


5
আপনার grepভিত্তিক সমাধানটি খুব চালাক এবং আমার জন্য কাজ করেছে, এমনকি ফাইল সিস্টেম এখনও মাউন্ট করা আছে। ধন্যবাদ!
wchargin

আমি বুঝতে পারি না যে গ্রেপ সমাধানটি আপনার জন্য কীভাবে কাজ করেছে, এটি কেবল বাইনারি ডেটার আউটপুট করে। কিভাবে এটি দরকারী?
w00t

2
@ w00t অবশ্যই, এটি "কেবল" বাইনারি ডেটা ছড়িয়ে দেয়। তবে কখনও কখনও যে বাইনারি ডেটাতে আমি যে ফাইলটি সন্ধান করছি তার সাথে সংশ্লিষ্ট ASCII বিটগুলি ধারণ করে। আমার ধারণা আমি প্রশ্নটি বুঝতে পারি না?
wchargin

@ w00t কৌশলটি এমন একটি অনুসন্ধান প্যাটার্ন ব্যবহার করা যা সেই ফাইলটির সাথে খুব নির্দিষ্ট। গ্রেপ কমান্ডটি প্রতিটি মিলে যাওয়ার লাইনের আগে এবং পরে 500 লাইন নেবে, সুতরাং এটি এখনও অনেক অপ্রাসঙ্গিক ডেটা ছড়িয়ে দেবে, তবে একটি টেক্সট সম্পাদকের সাহায্যে যে এটি মোকাবেলা করতে পারে (উদাহরণস্বরূপ Vim), এটি থেকে ভালটি সাজানো সহজ easy খারাপ জিনিস। আপনি অন্য গ্রিপ কমান্ডের মাধ্যমে পাইপ দিয়ে অ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মান।
কিরিল বুলিগিন

21

আমার জন্য যা কাজ করেছে তা খিলান দিয়ে দেওয়া হয়েছিল (কেবলমাত্র টেক্সট ফাইলগুলিতে প্রযোজ্য):

grep -a -C 200 -F 'Unique string in text file' /dev/sdXN

কোথায় /dev/sdXNহারিয়ে যাওয়া ফাইল রয়েছে এমন পার্টিশনটি ( mountনিশ্চিত না হলে চেক করুন )।

কিছুক্ষণ সময় নেয়, তবে কাজ করেছি যখন আমি ঘটনাক্রমে কিছু উত্স কোড মুছে ফেলেছিলাম যা আমি এখনও কমিট করেছিলাম না!


4
প্রোগ্রামারদের জন্য খুব দরকারী!। সাধারণত, আমরা সর্বদা আমাদের নিজস্ব কোডগুলি হারিয়েছি।
পাইওভার

1
আমাকে এ সম্পর্কে বলুন, আমি দুর্ঘটনাক্রমে rm data/*.json python myFile.pyপরিবর্তে দৌড়েছিলামrm data/*.json && python myFile.py
উইলিয়াম বেকার

2
ধন্যবাদ সাথী, আপনি কেবল আমাকে একটি পাঠ্য ফাইল পুনরুদ্ধার করতে সাহায্য করেছিলেন যে আমি রাতে 2 ঘন্টা লেখার জন্য ব্যয় করেছি। পিএস /dev/sdXNফাইল সিস্টেমের জন্য, তাই না? আমি আমার সাথে খুঁজে পেয়েছিdf -T | awk '{print $1,$2,$NF}' | grep "^/dev"
অ্যালেক্স

আমি ফাইলটির কেবল বাইনারি দেখছি। এটিকে স্বাভাবিক ফর্ম্যাটে রূপান্তর করার কোনও উপায় আছে কি?
সিলগন

grep: conflicting matchers specified
অবিরত

10

যদিও এই প্রশ্নটি সমাধান হয়েছে এবং কয়েক বছরের পুরানো, আমি টেস্টডিস্ক ইউটিলিটির উল্লেখ করতে চাই

টেস্টডিস্ক দিয়ে কীভাবে ফাইলগুলি পুনরুদ্ধার করবেন এই টিউটোরিয়ালে ভালভাবে ব্যাখ্যা করা হয়েছে । চালিত ফাইলগুলি পুনরুদ্ধার করতে testdisk /dev/sdXএবং আপনার পার্টিশন সারণী প্রকারটি নির্বাচন করুন। এর পরে, নির্বাচন করুন [ Advanced ] Filesystem Utils, তারপরে আপনার পার্টিশনটি নির্বাচন করুন এবং নির্বাচন করুন [Undelete]। এখন আপনি মুছে ফেলা ফাইলগুলি ব্রাউজ এবং নির্বাচন করতে এবং এগুলি আপনার ফাইল সিস্টেমে অন্য কোনও স্থানে অনুলিপি করতে পারেন।


এটি আমার / dev / nvme0n1p2
এইচ

6

আমি গত সপ্তাহে একই সমস্যা পেয়েছি এবং আমি অনেক প্রোগ্রাম চেষ্টা করেছি, যেমন ডিবাগস, ফটোোরেক, এক্সট্রোগ্র্যাপ এবং এক্সটান্ডিলিট। 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’

এই ভিডিওটি একটি মিনি টিউটোরিয়াল যা আপনাকে সহায়তা করতে পারে।


6

মুছে ফেলার delপরিবর্তে কোনও বিকল্প ব্যবহার করা যেতে পারে rm:

http://fex.belwue.de/fstools/del.html

del একটি মুছে ফেলা ফাংশন আছে এবং যে কোনও ফাইল সিস্টেমের সাথে কাজ করে।

অবশ্যই যদি আপনি ইতিমধ্যে আপনার ফাইলগুলি "বন্দী না রাখুন" আরএম দিয়ে মুছে ফেলে থাকেন তবে এটি কোনও সমাধান নয়: -}


1
আপনি ইতিমধ্যে বলেছিলেন এমন কোনও উত্তর নয়, তবে del আদেশটি প্রবর্তনের জন্য ধন্যবাদ ।
পাইওভার

5

বাহ্যিক ইন্টারফেস মাধ্যমে ড্রাইভ সংযোগ

  1. পর্বত
  2. umount /dev/{sd*}
  3. extundelete --restore-all /dev/{sd*}
  4. ফলাফলগুলি বুট ড্রাইভে হোম ফোল্ডারে যায়
  5. বোনাস পয়েন্ট: এর জন্য একটি জিইউআই লিখুন

আরও তথ্যের জন্য এই লিঙ্কটি দেখুন: এক্সট্রাউলিট দিয়ে এক্সট 4 এ সবেমাত্র মোছা ফাইলটি মুছে ফেলুন


2
ডাউনভোটার্স, দয়া করে ব্যাখ্যা করুন কেন আপনি ভাবেন যে অতিরিক্ত অর্থ ছাড়াই ভাল বিকল্প নয়?
ওয়েবমোনাল.অর্গ

2
নিস! পোস্ট করার জন্য ধন্যবাদ। এক্সটেন্ডিলিট আমার জন্য একটি নতুন সরঞ্জাম। আমি আজ এটি ব্যবহার করেছি এবং এটি অত্যন্ত সহায়ক বলে মনে করি। গৃহীত উত্তরের চেয়ে অনেক বেশি সহায়ক আইএমও। আমি এই উত্তরে সামান্য উন্নতি করার জন্য কেবলমাত্র যে বিষয়গুলি যুক্ত করব তা হ'ল (১) অন্য কয়েকটি উত্তরে যে নির্দেশাবলী পুনরাবৃত্তি করা উচিত তা হল যে কেউ বুঝতে পারে যে ফাইলগুলি ভুল করে মুছে ফেলা হয়েছে, এবং (২) থেকে কালি লিনাক্সের মতো লাইভসিডি বা লাইভ ইউএসবি ওএস থেকে বুট করুন যার মধ্যে অপ্রয়োজনীয় ইউটিলিটি অন্তর্ভুক্ত রয়েছে (আমি দেখতে পেলাম যে দেবিয়ান জেসির মতো আরও অনেক লাইভসিডি তাদের ইনস্টল মিডিয়ায় এই ইউটিলিটিটি অন্তর্ভুক্ত করে না)।
অস্টিওবুন

4

পুনরুদ্ধার সরঞ্জাম - কমান্ড লাইন:

পুনরুদ্ধার সরঞ্জাম - গুই:

ইনফোস:

আমার ব্যক্তিগত অভিজ্ঞতায় আমি ইউএফএস-এক্সপ্লোরার এবং ফটোরেক ব্যবহার করে আমার ডেটা ফিরে পাই

(1) = মুক্ত উত্স নয়, নিখরচায় নয়

(২) = মুক্ত উত্স নয়, বিনামূল্যে

(3) = মুক্ত উত্স এবং বিনামূল্যে

(4) = এনটিএফএস সমর্থন করুন

(5) = ডিরেক্টরি কাঠামো বৈশিষ্ট্য রয়েছে


1

আমি একমত নই যে এটি অসম্ভব, খুব খুব কঠিন এবং আমি কখনও এটি লিনাক্স থেকে শেষ করতে পারি নি:

ফাইলগুলি মুছে ফেলা হয়, সেগুলি আসলে মুছে ফেলা হয় না। যা ঘটে তা হ'ল হার্ড-ড্রাইভে যে জায়গাটি ছিল তা হ'ল পুনরায় সেট করা, যাতে কম্পিউটার যদি সেখানে ডেটা লেখার চেষ্টা করে তবে কিছুই অভিযোগ করে না। সাধারণত, আপনার হার্ড ড্রাইভের ডেটা আপনি ভেবেছিলেন যে আপনি মুছে ফেলেছেন প্রায় এক বছর পরে সেখানে থাকতে পারে। বা কমপক্ষে, এটি একটি উইন্ডোজ মেশিনে আমার অভিজ্ঞতা। এটি লিনাক্সের একটি কমান্ডলাইন থেকে একইভাবে কাজ করে বা না, আমি নিশ্চিত নই, তবে সম্ভবত এই জাতীয় পার্টিশনটি খোলার জন্য আপনার একটি পৃথক লাইভ সিডি লাগবে এবং ফাইলগুলি এখনও রয়েছে বলে কোনও গ্যারান্টি নেই। আমি জিরো অ্যাসম্পশন রিকভারিটি ব্যবহার করে উইন্ডোজ এক্সপি-তে বেশ কয়েকবার করেছি। আমি নিশ্চিত আপনি যদি যথেষ্ট পরিশ্রমী দেখেন তবে আশেপাশে একই রকম সরঞ্জাম রয়েছে।


পরিস্থিতির উপর নির্ভর করে এটি 100% অসম্ভব হতে পারে। এটি কাজ করতে পারে বা নাও পারে তবে আপনার কোনও গ্যারান্টি নেই।
ক্লুত্ত

0

আপনি যখন কোনও ফাইল মুছবেন, সেই ফাইলটির জন্য ইনোড টেবিলের লিঙ্ক গণনাটি একটির মাধ্যমে হ্রাস পেয়েছে। ইউনিক্সে, যখন লিঙ্কের গণনা 0 তে নেমে আসে, তখন সেই ফাইলটির ডেটা ব্লকগুলি নিখরচায় চিহ্নিত করা হয় এবং সাধারণত, সেই ডেটা ব্লকের উল্লেখ হারিয়ে যায়। আমি @ ফেডোরকি'র মন্তব্যটি থেকে সন্ধান করেছি যে এই ব্লকগুলি অ্যাক্সেস করার কিছু উপায় থাকতে পারে তবে এটি কেবলমাত্র ext3 ফাইল সিস্টেমের ক্ষেত্রে প্রযোজ্য।

ফাইলগুলি সংরক্ষণ করার একটি উপায় হ'ল একটি ফাংশন লিখুন যা আপনাকে ফাইলগুলি ট্র্যাশ অঞ্চলে স্থানান্তর করতে দেয় (আমাদের বলি $HOME/.trash) এবং সেখান থেকে প্রয়োজনীয় ফাইলগুলি পুনরুদ্ধার করে। এই ফাংশনটি এ্যালাইজ করা যেতে পারে rm। ট্র্যাশ অঞ্চলে থাকা ফাইলগুলি নির্দিষ্ট সময়ের জন্য মুছে ফেলার জন্য আপনি ক্রোন জব শিডিয়ুল করতে পারেন।


0

এটি আপনার কারও জন্য ঝামেলা বাঁচাতে পারে।
আপনি যদি কখনও ফাইলটি সম্পাদনা করতে জিডিট ব্যবহার করেন, ডিফল্টরূপে সেই ফাইলটির একটি অনুলিপি তৈরি করা হবে।
উদাহরণস্বরূপ ধরা যাক আমরা দুর্ঘটনাক্রমে 'myfile.txt' মুছে ফেলেছি।
আপনি যে ফোল্ডারে ফাইলটি ধারণ করেছিলেন সেগুলিতে আপনি কেবলমাত্র এই আদেশগুলি ব্যবহার করে মুছে ফেলেছেন এবং আপনি অনুলিপিটি সেখান থেকে পুনরুদ্ধার করতে পারবেন: ভাগ্যিসের
ls | grep 'myfile.txt~'
সাথে আপনি এটি খুঁজে পাবেন এবং তারপরে:
cp 'myfile.txt~' 'myfile.txt'
এই পদ্ধতিটি ব্যবহার করে এখনই আমি একটি ফাইল উদ্ধার করেছি। শুভকামনা করছি!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.