اگر ریشهی سیستم روی Btrfs نصب شده باشد (پیشفرض openSUSE)، zypper پیش و پس از هر نصب یا بهروزرسانی، خودکار snapshot میگیرد. این یعنی یک بهروزرسانی خراب، با یک دستور برگشتپذیر است.
۱. فهرست snapshotها
sudo snapper listهر جفت pre و post مربوط به یک عملیات zypper است.
۲. چه چیزی تغییر کرده؟
sudo snapper status 41..42
sudo snapper diff 41..42 /etc/nginx/nginx.conf۳. برگرداندن یک فایل
sudo snapper undochange 41..42 /etc/nginx/nginx.conf۴. snapshot دستی پیش از تغییر مهم
sudo snapper create --description "before nginx config rewrite" --cleanup-algorithm number۵. برگشت کل سیستم
اگر بعد از بهروزرسانی سیستم درست بالا نیامد:
- در منوی بوت (GRUB)، گزینهی Start bootloader from a read-only snapshot را انتخاب کنید و snapshot قبل از بهروزرسانی را بوت کنید.
- پس از بررسی و اطمینان، همان وضعیت را دائمی کنید:
sudo snapper rollback
sudo reboot۶. فضای دیسک
snapshotها بهمرور فضا میگیرند. سیاست پاکسازی در /etc/snapper/configs/root تنظیم میشود:
NUMBER_LIMIT="2-10"
NUMBER_LIMIT_IMPORTANT="4-10"sudo btrfs filesystem usage /پوشههایی مثل /var که دادهی متغیر دارند (لاگها، پایگاه داده) در subvolume جدا هستند و با rollback برنمیگردند. این رفتار عمدی است تا دادهها از دست نروند.