آیا تا به حال برای شما این اتفاق رخ افتاده است که فایل های خود 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 عمل کنید :
با اجرا کردن دستور alias مطمئن خواهیم شد که دستور rm در حال حاضر به درستی alias شده است.
به هر حال این alias تنها در طول session کاربر جاری و در shell جاری باقی خواهد ماند. برای اینکه این تغییرات به صورت دائمی باشند شما باید آن را در فایل ~/.bashrc ذخیره کنید (در بعضی از توضیع های لینوکسی باید به جای این فایل از فایل ~/.profile استفاده کنید) همانند زیر میباشد.
به منظور اینکه تغییرات در فایل ~/.bashrc (یا ~/.profile) به سرعت اعمال شوند فایل را از shell جاری source کنید.
ابزار تست و موشکافی - Foremost
خوشبختانه اگر مراقب فایل های خود نبودید تنها میتوانید با استفاده از این ابزار فایل گم شده را در یک دیسک external یا usb درایو بازیابی کنید.
به هر حال اگر متوجه شدید که تصادفا یک فایلی را در سیستم خود حذف کردید و سیستم تان دچار مشکل شد میتوانید از این ابزار استفاده کنید. نکاهی به ابزار foremost (یک ابزار بررسی و ریکاوری) خواهیم انداخت که به منظور این چنین سناریوهایی طراحی گشته است.
برای نصب ابزار foremost در Centos / RHEL 7 شما ابتدا باید ریپازیتوری repoforg را نصب و فعال کنید.
در توضیح های Debian / Ubuntu برای نصب foremost همانند زیر عمل کنید.
این ابزار میتواند فایلها را هم از طریق image یک هارد (یک image file از هارد مثلا image.dd) و هم مستقیما از روی خود هارد ریکاوری کند. بعد از ریکاوری یک فایل متنی audit.txt نیز بهمراه فایلهای ریکاور شده در دیسک جدید موجود است که لیست فایلهای قابل ریکاوری میباشد. فرض میکنیم که فایل از دست رفته در پارتیشن sda مان بوده و برا ی recovery، در خاطر داشته باشید که ریکاور کردن فایل ها روی همان درایوی که فایل های حذف شده قرار داشته، کار عاقلانه ای نیست. اگر در طول ریکاوری شما سکتورهای یکسانی از دیسک را اشغال کنید که فایل های حذف شده از همان سکتورها را برای ذخیره شدن شان استفاده میکردند ممکن است که احتمال ریکاوری هیچ فایلی را نداشته باشید. بهمین دلیل یک دیسک مجزا برای این کار در نظر میگیریم.
ما در اینجا یک هارد جدید(sdb) به سیستم اضافه کردیم و آنرا پارتیشن (sdb1) و فرمت(ext4) نمودیم. به علاوه ضروری است که قبل از اجرای ریکاوری تمامی فعالیت های خود را روی سیستم متوقف کنید.
ابتدا پارتیشن sdb1 را روی سیستم mount میکنیم :
و اجرای دستور foremost :
با دستور زیر کل دیسک sda رو ریکاوری و روی sdb کپی میکنیم
نکته : دقت کنید دیسک جدید باید کاملا خالی باشد. اگر ارور زیر را به هنگام اجرای دستور دریافت کردید :
باید در دستور از آپشن -T استفاده کنید و یا دیسک sdb را کاملا خالی کنید :
اگر foremost را بخواهید روی یک image file از دیسک اجرا کنید باید به جای نام درایو نام فایل را قرار دهید :
نکته : فایلهای ریکاور شده به یوزر root تعلق دارند. در صورت نیاز ownership آنها را تغییر دهید :
برای اینکه تنها فایل audit.txt (شامل فایلهای قابل ریکاوری) را دریافت کنید از آپشن -w همانند دستور زیر استفاده میکنیم :
برای اینکه تنها فایلهای با فرمت خاص (مثلا jpg) را ریکاور کنیم از آپشن -t استفاده می کنیم :
,
و نتیجه ی دستور:
و یا مثلا برای recovery کردن فایلهای با فرمت htm در مسیر /boot :
قبل از همه چیز شما باید پارتیشن مورد نظر را شناسایی کنید.در اینجا /boot در پارتیشن /dev/sda1 قرار گرفته است. برای recover کردن آن همانند زیر از foremost استفاده میکنیم
بعد از اینکه foremost کار خود را تمام کرد فایل recover شده (اگر امکان ریکاوری بوده باشد) درون دایرکتوری /mnt/foremost/htm موجود خواهد بود.
نکته : همیشه امکان ریکاوری فایلی که میخواهید موجود نیست . در نتیجه همیشه بهترین گزینه ، دقت و احتیاط در استفاده از دستور rm می باشد.
انواع فرمت های قابل استفاده در این دستور به شرح زیر می باشد :
و all برای انتخاب همه فرمتها
همچنین توصیه میشود مطالعه کنید :
دستور rm برای حذف همه فایل های یک دایرکتوری در لینوکس
نحوه کلون/بک آپ گرفتن از سرورهای لینوکس با استفاده از ابزار Mondo Rescue Disaster Recovery
خلاصه
در این مقاله ما نحوه جلوگیری از حذف یک فایل به صورت تصادفی و نحوه تلاش برای ریکاوری کردن آن (در زمان هایی که به صورت غیر ارادی این اتفاق رخ میدهد) توضیح دادیم. دقت کنید مدت زمانی که طول میکشد تا اجرای دستور foremost به پایان برسد بستگی به سایز پارتیشنی دارد که فایل حذف شده در آن قرار داشته است.
در این مقاله ترفندی را با شما به اشتراک میگذاریم که ممکن است برای جلوگیری از این اتفاق به شما کمک کند و ابزاری که ممکن است در مواقعی که شما به اندازه کافی مراقب دستورات خود نباشیدکمک کند را مورد بررسی قرار خواهیم داد.
توصیه میشود این مقاله را هم مطالعه کنید :
نحوه پیدا کردن بدسکتور در لینوکس
آموزش Defrag کردن دیسک (پارتیشن ها و دایرکتوری ها) در لینوکس
ایجاد یک alias برای دستور "rm -i"
سوییچ -i زمانی که با rm مورد استفاده قرار گیرد (و همچنین به همراه ابزارهای دیگر فایل همانند cp یا mv) باعث میشود یک prompt دیگر قبل از حذف یک فایل نمایش داده شود. اتفاق مشابهی برای copy / move یا rename یک فایل در مسیری که یک نام مشابه در آن از قبل موجود است رخ خواهد داد.
این prompt به شما شانس دوباره ای برای بررسی این که آیا از حذف فایل مطمئن هستید میدهد - اگر آن را تایید کنید فایل حذف خواهد شد. در این مورد با عرض تاسف این ترفند از بی دقتی شما پشتیبانی نمیکنند.
برای جابه جا کردن rm با یک alias همانند rm -i عمل کنید :
کد PHP:
alias rm='rm -i'
کد 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 [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
کد 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
با دستور زیر کل دیسک sda رو ریکاوری و روی sdb کپی میکنیم
کد PHP:
sudo foremost -i /dev/sda -o /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.
کد PHP:
rm -rf /mnt/foremost/*
کد PHP:
sudo foremost -i image -o /mnt/foremost
کد PHP:
sudo chown -R habili:habili /mnt/foremost
کد PHP:
sudo foremost -w -i image -o /mnt/foremost
کد PHP:
foremost -t jpg -i /dev/sda -o /mnt/foremost
و نتیجه ی دستور:
کد PHP:
[root@linux-zone ~]# foremost -t jpg -i /dev/sda -o /mnt/foremost
foremost: /usr/local/etc/foremost.conf: No 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.conf: No 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? (y 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
نکته : همیشه امکان ریکاوری فایلی که میخواهید موجود نیست . در نتیجه همیشه بهترین گزینه ، دقت و احتیاط در استفاده از دستور rm می باشد.
انواع فرمت های قابل استفاده در این دستور به شرح زیر می باشد :
کد PHP:
jpg
gif
png
bmp
avi
exe
mpg
wav
riff
wmv
mov
pdf
ole
doc
zip
rar
htm
cpp
همچنین توصیه میشود مطالعه کنید :
دستور rm برای حذف همه فایل های یک دایرکتوری در لینوکس
نحوه کلون/بک آپ گرفتن از سرورهای لینوکس با استفاده از ابزار Mondo Rescue Disaster Recovery
خلاصه
در این مقاله ما نحوه جلوگیری از حذف یک فایل به صورت تصادفی و نحوه تلاش برای ریکاوری کردن آن (در زمان هایی که به صورت غیر ارادی این اتفاق رخ میدهد) توضیح دادیم. دقت کنید مدت زمانی که طول میکشد تا اجرای دستور foremost به پایان برسد بستگی به سایز پارتیشنی دارد که فایل حذف شده در آن قرار داشته است.