برگرداندن پارتیشنها و فایلهای پاک شده در لینوکس(2816 مجموع کلمات موجود در متن) (16473 بار مطالعه شده است)
برگرداندن پارتیشنها و فایلهای پاک شده در لینوکس
بـــرای کســــانی کــه بــا لینوکس کار میکنند و عـــادت دارنــد چند لینوکس بر یک دستگاه داشته باشند و مخصوصاً سیستمعامل عمو بیل را هم کنارش نصب کنند، پریدن پارتیشنها و از دست دادن اطلاعات چیز تازهای نیست و میتوان گفت این شتریست که یکبار تا بحال دم در خانهشان خوابیده و اگر هم هنوز نخوابیده بالاخره میخوابد! کل این مقاله به ۳ قسمت تقسیم شده است: مقدمه، برگرداندن فایلهای پاک شده و برگرداندن پارتیشنهای پاک شده.
مقدمه
اگر بخواهم کمی مقدمه برای ایـــن ۲ برنامه مفیدی که پیدا کــــردهام بنویسم، باید بگویم که من تا بحال دو بار مرتکب حماقت format کردن شدهام. البته هر دو بار هم بدلیل نصب سیستم عامل عمو بیل این فاجعه اتفاق افتاده است. بار اول که به اشتباه هارد ۱۲۰GB خـــودم را بـــه جای یک پارتیشن ۱۰GB به کل format کردم و تــازه بعدش فهمیدم چه کردهام. بار دوم هم اشتباهی با دستور [۱] زیر تمام MBR را [۲] پاک کردم:
#dd if=/dev/zero of=/dev/hda bs=512 count=1
بــنابراین دو حـــالت داریم: یــکی اینکه شما تمام فایلهایتان را دستی پاک کنید (مثلاً فرمت کـنـید) و بخواهید فایلها را برگردانید، دیگری اینکه partition table به کل پاک شود و یا قسمت از آن صدمه ببیند. از علایم صدمه دیدن partition table این که یکدفعه نتوانید یک پارتیشن را در سیستمتان ببینید، پارتیشنی که میدانید وجود داشته و کار میکرده.
من فکر میکنم برنامه اولی که معرفی میکنم (Stellar Phoenix Linux) قابلیت اینجا کار دوم (برگرداندن پارتیشنهای پاک شده) را هم داشته باش (تقریبا مطمئنم)، اما به دلیل اینکه این برنامه را باید
خریداری کرد و اینکه برنامه دومی که معرفی میکنم خیلی راحتتر کار برگرداندن پارتیشنهای پاک شده را انجام میدهد و نیاز هم به نصب ندارد و کاملاً هم آزاد و با پروانه GNU/GPL منتشر شده است، برگرداندن پارتیشنهای پاک شده را به عهده آن میگذارم.
مورد
اول:
برگرداندن
فایلهای پاک شده توسط Stellar
Phoenix Linux
اشاره کــردم کــه بار اول چطور ۱۲۰GB هاردم را بجای ۱۰GB به کل format کرده بودم. میشود گفت که تمام کتابها و برنامههایم و بطور کلی همه دادههایم در پارتیشنهای لینوکسی با فرمت ext3 بود و هر چه برنامه recovery در بازار بود صرفاً به بازگرداندن پارتیشنهای fat و ntfs افتخار میکردن و هیچ اثری از ext3 در آنها نبود. با مجاهدتهای خستگیناپذیر به برنامهای با نام Stellar Phoenix For Linux رسیدم.
این برنامه تحت ویندوز اجرا میشد. بنابراین ناچار شدم همان ۱۲۰GB فرمت شده را مجدد پارتیشنبندی کنم و ویندوز نصب کنم ۳ و تازه بعد برنامه را اجرا کنم. برنامه بینقص اجرا شد و بعد از یک scan تقریباً سریع (کمتر از ۵ دقیقه) تمام پارتیشنهای گــم شــــده لینوکسی مــن را نشان داد و این امــکــان را به مــن داد تــا بـا ولــع هر چه تمامتر محتوای هر پارتیشن را browse کــنــم و تمام فایلــهای گم شدم را ببینم. بعد از اینکه تمام فایلهایی که مخواستم برگردانم را انتخاب کردم و کلید start recovery را فشار دادم، برنامه پیغام داد که از اینجا به بعد باید برنامه را register کنی، قیمت برنامه هم اگر درست یادم مانده باشد در حدود ۷۹ دلار است و من آب از لوچه آویزان و سرگردان ناچار شدم به روشهای غیر متعارفی برای register کردن برنامه متوصل شوم [۴] که آخرش هم registerاش کردم و تمام اطلاعات را برگرداندم.
چـــون این برنامـــه در محیط ویندوز نصب میشود، کار کردن با آن بسیـــار ساده است، تنها در حد چند کلیک و انتخاب partitionهای از بین رفتهای که میخواهید جستجو کنید. بنــابراین نیــازی به screenshot و نــحوه کار و از اینجور حرفها نمیبینم. این برنامه را میتوانید از آدرس زیر دانلود کنید:
http://www.stellarinfo.com/linux-data-recovery.htm
در همان صفحه هم لینک reviewها وجود دارد که بد نیست مطالعه کنید.
تا فراموش نکردم بگویم هیــچ برنامهای بــرای بـرگـردانـــدن دادههای روی یک پارتیشن ReiserFS تــا به امروز ندیدم، بنابر این اگر تنها فرقی کـــه بیــن ReiserFS و ext2/3 قائل هستید این است که اولـــی بــا R شـــروع مــیشــود و دومـــی با e، لزومی ندارد از ReiserFS استفاده کنید. به همون ext3 بسنده کنید.
برنامه TestDisk
تـسـت دیـسک یک برنامه بسیار قوی برای بازیابی پارتیشنها و همچنین bootable کــردن دیــسکـهایی اســت که دیگر بوت نــمیشونــد. TestDisk مـیتواند تحـت Dos، ویندوز ۳۲ بیتی (NT4، 2000 و XP)، لینوکسهای مختلف، FreeBSD و NetBSD و SunOS و MacOS اجرا شــود. ایــن بــرنـامـه مـستقـل از محــیط اجرایی، میتواند پارتیشنهای گمشده زیر را شناسایی کند:
BSD
disklabel ( FreeBSD/OpenBSD/NetBSD )
CramFS,
Compressed File System
DOS/Windows
FAT12, FAT16 and FAT32
HFS
and HFS+, Hierarchical File System
JFS,
iBM's Journaled File System
Linux
Ext2 and Ext3
Linux Raid
RAiD
1: mirroring
RAiD
4: striped array with parity device
RAiD
5: striped array with distributed parity information
RAiD
6: striped array with distributed dual redundancy information
Linux
Swap (versions 1 and 2)
LVM
and LVM2, Linux Logical Volume Manager
Mac
partition map
Netware
NSS
NTFS
( Windows NT/2K/XP/2003 )
ReiserFS
3.5 and 3.6
Sun
Solaris i386 disklabel
UFS
and UFS2 (Sun/BSD/...)
XFS, SGi's
Journaled File System
این برنامه و مستندات کاملش را میتوانید در آدرس زیر پیدا کنید:
http://www.cgsecurity.org
من خودم نسخه لینوکــسی را نصب کردم. برنامه دو نوع نسخه لینوکسی دارد، یک نوع بنام linux static کـــه باید بر روی دیسکت شده و مـــورد استفاده قرار بگیرد. این دیسکت bootable نیست، اما اگر دیسکت و یا cd بوت ندارید هم نگران نباشید، در سایت TestDisk به هنگام دانلود این نسخه، آدرس یک دیسکت live کوچک را هم در دسترس گذاشته تا بتوانید اول سیستم را بوت کرده و بعد با TestDisk کار کنید. نسخه دیگری هم که ارائه شده نسخه قابل نصب است که میتوانید بر روی سیستم نصب کنید. من چون دو هارد داشتم و یکی مشکل پیدا کرده بود، توانستم بر روی FC3ای که روی هارد دوم داشتم نصبش کنم. البته جالب است که در خود سایت اشاره شده این برنامه در توزیعهای مختلفی مثل Gentoo، Knoppix و چندین و چند توزیع دیگر بصورت پیشفرض وجود دارد.
اگــر میخواهیــد از linux static استفاده کنید که تکلیفتان مشخص است، باید چیزی را که دانلود میکنید رو دیسکت کپی کنید، و اگر هم میخواهید نصب کنید که دو نسخه دارد، هم بصورت rpm و هم کامپایلی که هر کدام را خواستید میتوانید انتخاب و نصب کنید.
بعد از اینکه برنـــامه را نصب کردید، با کاربر root دستور testdisk را اجرا کنید. البته با اینکه من برنامه را کامپایل کردم و make install را هـــم در آخــر زدم، باز هم برنامه را در PATH نصب نکرد، بنابر این اگر testdisk زدید و اجرا نشد چندان وحشت نکنید (البته فرض را بر این میگیریم که به هنگام نصب هیچگونه خطایی دریافت نکردید!)، با یک locate ساده میتوانید پیداش کنید. در مورد کاربران Fedora Core باید بگویم که برنامه در مسیر /usr/sbin قرار خواهد گرفت.
بعد از اجرای برنامه با متن زیر روبرو میشوید:
هــمانطور
که میبینید هارد دیسکهای شما را در این
صفحه نمایش میدهد.
هاردی
را که میخواید انتخاب میکنید و گزینه
proceed
را
انتخاب میکنید.
در
صفحه دوم باید نوع partition
table را
انتخاب کنید.
در
بیشتر موارد همان گزینه اول (intel/PC
Partition) درست
است، اگر کسی هم mac
و
یا SunOS
دارد
که باید چه کند.
بـــعد
از enter
کـــردن
بر گزیـــنه مورد نظر، به صفحه سومی هدایت
میشوید که گزینههای مختلفی دارد.
اولین
گزینه Analyse
است،
همان گزینه را انتخاب کنید و enter
را
بزنید.
البته
دقت کنید که پایین همین صفحه نوشته که
هارد شما ممکن است geometryهای
مختلفی داشته باشد و برای برگرداندن صحیح
پارتیشنها باید از geometry
صحیح
استفاده کنید.
اگر
دقت کنید در همین صفحه دگمهای به نام
Geometry
هست.
در
پاراگراف بعدی (بعد
از اینکه آنالیز تمام شد)
در
این مورد بحث میکنم، فعلاً جای این کلید
را به خاطر داشته باشید.
حالا
باید کمی (کمی
بیشتر از کمی)
منتظر
بمانید تا آنالیز برنامه تمام شود.
وقتی
که آنالیز تموم شد، بسیار احتمال داره که
یک warning
ببینید
مبنی بر اینکه نرمافزار حدس میزند
geometry
درست
هارد شما مثلاً ۲۵۵ بـاشد.
به
هیچ عنوان این warning
را
دست کم نگیرید.
حتماً
مقدار درستی که حدس زده را یاد داشت کنید
و escape
بزنید
و به منوی قبلی برگردید و وارد بخش geometry
شود.
تاکید
میکنم به هیچ عنوان این اخطار را دست کم
نگیرید.
خودش
یک سری توضیحات در سایت دارد مبنی بر اینکه
اصلاً مقدار head
درست
یعنی چی و به چه دردی میخورد.
من
همه آن توضیحات را نفهمیدم، ولی به زبان
ساده هارد درایو ها اطلاعات را در قسمتهایی
با ظرفیت یکسان (مثلا
هر ۱۶ تا ۱۶ تا و یا ۲۵۵ تا ۲۵۵ تا)
ذخیره
میکنند و برای برگرداندن اطلاعات اگر
فقط معلوم باشد کــه این عدد ثابت چقدر
است، خیلی راحت میشود همه چیز را برگرداند.
خیلی
ساده هم میتوانید تاثیر این عدد را
ببینید، وقتی که وارد قسمت geometry
شوید
و گزینه Heads
را
انتخاب کنید و عدد صحیح را وارد نمایید،
و دوباره برگردیــد و Analyse
کنید،
میبینید که در چند ثانیه همه پارتیشنها
را پیدا کرده و دیگر آنالیز آنقدر وقت
نمیگیرد.
اگر
عدد غلط را انتخاب کنید، یک جدول از تمام
پارتیشنها جلوی شما ظاهر میشود که در
کنار همه کاراکتر D
یا
همان Deleted
قــرار
دارد و شما مثل یک پازل باید سعی کنید
بفهمید کدام پارتیشن primary،
کدام extended
و
حالا کدام logical
هست!
بعد
هم هر چه آن را بالا و پایین کنید، باز هم
نمیتوانید تمام پارتیشنها را برگردانید!
بنابراین
اصلاً معطل نکنید و آن عدد Heads
را
پیدا کرده و درست وارد کنید.
بعد از
اینکه عدد صحیح را وارد کردید و به قسمت
Analyse
برگشتید،
نرمافزار به سرعت partition
table درست
را برای شما پیدا میکند و به رنگ سبز
نمایش میدهد.
اگر هر
کدام از پارتیشنها سفید بود و کنارش
کاراکتر D
قرار
داشت، واقعاً برای شما متاسفم!
البته
نه آنقدر، چون برای خودم قبل از اینکه
بفهمم آن عدد Heads
را
واقعاً باید وارد کرد، همه پارتیشنها
سفید بود.
اگر
حتی بعـــد از وارد کردن درست عدد Heads
و
زدن گزینه Ok
(طبق
دومین شکل قبلی)
بــاز
هم پارتیشن سفید رنگی میبینید، راهحلی
به نظر من نمیرسد، چــون خودم به چنین
مشکلی برنخوردم.
در
ایــــن حالت با خود Christophe
که
emailاش
بالای صفحه سایت هست تماس بگیرید.
یکــی
از مزیتهایی که برنامه دارد این است که
میتوانید روی هر پارتیشن رفــته و با
زدن کلیــد p
وارد
پارتیشن شوید و دادههــای عزیزتــان
را ببـینید.
البته
برای دیدن محتویات هر نوع پارتیشنی بایـد
بستههای لازمــه را از قبل نصب داشته
باشید، که معمولاً تنها مشکلی که ممکن
است پیش بیایـد برای پارتیشنـهـای NTFS
هســت
کــه آن هــم چندان مهم نیست، چون اگر سبز
شده باشد یعنی برش خواهید گرداند، لازم
نیست حتماً داخلش معلوم باشد.
وقتی
از همه چیز راضی بودید، enter
را
میزنید و بعد از پایین صفحه گزینه Write
را
انتخاب میکنید.
در پایان
امیدوارم توانسته باشم در این موقعیت سخت
کمکی کنم و شما موفق شوید اطلاعاتتان را
برگردانید.
توصــیه
نـهایی:
همیــشه
بــا دستور زیــر یــک image
از
parition
tableتان
داشــته باشید، در چنین مواقعی خیلی بدرد
میخورد:
#dd if=/dev/hda of=HDA1stTrack.bin bs=512 count=63
البته
اگر شما هم مثل من باشید حتماً به این
توصیه عمل خواهید کرد!
با
نویسنده این برنامه هم تماس گرفتم و از
او خواستم اگر برنامه باز متن مشابهی برای
برگرداندن اطلاعات پاک شده (کاری
که اینجا با Stellar
Phoenix Linux انجام
دادیم)
سراغ
دارد معرفی کند، که گفت سراغ ندارد.
خوشحال
میشوم اگر کسی چنین چیزی میشناسد که
با اکثر پارتیشنها کار میکند، یک خبری
هم به ما بدهید.
بعضی
برنامههای قدیمی هستند که با ext2
کار
میکنن، ولی واقعاً هیچ نسخه شسته و
رفتهای که بتواند همه چیز را برگرداند
تا به امروز مشاهده نشده است!
نویسنده:
بیژن
هومند hoomand@gmail.com
[۱]. عمیقاً به شما توصیه میکنم که اگر با دستور dd آشنا نیستید یک man dd بزنید. دستور واقعاً جالبی است که بر اساس گفته صریح GNU اینکار را انجام میدهد: convert and copy
در پارامتر اول (if) آدرس source را میدهید و در پارامتر دوم (of) آدرس target. مثلاً فرض کنید بخواهید از یک dvd فایل iso بسازید، تنها کافیست بنویسید:
#dd if=/dev/dvdrom of=/home/bijan/myimage.iso bs=1024
گزینه bs هم فقط اندازه chunk را مشخص میکند. بنابراین اگر بخواید MBR هارد را پاک کنید، تنها باید بدانید که ۵۱۲ بایت اول هر هارد همون MBR است، با علم به این مطلب میتوانید /dev/zero را که اسمش همراهش است(صفر کننده) را روی MBR کپی کنید (همان کاری که من بالا انجام دادم!)
[۲]. ۵۱۲ بایت اول هر هارد دیسک که اطلاعات تمام پارتیشنها (partition table) و همچنین بوت لودر (اگر در MBR نصب کرده باشید که معمولاً میکنید) آنجا قرار دارد.
[۳].که این کار بسیار احمقانهاست، چون وقتی اطلاعاتت میپره و میخوای برگردونی به هیچ عنوان دیگه نباید رو اون هارد چیزی نصب کنی، بخاطر اینکه ترتیب نوشتن اطلاعات رو هارد randome ه (البته فکر نمی کنم اونقدر دیگه تو این عصر جدید اطلاعات random باشه) و ممکنه حتی با کپی ۱۰MB اطلاعات چندین و چند صد مگ را از دست بدی
[۴].برای اون عده از دوستان که خیلی کاسه داغتر از آش هستن و محدودیتهای یک کاربر خونگی و همچنین شرایط زندگی در ایران و اون حالت لعنتی از دست دادن کل اطلاعات را درک نمی کنن، روش غیر متعارف را "پرداخت ۷۹ دلار" به صورت تمام و کمال و نقدی به شرکت نویسنده معنا می کنم. از اینجور بحثهای اخلاقی و اینکه آیا باید کاملا پایبند بود، اصلا نبود و یا تا جایی که میشه پایبند بود خیلی در گرفته و مثل قضیه تخم مرغ و جوجه آخرش هم به جایی نرسیده، بنابر این هر جور که وجدانتون اجازه میده میتونید رفتار کنید.
PDF Version
|