FSCK.FAT(8) دستورهای مدیریتی و نگهداری FSCK.FAT(8)

fsck.fat - بررسی و تعمیر سیستمفایلهای MS-DOS FAT

fsck.fat [<گزینهها>] <دستگاه>

دستور fsck.fat یکپارچگی سیستمفایلهای MS-DOS FAT (شامل FAT12، FAT16 و FAT32) را اعتبارسنجی کرده و خرابیها را تعمیر میکند.

مشکلات زیر در سیستم‌فایل می‌توانند برطرف شوند (به همین ترتیب):

  • جدول FAT حاوی شماره خوشه‌های نامعتبر است. خوشه به EOF (پایان فایل) تغییر می‌یابد.
  • زنجیره خوشه‌های فایل شامل یک حلقه است. حلقه شکسته می‌شود.
  • خوشه‌های خراب (خطاهای خواندن). خوشه‌ها به عنوان خراب علامت‌گذاری شده و از فایل‌های مالک آن‌ها جدا می‌شوند. این بررسی اختیاری است.
  • دایرکتوری‌هایی با تعداد زیادی ورودی خراب (احتمالاً آسیب‌دیده). دایرکتوری می‌تواند حذف شود.
  • فایل‌های . و .. که دایرکتوری نیستند. آن‌ها می‌توانند حذف یا تغییر نام داده شوند.
  • دایرکتوری‌های . و .. در دایرکتوری ریشه. آن‌ها حذف می‌شوند.
  • نام‌های فایل خراب یا نامعتبر. می‌توانند تغییر نام داده شوند.
  • ورودی‌های تکراری در دایرکتوری. می‌توانند حذف یا تغییر نام داده شوند.
  • دایرکتوری‌هایی با فیلد اندازه غیرصفر. اندازه آن‌ها روی صفر تنظیم می‌شود.
  • دایرکتوری . به دایرکتوری والد اشاره نمی‌کند. اشاره‌گر آغازین تنظیم می‌شود.
  • دایرکتوری .. به والد دایرکتوری والد اشاره نمی‌کند. اشاره‌گر آغازین تنظیم می‌شود.
  • موارد . و .. دو ورودی نخست در یک دایرکتوری غیرریشه نیستند. این ورودی‌ها ایجاد شده و در صورت نیاز موقعیت‌های اشغال‌شده جابه‌جا می‌شوند.
  • شماره خوشه آغازین یک فایل نامعتبر است. فایل کوتاه (Truncate) می‌شود.
  • فایل شامل خوشه‌های خراب یا آزاد است. فایل کوتاه می‌شود.
  • زنجیره خوشه‌های فایل طولانی‌تر از مقدار مشخص‌شده در فیلدهای اندازه است. فایل کوتاه می‌شود.
  • دو یا چند فایل در خوشه(های) یکسانی مشترک هستند. همه فایل‌ها به جز یکی کوتاه می‌شوند. اگر فایلی که کوتاه می‌شود یک دایرکتوری باشد که قبلاً خوانده شده است، بررسی سیستم‌فایل پس از کوتاه‌سازی مجدداً آغاز می‌گردد.
  • زنجیره خوشه‌های فایل کوتاه‌تر از مقدار مشخص‌شده در فیلدهای اندازه است. فایل کوتاه می‌شود.
  • برچسب نام حجم در دایرکتوری ریشه یا برچسب در سکتور راه‌انداز نامعتبر است. برچسب‌های نامعتبر حذف می‌شوند.
  • برچسب نام حجم در دایرکتوری ریشه و برچسب در سکتور راه‌انداز متفاوت هستند. برچسب نام حجم از دایرکتوری ریشه در سکتور راه‌انداز کپی می‌شود.
  • خوشه‌ها به عنوان استفاده‌شده علامت‌گذاری شده‌اند اما به هیچ فایلی تعلق ندارند. آن‌ها به عنوان آزاد علامت‌گذاری می‌شوند.

علاوه بر این، مشکلات زیر شناسایی می‌شوند، اما تعمیر نمی‌گردند:

•
پارامترهای نامعتبر در سکتور راه‌انداز (Boot sector)

هنگامی که fsck.fat یک سیستم‌فایل را بررسی می‌کند، تمام تغییرات را در حافظه جمع‌آوری کرده و تنها پس از پایان همه بررسی‌ها آن‌ها را اعمال می‌کند. این رفتار را می‌توان با استفاده از گزینه -w غیرفعال کرد.

