دیلیت کردن تصادفی فایل و فولدرها چیزی است که شاید برای هر کسی اتفاق افتاده باشد. اگر به جای ویندوز یا مک‌او‌اس، از یکی از توزیعات لینوکس نظیر Ubuntu استفاده می‌کنید، برای ریکاوری کردن فایل‌های حذف شده، اپلیکیشن‌های رایگان متعددی وجود دارد. البته پس از حذف کردن تصادفی فایل‌ها، هیچ فایل جدیدی روی پارتیشنی که فایل از آن حذف شده کپی نکنید چرا که موجب بازنویسی خانه‌های حافظه شده و ریکاوری کردن برخی از فایل‌ها غیرممکن می‌شود.

در ادامه به نحوه‌ی کار با ابزاری به اسم testdisk می‌پردازیم  روش ریکاوری کردن فایل‌ها را بررسی می‌کنیم.

آیا فایل حذف شده با دستور rm قابل ریکاوری کردن است؟

دستور rm یکی از دستورات ساده است که برای حذف کردن فایل یا فایل و فولدرها به کار می‌رود. شاید فایل و فولدرهایی با نام مشابه دارید و حین کار با این دستور در ترمینال، یک حرف را اضافه‌تر یا کمتر یا اشتباه تایپ کرده‌اید و نتیجه این شده که اشتباهاً فایل یا فولدر دیگری حذف شده است!

دستور rm از Wildcards که چیزی شبیه به عبارت‌های منظم است هم پشتیبانی می‌کند. به عنوان مثال می‌توانید برای حذف کردن تمام فایل‌های عکس JPG که نامشان با حرف a آغاز می‌شود و به حرف b منتهی می‌شود، از a*b.jpg استفاده کنید. اما استفاده از Wildcards نیاز به تخصص و تجربه دارد. با یک اشتباه ساده، فایل‌هایی که نباید! حذف می‌شوند.

سیستم فایل پیش‌فرض اغلب توزیعات لینوکس، ext4 است و در این سیستم فایل از inode برای نگهداری اطلاعاتی در مورد فایل‌ها نظیر نام، مالک فایل، سطح دسترسی‌ها و غیره استفاده می‌شود و از طرفی جدول inode برای نگهداری وضعیت inodeها وجود دارد.

یکی از داده‌های موجود در inode، آدرس موقعیت فایل روی حافظه یا hard link است. هر فایل حداقل یک هارد لینک دارد و هر زمان که فایل جدیدی روی هارددیسک ذخیره می‌کنید، هارد لینک جدیدی اضافه می‌شود و شماره‌ی آن یکی بیشتر از مورد قبلی است. هر زمان فایلی را حذف می‌کنید هم یک شماره کاهش پیدا می‌کند و هاردلینک حذف می‌شود.

نکته‌ی جالب این است که در لینوکس هم مثل ویندوز و اغلب سیستم عامل‌ها، زمانی که فایل را با روش معمول دیلیت می‌کنید، inode مربوط به فایل به عنوان بلااستفاده علامت‌گذاری می‌شود و برای استفاده‌ی مجدد علامت‌گذاری می‌شود اما در حقیقت داده‌های مربوط به فایل که روی هارددیسک یا SSD ذخیره شده، از بین نمی‌رود! به همین علت احتمال ریکاوری کردن فایل صفر نیست و در واقع می‌توانید با نرم‌افزارهای اسکن دیسک و بازیابی دیتا، فایل حذف شده را ریکاوری کنید.

همان‌طور که در ابتدای مطلب اشاره کردیم، به محض اینکه متوجه شدید که فایلی را به اشتباه حذف کرده‌اید، روی آن پارتیشن یا به اصطلاح درایو، فایل جدیدی ایجاد نکنید یا پیست نکنید تا از بازنویسی شدن خانه‌های حافظه جلوگیری شود.

در این حالت باید ابتدا مراحل ریکاوری کردن را طی کنید تا اگر امکان بازیابی وجود دارد، فایل بازیابی شود. با تعمیر کردن inode مربوط به فایلی که حذف شده، احتمال بازیابی کردن آن وجود دارد. حتی برخی افراد حرفه‌ای می‌توانند inode جدیدی برای فایل بسازند و بیت‌های از دست رفته را جایگزین کنند تا فایل کامل و قابل استفاده شود. اما کاربران معمولی که دانش و تخصص خاصی ندارند، می‌توانند از ابزارهای ساده نظیر testdisk برای اسکن دیسک و ریکاوری فایل‌ها استفاده کنند که در ادامه به آن می‌پردازیم.

روش نصب testdisk

برای نصب کردن این ابزار، اپلیکیشن ترمینال توزیعی از لینوکس که استفاده می‌کنید را اجرا کنید و بسته به اینکه ابزار مدیریت پکیج‌ها چیست، دستور نصب کردن ابزار testdisk را اجرا کنید. به عنوان مثال در لینوکس اوبونتو می‌بایست از فرمان زیر استفاده کنید:

