bup-fsck(1) General Commands Manual bup-fsck(1)

bup-fsck - بررسی صحت یا تعمیر یک مخزن bup

bup fsck [-r] [-g] [-v] [--quick] [-j jobs] [--par2-ok] [--disable-par2] [packfile...]

هنگامی که packfileها (که باید پسوند .pack داشته باشند) مشخص شوند، عملیات مربوط به بسته‌ها به همان فایل‌ها محدود می‌شود؛ در غیر این صورت تمامی فایل‌های بسته در مخزن فعلی در نظر گرفته می‌شوند.

در حال حاضر bup fsck داده‌های درون مخزن را از نظر خرابی بررسی می‌کند. به طور دقیق‌تر، یکپارچگی داده‌های packfileها و نمایه‌های متناظر آن‌ها را بررسی می‌کند تا اطمینان حاصل کند از زمان نوشته شدن تغییر نیافته‌اند. این دستور مسائل سطح بالاتر مانند پیوستگی (اشیاء مفقود)، به عنوان مثال این که آیا تمام داده‌های ارجاع‌شده توسط یک ذخیره واقعاً در مخزن موجود است یا خیر را بررسی نمی‌کند. برای برخی بررسی‌های سطح بالاتر، bup-validate-object-links(1) و bup-validate-refs(1) را ببینید. بررسی‌هایی که bup fsck انجام می‌دهد بر تشخیص و احتمالاً تعمیر خرابی فایل‌ها متمرکز است، در حالی که مشکلات سطح بالاتر بیشتر ناشی از باگ‌ها (که امید است نادرتر باشند) هستند.

هنگام بررسی فایل‌های بسته و نمایه‌ها، در حال حاضر fsck معمولاً به git-verify-pack(1) متکی است، اما با گزینه --quick (توضیحات بیشتر در زیر)، bup فقط چک‌سام‌های نمایه و بسته را خودش بررسی می‌کند.

جهت امکان‌پذیر ساختن تعمیرات، باید از طریق --generate از fsck خواسته شود تا «بلوک‌های بازیابی» par2(1) را تولید کند (در صورتی که نصب باشد). این بلوک‌ها به شما اجازه می‌دهند تا از آسیب‌هایی که تا ۵٪ از فایل‌های .pack شما را تحت تأثیر قرار داده است، بازیابی انجام دهید.

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

هنگام اقدام به --repair، برنامه bup با وضعیت ۱ خارج می‌شود اگر و تنها اگر تعمیرات مورد نیاز بوده و موفقیت‌آمیز باشد، و هیچ خطای دیگری رخ نداده باشد.

هشدار: مسلماً bup fsck نمی‌تواند خرابی کامل دیسک را بازیابی کند. اگر پشتیبان‌های شما مهم هستند، باید با دقت افزونگی را در نظر بگیرید (مانند استفاده از RAID برای افزونگی چند دیسک، یا ایجاد پشتیبان‌های خارج از محل برای افزونگی مکانی).

هنگامی که درخواست بررسی تمام فایل‌های بسته داده می‌شود (یعنی زمانی که هیچ packfileی مشخص نشده است)، fsck هر فایلی را که به نظر می‌رسد مربوط به یک فایل بسته ناموجود باشد گزارش می‌دهد. نسخه‌های قبلی bup gc می‌توانند باعث این اتفاق شوند زیرا هنگام حذف یک فایل بسته، تمام فایل‌های مربوط به آن را حذف نمی‌کردند.

تلاش برای تعمیر بسته‌های آسیب‌دیده با استفاده از بلوک‌های بازیابی موجود. (نیازمند par2(1).)
تولید بلوک‌های بازیابی برای هر بسته‌ای که در حال حاضر فاقد آن‌ها است. (نیازمند par2(1).)
افزایش پرگویی (می‌تواند بیش از یک بار استفاده شود).
اجرا نکردن git verify-pack کامل روی هر فایل بسته؛ در عوض فقط بررسی چک‌سام نهایی. این امر می‌تواند باعث افزایش چشمگیر سرعت بدون کاهش محسوس قابلیت اطمینان شود. با این حال، اگر بسیار محتاط و وسواسی هستید ممکن است بخواهید از این گزینه اجتناب کنید. بر روی بسته‌هایی که از قبل اطلاعات بازیابی دارند تأثیری ندارد.
حداکثر تعداد اعتبارسنجی‌های بسته که به طور همزمان اجرا می‌شوند. مقدار بهینه برای این گزینه بستگی به سرعت پردازنده شما در اعتبارسنجی بسته‌ها در مقایسه با پهنای باند دیسک دارد. اگر کارهای زیادی را به طور همزمان اجرا کنید، دیسک شما به دلیل جستجو و جابجایی مداوم بین فایل‌ها اشباع می‌شود و عملکرد کاهش می‌یابد، حتی اگر numjobs کمتر از تعداد هسته‌های CPU در سیستم شما باشد. می‌توانید با این گزینه آزمایش کنید تا مقدار بهینه را بیابید.
در صورتی که par2(1) نصب باشد و کار کند، بلافاصله مقدار ۰ را برمی‌گرداند، و در غیر این صورت مقدار ۱. در واقع هیچ چیزی را بررسی نمی‌کند.
فرض می‌کند که par2(1) نصب نیست، و تمام بلوک‌های بازیابی را نادیده می‌گیرد.

# تولید بلوک‌های بازیابی برای تمام بسته‌هایی که فاقد آن هستند
bup fsck -g
# تولید بلوک‌های بازیابی برای یک بسته خاص
bup fsck -g ~/.bup/objects/pack/153a1420cb1c8*.pack
# بررسی صحت تمام بسته‌ها (می‌تواند بسیار کند باشد!)
bup fsck
# بررسی صحت تمام بسته‌ها و بازیابی موارد آسیب‌دیده
bup fsck -r
# بررسی صحت یک بسته خاص و بازیابی آن در صورت آسیب
bup fsck -r ~/.bup/objects/pack/153a1420cb1c8*.pack
# بررسی در دسترس بودن بلوک‌های بازیابی روی این سیستم
if bup fsck --par2-ok; then
    echo "par2 is ok"
fi

با مقدار ۱ خارج می‌شود اگر --repair درخواست شده باشد، لازم بوده باشد، موفقیت‌آمیز باشد و خطای دیگری وجود نداشته باشد. در غیر این صورت اگر خطایی رخ نداده باشد با ۰، و در صورت بروز خطا با مقداری غیر از صفر یا یک خارج می‌شود.

bup-damage(1), fsck(1), git-fsck(1), bup-validate-object-links(1), and bup-validate-refs(1)

بخشی از مجموعه bup(1).

Avery Pennarun apenwarr@gmail.com.

2026-09-01 Bup 0.34+