دو گونه مختلف از سیستم‌فایل FAT پشتیبانی می‌شوند. حالت استاندارد، سیستم‌فایل‌های FAT12، FAT16 و FAT32 است که توسط مایکروسافت تعریف شده و به طور گسترده بر روی دیسک‌های سخت و رسانه‌های جداشدنی مانند فلش‌مموری‌های USB و کارت‌های SD به کار می‌روند. گونه دیگر نگارش قدیمی Atari است که در Atari ST به کار می‌رفت.

تفاوت‌های جزئی در قالب Atari وجود دارد: برخی فیلدهای سکتور راه‌انداز اندکی متفاوت تفسیر می‌شوند و ورودی‌های ویژه FAT برای پایان فایل و خوشه‌های خراب می‌توانند متفاوت باشند. در MS-DOS مقدار 0xfff8 برای پایان فایل (EOF) استفاده می‌شود و Atari به طور پیش‌فرض 0xffff را به کار می‌برد، اما هر دو سیستم تمامی مقادیر از 0xfff8–0xffff را به عنوان پایان فایل شناسایی می‌کنند. سیستم‌عامل MS-DOS تنها از 0xfff7 برای خوشه‌های خراب استفاده می‌کند، در حالی که در Atari مقادیر 0xfff0–0xfff7 برای این منظور هستند (اما مقدار استاندارد همچنان 0xfff7 است).

تعمیر خودکار سیستم‌فایل. نیازی به دخالت کاربر نیست. هر زمان که بیش از یک روش برای حل یک مشکل وجود داشته باشد، رویکردی که کمترین آسیب را به همراه دارد به کار گرفته می‌شود.
انتخاب استفاده از گونه آتاری سیستم‌فایل FAT در صورتی که هنوز فعال نباشد؛ در غیر این صورت سیستم‌فایل استاندارد FAT انتخاب می‌شود. چنانچه mkfs.fat بر روی 68k Atari Linux اجرا شود، این گزینه به صورت پیش‌فرض فعال است.
انجام بررسی فقط‌خواندنی سکتور راه‌انداز (Boot sector).
استفاده از صفحه کد داس PAGE برای رمزگشایی نام‌های کوتاه فایل. به طور پیش‌فرض از صفحه کد 850 استفاده می‌شود.
حذف فایل مشخص‌شده. اگر بیش از یک فایل با این نام وجود داشته باشد، نخستین فایل حذف می‌شود. این گزینه می‌تواند بیش از یک بار مشخص شود.
بازیابی زنجیره خوشه‌های استفاده‌نشده و ذخیره آن‌ها در قالب فایل. به طور پیش‌فرض، خوشه‌های استفاده‌نشده به فضای آزاد دیسک اضافه می‌شوند مگر در حالت خودکار (-a).
مشخص کردن شماره جدول FAT با مقدار NUM جهت دسترسی به سیستم‌فایل. به طور پیش‌فرض مقدار 0 در نظر گرفته می‌شود و سپس نخستین جدول FAT آسیب‌ندیده انتخاب می‌گردد. آسیب‌ندیده بدین معناست که جدول FAT دارای خوشه نخست معتبر است. اگر از مقدار پیش‌فرض 0 استفاده شود و تمامی جداول FAT آسیب دیده باشند، fsck.fat متوقف شده و تلاشی برای تعمیر سیستم‌فایل FAT انجام نمی‌دهد. اگر مقدار غیرصفر NUM تعیین شود، fsck.fat از جدول FAT شماره NUM برای تعمیر سیستم‌فایل FAT استفاده خواهد کرد. اگر جدول FAT شماره NUM دارای خوشه نخست خراب باشد، fsck.fat آن را تعمیر می‌کند. در هر حال، اگر سیستم‌فایل FAT جداول FAT بیشتری داشته باشد، محتوای تعمیرشده جدول انتخابی به جداول دیگر FAT رونویسی می‌شود. برای تعمیر خوشه نخست خراب، فراخوانی fsck.fat با مقدار غیرصفر NUM الزامی است.
فهرست کردن نام مسیر فایل‌های در حال پردازش.
حالت بدون عملیات: بررسی غیرتعاملی خطاها، بدون نوشتن هیچ داده‌ای در سیستم‌فایل.
مشابه با -a، جهت سازگاری با سایر نسخه‌های *fsck.
تعمیر تعاملی سیستم‌فایل. هر زمان که بیش از یک رویکرد برای رفع یک ناهماهنگی وجود داشته باشد، از کاربر نظرخواهی می‌شود. این حالت پیش‌فرض است و این گزینه صرفاً برای سازگاری رو به عقب حفظ شده است.
نام‌های کوتاه فایل (8.3) که در میان خود دارای فاصله (Space) هستند را نامعتبر در نظر می‌گیرد، همان‌طور که در نگارش‌های پیشین این برنامه مرسوم بود. اگرچه چنین نام‌هایی در مشخصات FAT ممنوع نیستند و ابزارهای بررسی سیستم‌فایل مایکروسافت هرگز آن‌ها را خطا در نظر نمی‌گرفتند، اما بسیاری از برنامه‌های DOS قادر به کار با فایل‌هایی با چنین نام‌هایی نیستند. استفاده از این گزینه می‌تواند دسترسی به آن‌ها را برای این برنامه‌ها فراهم کند.
نام‌های کوتاه فایلی که با فاصله آغاز می‌شوند فارغ از تنظیمات این گزینه، نامعتبر تلقی می‌گردند.
نگارش‌های پیشین این برنامه به طور استثنایی با EA DATA. SF و WP ROOT. SF به عنوان نام‌های کوتاه معتبر رفتار می‌کردند؛ استفاده از این گزینه آن استثنا را حفظ نخواهد کرد.
علامت‌گذاری خوشه‌های غیرقابل‌خواندن به عنوان خراب (Bad).
تلاش برای بازگردانی فایل حذف‌شده (Undelete) مشخص‌شده. دستور fsck.fat تلاش می‌کند زنجیره‌ای از خوشه‌های پیوسته تخصیص‌نیافته را با شروع از خوشه آغازین فایل حذف‌شده تخصیص دهد. این گزینه می‌تواند بیش از یک بار مشخص شود.
برچسب‌های حجم و راه‌انداز حاوی حروف کوچک را نامعتبر دانسته و تنها نویسه‌های بزرگ را مجاز می‌شمارد. چنین برچسب‌هایی بر طبق مشخصات فنی FAT ممنوع هستند، اما به طور گسترده توسط ابزارهای لینوکس استفاده می‌شوند. علاوه بر این، سیستم‌های MS-DOS و Windows مشکلی در خواندن آن‌ها ندارند. از این رو، برچسب‌های حجم و راه‌انداز دارای حروف کوچک به صورت پیش‌فرض مجاز شناخته می‌شوند.
حالت پرگو (Verbose). خروجی حاوی جزئیات بیشتری تولید می‌کند.
انجام یک مرحله بازبینی و اعتبارسنجی مجدد (Verification pass). بررسی سیستم‌فایل پس از اجرای اول دوباره تکرار می‌شود. مرحله دوم هرگز نباید خطای قابل تعمیری را گزارش کند. این مرحله ممکن است به طور قابل توجهی بیشتر از مرحله نخست به طول بینجامد، زیرا اجرای اول ممکن است فهرست بلندی از تغییرات ایجاد کرده باشد که باید برای هر بار خواندن از دیسک بررسی شوند.
ایجاد سیستم‌فایل از گونه TYPE. مقادیر قابل قبول عبارتند از standard و atari (با هر ترکیبی از حروف کوچک و بزرگ). برای مشاهده تفاوت‌ها به بخش «توضیحات» در بالا مراجعه فرمایید.
نوشتن فوری تغییرات بر روی دیسک.
مشابه با -a (تعمیر خودکار سیستم‌فایل) جهت سازگاری با سایر ابزارهای fsck.
نمایش پیام راهنما در خصوص شیوه استفاده و گزینه‌ها، سپس خروج.