و در لینوکس Fedora دستور زیر برای نصب کردن testdisk کاربرد دارد:

آموزش ریکاوری کردن فایل‌های حذف شده در لینوکس با testdisk

در لینوکس Manjaro هم می‌بایست از دستور pacman استفاده کنید:

آموزش ریکاوری کردن فایل‌های حذف شده در لینوکس با testdisk

در مورد سایر توزیعات کمی جستجو و بررسی کنید. پس از وارد کردن دستور و زدن Enter این ابزار نصب می‌شود و می‌توانید کار را شروع کنید.

روش اسکن کردن دیسک با testdisk

متأسفانه ابزار testdisk با وجود توانمندی و کارایی بالا، رابط کاربری گرافیکی ندارد و برای استفاده کردن از آن می‌بایست در محیط ترمینال دستوراتی وارد کنید و کارهایی انجام دهید. البته بیشتر مراحل استفاده از این ابزار غیرگرافیکی، با فشار دادن کلیدهای جهت کیبورد و فشار دادن Enter پیش می‌رود و ساده است.

بهتر است برای جلوگیری از اشتباهات و سازماندهی بهتر، یک فولدر جدید برای فایل‌هایی که بازیابی می‌کنید بسازید. به عنوان مثال ما از فرمان mkdir برای ساختن فولدری به اسم restored استفاده می‌کنیم:

آموزش ریکاوری کردن فایل‌های حذف شده در لینوکس با testdisk

برای اطلاعات بیشتر در مورد این دستور به مقاله‌ی کاربردی زیر توجه فرمایید:

اما دستور بعدی: برای تغییر دادن فولدر کاری به فولدر جدید از فرمان cd استفاده کنید:

آموزش ریکاوری کردن فایل‌های حذف شده در لینوکس با testdisk

اکنون می‌توانید ابزار testdisk را با دسترسی ادمین و در واقع استفاده از sudo، اجرا کنید:

آموزش ریکاوری کردن فایل‌های حذف شده در لینوکس با testdisk

testdisk از شما سوال می‌کند که آیا می‌خواهید فایل Log یا گزارش بسازید یا از فایل گزارشی که قبلاً ساخته شده استفاده کنید. البته می‌توانید به کلی هیچ گزارشی ثبت نکنید! مشکلی در عملکرد testdisk پیش نمی‌آید.

آموزش ریکاوری کردن فایل‌های حذف شده در لینوکس با testdisk

اگر مقصود شما ایجاد فایل گزارش جدید است، گزینه‌ی Create را انتخاب کرده و Enter را فشار دهید. فایل گزارش در همان فولدری ساخته می‌شود که testdisk در آن شروع به کار کرده است. به عبارت دیگر در مثال ما در فولدر restored ساخته می‌شود.

گام بعدی انتخاب کردن درایو است. درایوهای شناسایی شده و فایل‌های squashfs به شکل /dev/loop لیست می‌شود. در واقع به ازای هر یکی از اپلیکیشن‌های نصب شده از طریق پکیج‌های اسنپ، یک فایل اینچنینی ساخته می‌شود و نباید فایل‌های موجود را از این سیستم فایل‌ها حذف کرد. به هر حال می‌توانید با کلیدهای جهت یکی از درایوها را انتخاب کرده و Enter را فشار دهید. 

آموزش ریکاوری کردن فایل‌های حذف شده در لینوکس با testdisk

درایوهای HDD یا SSD موجود در کامپیوتر لینوکسی شما ممکن است بیش از یکی باشد. اگر لیست طولانی است، از گزینه‌های صفحه‌ی بعدی یا Next و صفحه‌ی قبلی یا Previous زیر لیست استفاده کنید و با زدن Enter به صفحات مختلف بروید. دقت کنید که برای انتخاب کردن گزینه‌های زیر لیست می‌بایست از یا استفاده کنید.

در نهایت پس از انتخاب کردن درایو، گزینه‌ی Proceed زیر لیست را انتخاب کنید و Enter را فشار دهید.

آموزش ریکاوری کردن فایل‌های حذف شده در لینوکس با testdisk

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

آموزش ریکاوری کردن فایل‌های حذف شده در لینوکس با testdisk

در صفحه‌ی بعدی لیستی از توانمندی‌های testdisk ظاهر می‌شود. گزینه‌ی Advanced‌ را انتخاب کنید و Enter را فشار دهید.

آموزش ریکاوری کردن فایل‌های حذف شده در لینوکس با testdisk

