اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

چطور فایل های حذف شده را در Linux ریکاوری (Recovery) کنیم؟

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    چطور فایل های حذف شده را در Linux ریکاوری (Recovery) کنیم؟

    آیا تا به حال برای شما این اتفاق رخ افتاده است که فایل های خود delete کنید؟ شما به یکباره متوجه میشوید که سهوا یک فایل را از طریق کلید Del روی کیبرد و یا با استفاده از دستور rm حذف کرده اید. در اولین کار شما همیشه میتوانید به مراجعه به Trash و جستجو کردن فایل مورد نظر، آنرا restor کرده و فایل حذف شده را به محل قبلی، بازگردانید. و اما درباره مورد دوم یعنی حذف از طریق دستور rm چطور میشود این کار رو انجام داد؟ ممکن است بدانید که command line لینوکس فایل های حذف شده را به جایی ارسال نمیکند. (آنها را حذف میکند)

    در این مقاله ترفندی را با شما به اشتراک میگذاریم که ممکن است برای جلوگیری از این اتفاق به شما کمک کند و ابزاری که ممکن است در مواقعی که شما به اندازه کافی مراقب دستورات خود نباشیدکمک کند را مورد بررسی قرار خواهیم داد.

    ریکاوری فایل های حذف شده در لینوکس





    توصیه میشود این مقاله را هم مطالعه کنید :

    نحوه پیدا کردن بدسکتور در لینوکس

    آموزش Defrag کردن دیسک (پارتیشن ها و دایرکتوری ها) در لینوکس



    ایجاد یک alias برای دستور "rm -i"

    سوییچ -i زمانی که با rm مورد استفاده قرار گیرد (و همچنین به همراه ابزارهای دیگر فایل همانند cp یا mv) باعث میشود یک prompt دیگر قبل از حذف یک فایل نمایش داده شود. اتفاق مشابهی برای copy / move یا rename یک فایل در مسیری که یک نام مشابه در آن از قبل موجود است رخ خواهد داد.

    این prompt به شما شانس دوباره ای برای بررسی این که آیا از حذف فایل مطمئن هستید میدهد - اگر آن را تایید کنید فایل حذف خواهد شد. در این مورد با عرض تاسف این ترفند از بی دقتی شما پشتیبانی نمیکنند.

    برای جابه جا کردن rm با یک alias همانند rm -i عمل کنید :
    کد PHP:
    alias rm='rm -i' 
    با اجرا کردن دستور alias مطمئن خواهیم شد که دستور rm در حال حاضر به درستی alias شده است.
    کد PHP:
    [root@linux-zone ~]# alias
    alias grep='grep --color=auto'
    alias ls='ls --color=auto'
    [root@linux-zone ~]# alias rm='rm -i'
    [root@linux-zone ~]# alias
    alias ll='ls -l --color=auto'
    alias ls='ls --color=auto'
    alias rm='rm -i'
    [root@linux-zone ~]

    به هر حال این alias تنها در طول session کاربر جاری و در shell جاری باقی خواهد ماند. برای اینکه این تغییرات به صورت دائمی باشند شما باید آن را در فایل ~/.bashrc ذخیره کنید (در بعضی از توضیع های لینوکسی باید به جای این فایل از فایل ~/.profile استفاده کنید) همانند زیر میباشد.
    کد PHP:
    [root@linux-zone ~]# vim .bashrc
    OR
    [
    root@linux-zone ~]# vim .profile 
    کد PHP:
    # .bashrc

    # User specific aliases and functions

    alias rm='rm -i'
    alias cp='cp -i'
    alias mv='mv -i'

    # Source global definitions
    if [ -/etc/bashrc ]; then
            
    . /etc/bashrc
    fi 
    به منظور اینکه تغییرات در فایل ~/.bashrc (یا ~/.profile) به سرعت اعمال شوند فایل را از shell جاری source کنید.
    کد PHP:
    [root@linux-zone ~]# . ~/.bashrc 
    کد PHP:
    [root@linux-zone ~]# . ~/.bashrc
    [root@linux-zone ~]# alias | grep rm
    alias rm='rm -i'
    [root@linux-zone ~]


    ابزار تست و موشکافی - Foremost

    خوشبختانه اگر مراقب فایل های خود نبودید تنها میتوانید با استفاده از این ابزار فایل گم شده را در یک دیسک external یا usb درایو بازیابی کنید.

    به هر حال اگر متوجه شدید که تصادفا یک فایلی را در سیستم خود حذف کردید و سیستم تان دچار مشکل شد میتوانید از این ابزار استفاده کنید. نکاهی به ابزار foremost (یک ابزار بررسی و ریکاوری) خواهیم انداخت که به منظور این چنین سناریوهایی طراحی گشته است.

    برای نصب ابزار foremost در Centos / RHEL 7 شما ابتدا باید ریپازیتوری repoforg را نصب و فعال کنید.
    کد PHP:
     wget http://ftp.tu-chemnitz.de/pub/linux/dag/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
    rpm -Uvh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
    yum install foremost 

    در توضیح های Debian / Ubuntu برای نصب foremost همانند زیر عمل کنید.
    کد PHP:
    # aptitude install foremost 

    این ابزار میتواند فایلها را هم از طریق image یک هارد (یک image file از هارد مثلا image.dd) و هم مستقیما از روی خود هارد ریکاوری کند. بعد از ریکاوری یک فایل متنی audit.txt نیز بهمراه فایلهای ریکاور شده در دیسک جدید موجود است که لیست فایلهای قابل ریکاوری میباشد. فرض میکنیم که فایل از دست رفته در پارتیشن sda مان بوده و برا ی recovery، در خاطر داشته باشید که ریکاور کردن فایل ها روی همان درایوی که فایل های حذف شده قرار داشته، کار عاقلانه ای نیست. اگر در طول ریکاوری شما سکتورهای یکسانی از دیسک را اشغال کنید که فایل های حذف شده از همان سکتورها را برای ذخیره شدن شان استفاده میکردند ممکن است که احتمال ریکاوری هیچ فایلی را نداشته باشید. بهمین دلیل یک دیسک مجزا برای این کار در نظر میگیریم.

    ما در اینجا یک هارد جدید(sdb) به سیستم اضافه کردیم و آنرا پارتیشن (sdb1) و فرمت(ext4) نمودیم. به علاوه ضروری است که قبل از اجرای ریکاوری تمامی فعالیت های خود را روی سیستم متوقف کنید.


    ابتدا پارتیشن sdb1 را روی سیستم mount میکنیم :
    کد PHP:
    sudo mkdir /mnt/foremost
    sudo mount 
    /dev/sdb1 /mnt/foremost 
    و اجرای دستور foremost :
    با دستور زیر کل دیسک sda رو ریکاوری و روی sdb کپی میکنیم
    کد PHP:
    sudo foremost -/dev/sda -/mnt/foremost 
    نکته : دقت کنید دیسک جدید باید کاملا خالی باشد. اگر ارور زیر را به هنگام اجرای دستور دریافت کردید :
    کد PHP:
    [root@linux-zone ~]# foremost  -i /dev/sda1 -o /mnt/foremost/              
    foremost: /usr/local/etc/foremost.conf:
    No such file or directoryERROR: /mnt/foremost is not empty      
     
    Please specify another directory or run with -T
    باید در دستور از آپشن -T استفاده کنید و یا دیسک sdb را کاملا خالی کنید :
    کد PHP:
     rm -rf /mnt/foremost/* 
    اگر foremost را بخواهید روی یک image file از دیسک اجرا کنید باید به جای نام درایو نام فایل را قرار دهید :
    کد PHP:
    sudo foremost -i image -/mnt/foremost 
    نکته : فایلهای ریکاور شده به یوزر root تعلق دارند. در صورت نیاز ownership آنها را تغییر دهید :
    کد PHP:
    sudo chown -R habili:habili /mnt/foremost 
    برای اینکه تنها فایل audit.txt (شامل فایلهای قابل ریکاوری) را دریافت کنید از آپشن -w همانند دستور زیر استفاده میکنیم :
    کد PHP:
    sudo foremost --i image -/mnt/foremost 
    برای اینکه تنها فایلهای با فرمت خاص (مثلا jpg) را ریکاور کنیم از آپشن -t استفاده می کنیم :
    کد PHP:
    foremost -t jpg -/dev/sda -/mnt/foremost 
    ,

    و نتیجه ی دستور:
    کد PHP:
    [root@linux-zone ~]# foremost -t jpg -i /dev/sda -o /mnt/foremost
    foremost: /usr/local/etc/foremost.confNo such file or directory
    Processing
    : /dev/sda
    |********************************************************************************************************************************************************************|
    [
    root@linux-zone~]# ls /mnt/foremost/
    audit.txt  jpg
    [root@linux-zone~]# ls /mnt/foremost/jpg/
    18144232.jpg  18257376.jpg  18258856.jpg  18259072.jpg  26504544.jpg 

    و یا مثلا برای recovery کردن فایلهای با فرمت htm در مسیر /boot :

    قبل از همه چیز شما باید پارتیشن مورد نظر را شناسایی کنید.در اینجا /boot در پارتیشن /dev/sda1 قرار گرفته است. برای recover کردن آن همانند زیر از foremost استفاده میکنیم
    کد PHP:
    [root@linux-zone~]#foremost -t htm -i /dev/sda1 -o /mnt/foremost
    foremost: /usr/local/etc/foremost.confNo such file or directory
    Processing
    : /dev/sda
    |********************************************************************************************************************************************************************|
    [
    root@linux-zone~]# ls /mnt/foremost/
    audit.txt  htm/
    [
    root@linux-zone~]# ls /mnt/foremost/htm/
    Display all 280 possibilities? (or n)
    [
    root@linux-zone~]# ls /mnt/foremost/htm/
    01377819.htm  22378632.htm  22379432.htm  26457600.htm  26484704.htm09699378.htm  22378640.htm  22379440.htm  26457608.htm  26484720.htm18068360.htm  22378688.htm  22379448.htm  26457624.htm  26484736.htm18158439.htm  22378696.htm  22379456.htm  26458128.htm  26484760.htm18183991.htm  22378720.htm  22379464.htm  26458168.htm  26484800.htm18185005.htm  22378736.htm  22379472.htm  26458224.htm  26484824.htm18188436.htm  22378752.htm  22379488.htm  26458256.htm  26484832.htm18188564.htm  22378760.htm  22379496.htm  26458272.htm  26484848.htm18188684.htm  22378768.htm  22379504.htm  26458312.htm  26484864.htm18194112.htm  22378784.htm  22379512.htm  26458336.htm  26484880.htm18194296.htm  22378800.htm  22379520.htm  26458352.htm  26484896.htm18194480.htm  22378808.htm  22379528.htm  26458376.htm  26484912.htm 
    بعد از اینکه foremost کار خود را تمام کرد فایل recover شده (اگر امکان ریکاوری بوده باشد) درون دایرکتوری /mnt/foremost/htm موجود خواهد بود.

    نکته : همیشه امکان ریکاوری فایلی که میخواهید موجود نیست . در نتیجه همیشه بهترین گزینه ، دقت و احتیاط در استفاده از دستور rm می باشد.

    انواع فرمت های قابل استفاده در این دستور به شرح زیر می باشد :
    کد PHP:
    jpg
    gif
    png
    bmp
    avi
    exe
    mpg
    wav
    riff
    wmv
    mov
    pdf
    ole
    doc
    zip
    rar
    htm
    cpp 
    و all برای انتخاب همه فرمتها


    همچنین توصیه میشود مطالعه کنید :

    دستور rm برای حذف همه فایل های یک دایرکتوری در لینوکس

    نحوه کلون/بک آپ گرفتن از سرورهای لینوکس با استفاده از ابزار Mondo Rescue Disaster Recovery



    خلاصه

    در این مقاله ما نحوه جلوگیری از حذف یک فایل به صورت تصادفی و نحوه تلاش برای ریکاوری کردن آن (در زمان هایی که به صورت غیر ارادی این اتفاق رخ میدهد) توضیح دادیم. دقت کنید مدت زمانی که طول میکشد تا اجرای دستور foremost به پایان برسد بستگی به سایز پارتیشنی دارد که فایل حذف شده در آن قرار داشته است.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 01-25-2021, 10:31 PM.

درباره انجمن منطقه لینوکسی ها

انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

شبکه های اجتماعی
در حال انجام ...
X