پرش به محتوا
✓ محتوای ویکی بازبینی‌شده توسط ویراستارانپیشرفتهبوت و systemd

مدیریت پیشرفته اسنپ‌شات Btrfs با Snapper در آرچ لینوکس

اگر ریشه سیستم را روی Btrfs نصب کرده‌اید، یکی از قدرتمندترین قابلیت‌هایی که در اختیار دارید، اسنپ‌شات‌های سطح فایل‌سیستم است. Snapper این قابلیت را به شکلی ساختاریافته و قابل‌اتکا مدیریت می‌کند. در سطح پیشرفته، صرفاً گرفتن اسنپ‌شات کافی نیست؛ باید timeline، فیلترها، پاک‌سازی خودکار، و بازگردانی دقیق

آخرین به‌روزرسانی: ۲۲ آبان ۱۴۰۵ · نسخهٔ ۱ · ۳ بازدید

این مقاله مستندات رسمی Arch Linux نیست؛ برای موارد حساس به ArchWiki مراجعه کنید.


مدیریت پیشرفته اسنپ‌شات Btrfs با Snapper در آرچ لینوکس

اگر ریشه سیستم را روی Btrfs نصب کرده‌اید، یکی از قدرتمندترین قابلیت‌هایی که در اختیار دارید، اسنپ‌شات‌های سطح فایل‌سیستم است. Snapper این قابلیت را به شکلی ساختاریافته و قابل‌اتکا مدیریت می‌کند. در سطح پیشرفته، صرفاً گرفتن اسنپ‌شات کافی نیست؛ باید timeline، فیلترها، پاک‌سازی خودکار، و بازگردانی دقیق را درست پیکربندی کنید.

پیش‌نیازها

  • فایل‌سیستم ریشه باید Btrfs باشد.
  • زیرحجم‌ها (subvolumes) به شکل استاندارد جدا شده باشند (حداقل @ برای ریشه و @home برای خانه).
  • پکیج‌های لازم:
sudo pacman -S snapper snap-pac

snap-pac باعث می‌شود قبل و بعد از تراکنش‌های pacman به صورت خودکار اسنپ‌شات گرفته شود. این مورد برای سیستم‌های rolling بسیار ارزشمند است.

ایجاد کانفیگ برای ریشه

sudo snapper -c root create-config /

این دستور یک کانفیگ به نام root می‌سازد ******** .snapshots را ایجاد می‌کند. اگر ساختار زیرحجم‌های شما غیرمعمول است، قبل از این کار وضعیت را با findmnt -t btrfs و btrfs subvolume list / بررسی کنید.

تنظیمات مهم فایل کانفیگ

فایل اصلی:

/etc/snapper/configs/root

مواردی که در سطح پیشرفته معمولاً تغییر داده می‌شوند:

  • TIMELINE_CREATE="yes"
  • TIMELINE_CLEANUP="yes"
  • TIMELINE_LIMIT_HOURLY="4"
  • TIMELINE_LIMIT_DAILY="5"
  • TIMELINE_LIMIT_WEEKLY="2"
  • TIMELINE_LIMIT_MONTHLY="1"
  • NUMBER_LIMIT="20"
  • NUMBER_LIMIT_IMPORTANT="8"

این اعداد باید متناسب با فضای دیسک و میزان تغییر سیستم تنظیم شوند. مقادیر خیلی بالا به سرعت فضای قابل‌توجهی مصرف می‌کنند.

فعال‌سازی سرویس‌های timeline و پاک‌سازی

sudo systemctl enable --now snapper-timeline.timer
sudo systemctl enable --now snapper-cleanup.timer

وضعیت را بررسی کنید:

systemctl list-timers | grep snapper

اسنپ‌شات دستی با توضیحات

sudo snapper -c root create --description "قبل از ارتقای بزرگ کرنل"

یا با نوع مشخص:

sudo snapper -c root create -t pre --description "قبل از تغییرات nvidia"

بعد از انجام تغییرات:

sudo snapper -c root create -t post --pre-number 42 --description "بعد از تغییرات nvidia"

مشاهده و مقایسه

لیست اسنپ‌شات‌ها:

sudo snapper -c root list

مشاهده تفاوت بین دو اسنپ‌شات:

sudo snapper -c root status 40..45

یا برای دیدن فایل‌های تغییرکرده به صورت خلاصه‌تر از snapper diff استفاده کنید.

بازگردانی (Rollback)

برای بازگردانی کامل ریشه، بهترین روش استفاده از بوت به اسنپ‌شات یا انجام rollback از محیط زنده است. دستور مستقیم:

sudo snapper -c root rollback 45

پس از rollback معمولاً نیاز به بازسازی initramfs و بررسی بوت‌لودر وجود دارد. در سیستم‌هایی که از @ به عنوان زیرحجم ریشه استفاده می‌کنند، Snapper به درستی زیرحجم پیش‌فرض را تغییر می‌دهد، اما همیشه بعد از rollback وضعیت btrfs subvolume get-default / را بررسی کنید.

فیلتر کردن مسیرها

در فایل کانفیگ می‌توانید با ALLOW_USERS و بیشتر با الگوهای FILTERS مشخص کنید چه چیزهایی داخل اسنپ‌شات نروند. برای مثال، مسیرهای موقت و کش‌های بزرگ بهتر است حذف شوند تا حجم اسنپ‌شات‌ها کنترل‌شده باقی بماند.

نکات پیشرفته و هشدارها

  • اسنپ‌شات Btrfs کپی کامل داده‌ها نیست؛ از copy-on-write استفاده می‌کند. با این حال، نگه‌داشتن تعداد زیاد اسنپ‌شات در سیستم‌هایی با تغییرات سنگین (مثل کامپایل مکرر یا داده‌های حجیم) باعث افزایش قابل توجه مصرف فضا می‌شود.
  • هرگز زیرحجم .snapshots را دستی جابه‌جا یا حذف نکنید.
  • اگر از Timeshift هم استفاده می‌کنید، با Snapper تداخل مفهومی ایجاد نکنید. یکی را به عنوان راهکار اصلی انتخاب کنید.
  • در صورت استفاده از رمزنگاری (LUKS)، اسنپ‌شات‌ها داخل حجم رمزنگاری‌شده قرار می‌گیرند و این موضوع از نظر امنیتی مطلوب است.
  • برای /home در صورت نیاز کانفیگ جداگانه بسازید، اما بسیاری ترجیح می‌دهند home را از اسنپ‌شات‌های سیستم جدا نگه دارند و با ابزار دیگری بک‌آپ بگیرند.

جمع‌بندی عملی

یک پیکربندی پیشرفته و منطقی معمولاً شامل این عناصر است:

  • کانفیگ جدا برای ریشه
  • فعال بودن snap-pac
  • timeline محدود و پاک‌سازی خودکار
  • اسنپ‌شات دستی قبل از تغییرات پرریسک (کرنل، درایور، به‌روزرسانی بزرگ)
  • آشنایی با دستورات list، status، diff و rollback

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

این مقاله مفید بود؟برای ثبت بازخورد وارد شوید۰ مفید · ۰ نامفیدپیشنهاد ویرایشتاریخچه