در صفحه‌ی بعدی منوی انتخاب پارتیشن ظاهر می‌شود. بسته به این که فایل از کدام پارتیشن حذف شده، یکی از موارد را انتخاب کنید. در مثال ما هارددیسک انتخاب شده فقط یک پارتیشن دارد و کار ساده است اما در کامپیوتر شما ممکن است اینطور نباشد.

گام بعدی انتخاب کردن گزینه‌ی List پایین صفحه با کلیدهای جهت چپ و راست است. سپس Enter را فشار دهید تا منوی انتخاب فایل ظاهر شود.

آموزش ریکاوری کردن فایل‌های حذف شده در لینوکس با testdisk

در منوی انتخاب فایل، با استفاده از کلیدهای  یا  و یا استفاده از کلیدهای PgUp و PgDn  می‌توانید فایل و فولدرها را انتخاب کنید. برای باز کردن یک فولدر از کلید Enter یا جهت  استفاده کنید و برای خروج از فولدر، کلید  یا Esc را فشار دهید.

آموزش ریکاوری کردن فایل‌های حذف شده در لینوکس با testdisk

فایل‌های مربوط به همه‌ی کاربران یک سیستم، در فولدر Home ذخیره می‌شود. لذا در این مثال فولدر Home یا خانه را باز کرده‌ایم و در ادامه فولدر مربوط به حساب کاربری موردنظر را باز کرده‌ایم.

آموزش ریکاوری کردن فایل‌های حذف شده در لینوکس با testdisk

مواردی که در لیست با رنگ قرمز مشخص شده، موارد حذف شده است. موردی که قصد بازیابی کردن آن را دارید پیدا کنید و سپ کلید c (کوچک) کیبورد را برای کپی کردن آن فشار دهید.

آموزش ریکاوری کردن فایل‌های حذف شده در لینوکس با testdisk

صفحه‌ای برای مشخص کردن مقصد فایلی که حذف شده و آن را با زدن c کپی کرده‌اید، باز می شود. اولین فولدری که به عنوان مقصد پیشنهاد شده، همان فولدری است که در ابتدا testdisk را در آن اجرا کرده‌اید که در مثال ما فولدر restored است. برای بازیابی کردن فایل و کپی کردن در این فولدر، کلید C (بزرگ) را فشار دهید.

آموزش ریکاوری کردن فایل‌های حذف شده در لینوکس با testdisk

پس از کپی شدن فایل به صفحه‌ی انتخاب فایل‌ها برمی‌گردید و می‌توانید یک یا چند فایل دیگر را هم با همین روش انتخاب کرده و در فولدر موردنظر کپی کنید.

چک کردن فایل‌های بازیابی شده

برای لیست کردن فایل‌هایی که بازیابی کرده‌اید، به فولدر مقصد بروید. خوشبختانه فایل‌هایی که بازیابی کرده‌اید همگی در یک فولدر قرار نمی‌گیرد بلکه با توجه به ساختار درختی فولدرها، داخل فولدر مربوطه قرار می‌گیرد و لذا با نگاهی به مسیر فایل، متوجه می‌شوید که قبلاً در چه فولدری از هارددیسک یا SSD قرار داشته است.

در هر صورت برای لیست کردن محتویات فولدر restored یا هر فولدر دیگری، ابتدا با دستور cd فولدر کاری را تغییر دهید و سپس از دستور ls استفاده کنید.

در ادامه می‌توانید مجدداً از دستور cd استفاده کنید و یکی از فولدرهایی که در لیست رویت می‌کنید را باز کنید.

دقت کنید که اگر فولدر home داخل restored دیده می‌شود، برای سوییچ کردن به آن، / اضافی تایپ نکنید چرا که در این صورت فولدر کاری به فولدر home اصلی تغییر می‌کند و نه فولدر home زیرمجموعه‌ی restored.

به عنوان مثال با دستور زیر فولدر فایل‌های ریکاوری شده مربوط به کاربری به اسم dave باز می‌شود:

برای چک کردن لیست فایل‌ها باز هم می‌توانید دستور ls را اجرا کنید.

آموزش ریکاوری کردن فایل‌های حذف شده در لینوکس با testdisk

اگر لیست با اطلاعات و جزئیات کامل لازم دارید، فراموش نکنید که از سوییچ -l به معنی long استفاده کنید:

آموزش ریکاوری کردن فایل‌های حذف شده در لینوکس با testdisk

همان‌طور که در تصویر فوق مشاهده می‌کنید، مالک فایل‌های بازیابی شده، حساب root است. برای تغییر مالک فایل‌های ریکاوری شده، می‌توانید از فرمان chown استفاده کنید.

آموزش ریکاوری کردن فایل‌های حذف شده در لینوکس با testdisk

یک بار دیگر با اجرا کردن فرمان لیست، می‌توان مالکیت فایل‌ها را چک کرد:

آموزش ریکاوری کردن فایل‌های حذف شده در لینوکس با testdisk