0
هیچ خطای قابل بازیابی شناسایی نشد.
1
خطاهای قابل بازیابی شناسایی شدند یا fsck.fat یک ناهماهنگی داخلی پیدا کرده است.
2
خطای نحوه استفاده. دستور fsck.fat به سیستم‌فایل دسترسی پیدا نکرد.

هنگام بازیابی داده‌ها از یک سیستم‌فایل آسیب‌دیده، fsck.fat داده‌های نجات‌یافته را در فایل‌هایی با نام fsckNNNN.rec در دایرکتوری سطح بالای سیستم‌فایل ذخیره می‌کند.

  • دایرکتوری‌های کاملاً خالی را حذف نمی‌کند.
  • باید پیام‌های تشخیصی بیشتری ارائه دهد.
  • بازیابی فایل‌های حذف‌شده باید از الگوریتم پیشرفته‌تری استفاده کند.

fatlabel(8), mkfs.fat(8)

پایگاه اصلی پروژه dosfstools صفحه گیت‌هاب آن است: صفحه پروژه در GitHub

مجموعه dosfstools توسط Werner Almesberger، Roman Hodek و دیگران نوشته شده است. نگه‌دارندگان کنونی عبارتند از: Andreas Bombe و Pali Rohár.

مه ۲۰۲۵ dosfstools