| SNAPPER(8) | مدیریت اسنپشات سیستمفایل | SNAPPER(8) |
نام (NAME)
snapper - برنامه خط فرمان برای مدیریت اسنپشاتهای سیستمفایل
خلاصه دستور (SYNOPSIS)
snapper [--global-opts] command [--command-opts] [command-arguments]
snapper {--help}
توضیحات (DESCRIPTION)
برنامه snapper یک ابزار خط فرمان برای مدیریت اسنپشاتهای سیستمفایل است. این ابزار میتواند اسنپشاتها را ایجاد، حذف و مقایسه کرده و تغییرات ایجادشده بین اسنپشاتها را واگردانی کند.
ابزار snapper هرگز محتوای اسنپشاتها را تغییر نمیدهد. بنابراین در صورت پشتیبانی هسته، snapper اسنپشاتهای فقطخواندنی (read-only) ایجاد میکند. سیستمفایلهای پشتیبانیشده عبارتند از btrfs و ext4 (متوقفشده) و همچنین اسنپشاتهای حجمهای منطقی LVM با قابلیت thin-provisioning. بسته به نوع نصب شما ممکن است برخی سیستمفایلها پشتیبانی نشوند.
مفاهیم (CONCEPTS)
پیکربندیها (Configurations)
برای هر سیستمفایل یا زیرحجم (subvolume) که باید توسط snapper از آن اسنپشات گرفته شود، یک فایل پیکربندی لازم است؛ ببینید snapper-configs(5). راهاندازی میتواند با دستور create-config انجام شود.
اسنپشاتها (Snapshots)
ابزار snapper سه نوع اسنپشات را از هم متمایز میکند.
pre
post
single
توجه داشته باشید که از نظر سیستمفایل، هر سه نوع یکسان هستند.
توضیحات و دادههای کاربری اسنپشات (Snapshot Description and Userdata)
با هر اسنپشات میتوان یک توضیح (description) و مقداری داده کاربری (userdata) مرتبط کرد. توضیح یک رشته متنی است. داده کاربری فهرستی از جفتهای کلید-مقدار است که در آن کلیدها و مقادیر رشته هستند.
از نویسههای غیر ASCII برای توضیحات اسنپشات، داده کاربری یا هر رشته دیگری استفاده نکنید، مگر اینکه همیشه از کدگذاری نویسه UTF-8 استفاده کنید.
ایجاد خودکار اسنپشات (Automatic Snapshot Creation)
علاوه بر ایجاد دستی اسنپشات، اسنپشاتها میتوانند به صورت خودکار نیز ایجاد شوند.
الگوریتمهای پاکسازی (Cleanup Algorithms)
ابزار snapper چندین الگوریتم برای پاکسازی اسنپشاتهای قدیمی ارائه میدهد. این الگوریتمها در یک کرونجاب ساعتی یا تایمر systemd اجرا میشوند. این مورد میتواند در فایلهای پیکربندی مربوطه همراه با پارامترهای هر الگوریتم تنظیم شود.
number
timeline
empty-pre-post
الگوریتمهای پاکسازی number و timeline همچنین میتوانند تلاش کنند فضای اشغالشده توسط اسنپشاتها را زیر یک حد معین و فضای خالی سیستمفایل را بالاتر از یک حد معین نگه دارند. برای شرط اول، سهمیه (quota) باید راهاندازی شود؛ دستور setup-quota را ببینید. علاوه بر این، متغیرهای NUMBER_LIMIT و TIMELINE_LIMIT در فایل پیکربندی باید بازه داشته باشند (مقدار کمینه و بیشینه). سپس الگوریتمها دو مرحله پیمایش انجام میدهند:
حد فضای استفادهشده را میتوان از طریق متغیر SPACE_LIMIT پیکربندی کرد. نکته: هنگام محاسبه فضای اشغالشده توسط اسنپشاتها، تنها اسنپشاتهایی که الگوریتم پاکسازی برای آنها تنظیم شده است در نظر گرفته میشوند.
حد فضای خالی را میتوان از طریق متغیر FREE_LIMIT پیکربندی کرد.
نکته: از آنجا که پاکسازی بهصورت ناهمگام نسبت به ایجاد اسنپشاتها انجام میشود، اسنپشاتهای مشاهدهشده ممکن است با اسنپشاتهای مورد انتظار بر اساس محدودیتها متفاوت باشند. همچنین در btrfs ممکن است qgroupهای منسوخ بهطور موقت وجود داشته باشند.
فیلترها (Filters)
برخی فایلها اطلاعات وضعیت سیستم را نگه میدارند، مانند /etc/mtab. چنین فایلهایی هرگز نباید واگردانی شوند. برای کمک به کاربران، snapper امکان نادیده گرفتن این فایلها را فراهم میکند.
فیلترها از فایلهای /etc/snapper/filters/*.txt و /usr/share/snapper/filters/*.txt خوانده میشوند، که برای فایلهای همنام، مسیر اول اولویت دارد. هر خط در این فایلها یک الگو را مشخص میکند. هنگامی که snapper تفاوت بین دو اسنپشات را محاسبه میکند، با استفاده از fnmatch(3) همراه با پرچم FNM_LEADING_DIR، تمام فایلها و دایرکتوریهای منطبق با هر یک از این الگوها را نادیده میگیرد.
توجه داشته باشید که فیلترها مانع اسنپشات گرفتن از فایلها یا دایرکتوریها نمیشوند. برای این منظور از subvolumeها یا نقاط اتصال (mount points) استفاده کنید.
گزینههای عمومی (GLOBAL OPTIONS)
-q, --quiet
-v, --verbose
--logger-type type
--debug
--utc
--iso
-t, --table-style style
--abbreviate
--machine-readable format
--csvout
--jsonout
--separator character
--no-headers
-c, --config name
--no-dbus
با احتیاط استفاده کنید چرا که یک daemon در حال اجرای snapperd از تغییرات اعمالشده در سیستم مطلع نخواهد شد.
-r, --root path
-a, --ambit ambit
--version
دستورات (COMMANDS)
ابزار snapper تعدادی command ارائه میدهد. هر دستور گزینههای فهرستشده در بخش GLOBAL OPTIONS را میپذیرد. این گزینهها باید قبل از نام دستور مشخص شوند. علاوه بر این، بسیاری از دستورات دارای گزینههای خاصی هستند که در این بخش فهرست شدهاند. این گزینههای اختصاصی دستور باید بعد از نام دستور و قبل از هر یک از آرگومانهای دستور مشخص شوند.
help
list-configs [options]
--columns columns
ستونهای ممکن عبارتند از: config، subvolume.
create-config [options] subvolume
-f, --fstype fstype
بدون این گزینه snapper تلاش میکند سیستمفایل را شناسایی کند.
-t, --template name
delete-config
get-config [options]
--columns columns
ستونهای ممکن عبارتند از: key، value.
وقتی قالب JSON استفاده شود ستونها انتخاب نمیشوند.
set-config configdata
list (ls) [options]
-t, --type type
--disable-used-space
محاسبه فضای استفادهشده به مقداری زمان نیاز دارد. بنابراین این گزینه میتواند سرعت نمایش فهرست را افزایش دهد.
-a, --all-configs
--columns columns
ستونهای ممکن عبارتند از: config، subvolume، number، default، active، date، user، used-space، cleanup، description، userdata، pre-number، post-number، post-date، read-only.
خروجی برای هر اسنپشات شامل چندین ستون است. برخی از آنها نیاز به توضیح دارند:
#, Pre # and Post #
برای btrfs شماره میتواند با یک علامت همراه باشد. علامت "-" نشان میدهد که اسنپشات، اسنپشاتِ در حال حاضر سوارشده (mounted) است و علامت "+" نشان میدهد که اسنپشات دفعه بعد سوار خواهد شد (این زیرحجم پیشفرض btrfs است). اگر هر دو شرط برقرار باشند علامت "*" نمایش داده میشود.
Used Space
اگر نمایش فضای استفادهشده در دسترس نباشد، مانند زمانی که quota در btrfs فعال نیست، بهطور خودکار غیرفعال میشود.
create [options]
-t, --type type
--pre-number number
-p, --print-number
-d, --description description
-c, --cleanup-algorithm cleanup-algorithm
-u, --userdata userdata
--command command
--read-only
--read-write
--from number
--empty
modify [options] number
-d, --description description
-c, --cleanup-algorithm cleanup-algorithm
-u, --userdata userdata
--read-only
--read-write
--default
delete (remove|rm) number | number1-number2
-s, --sync
سامانه Btrfs معمولاً پس از حذف اسنپشاتها فضا را بهصورت ناهمگام آزاد میکند. با این گزینه snapper منتظر میماند تا فضای قبلاً اشغالشده توسط اسنپشاتهای حذفشده واقعاً دوباره در دسترس قرار گیرد.
اسنپشات 0 قابل حذف نیست. برای btrfs اسنپشات فعلی سوارشده و اسنپشاتی که دفعه بعد سوار خواهد شد (زیرحجم پیشفرض btrfs) نیز قابل حذف نیستند.
mount number
umount number
status [options] number1..number2
-o, --output file
خروجی شامل یک رشته کدگذاریکننده وضعیت و به دنبال آن نام فایل است. نویسههای رشته وضعیت عبارتند از:
اگر تغییری وجود نداشته باشد علامت "." خروجی داده میشود.
diff [options] number1..number2 [files]
-i, --input file
--diff-cmd command
-x, --extensions options
undochange [options] number1..number2 [files]
-i, --input file
rollback [options] [number]
دستور rollback فقط در btrfs پشتیبانی میشود و نیاز به سیستمی با پیکربندی مناسب دارد.
-p, --print-number
-d, --description description
-c, --cleanup-algorithm cleanup-algorithm
-u, --userdata userdata
دستور rollback همچنین توضیحات، الگوریتم پاکسازی و برخی دادههای کاربری را تنظیم میکند، مگر اینکه مقادیر در خط فرمان مشخص شده باشند. این کار پاکسازی اسنپشاتهای ایجادشده توسط rollback را خودکار میکند.
در حوزههایی غیر از classic، دستور rollback آنچه را که برای انجام واگردانی لازم است انجام میدهد. در هر حال توصیه میشود در آن شرایط از برنامههای اختصاصی استفاده شود.
setup-quota
cleanup [options] cleanup-algorithm
--path path
--free-space free-space
xadiff number1..number2 [files]
مجوزها (PERMISSIONS)
کاربران غیر ریشه میتوانند با تنظیم ALLOW_USERS یا ALLOW_GROUPS در فایل پیکربندی، اجازه استفاده از یک پیکربندی را پیدا کنند. برای اینکه تمام عملیاتها کار کنند، کاربر باید بتواند دایرکتوری .snapshots درون subvolume را بخواند و به آن دسترسی داشته باشد. دایرکتوری .snapshots باید متعلق به root باشد و نباید توسط هیچ کاربر دیگری قابل نوشتن باشد.
در اینجا چند روش برای دستیابی به این هدف آورده شده است:
chmod a+rx .snapshots
chown :users .snapshots
setfacl -m u:tux:rx .snapshots
روش آخر میتواند توسط snapper انجام شود، تنظیم SYNC_ACL در snapper-configs(5) را ببینید.
پلاگینها (PLUGINS)
ابزار snapper میتواند اسکریپتهای خارجی را پس از اقدامات خاصی اجرا کند. اسکریپتها باید در /usr/lib/snapper/plugins قرار گیرند. نام باید با یک رقم شروع شود و ترتیب اجرا بر اساس حروف الفبا است.
آرگومان اول یک اسکریپت، اقدامی است که snapper اجرا کرده است. اقدامات زیر تعریف شدهاند:
create-config-pre subvolume fstype
create-config-post subvolume fstype
delete-config-pre subvolume fstype
delete-config-post subvolume fstype
create-snapshot-pre subvolume fstype snapshot-number
create-snapshot-post subvolume fstype snapshot-number
modify-snapshot-pre subvolume fstype snapshot-number
modify-snapshot-post subvolume fstype snapshot-number
delete-snapshot-pre subvolume fstype snapshot-number
delete-snapshot-post subvolume fstype snapshot-number
set-read-only-pre subvolume fstype snapshot-number
set-read-only-post subvolume fstype snapshot-number
set-default-snapshot-pre subvolume fstype snapshot-number
set-default-snapshot-post subvolume fstype snapshot-number
rollback-post subvolume fstype old-snapshot-number new-snapshot-number
اقدامات و آرگومانهای بیشتری میتوانند در هر زمان اضافه شوند. استفاده از snapper درون پلاگینها مجاز نیست.
مشخص نیست که آیا پلاگینها از طریق کلاینت (snapper) یا سرور (snapperd) فراخوانی میشوند.
فایلها (FILES)
/etc/conf.d/snapper
/etc/snapper/configs
/etc/snapper/config-templates
/usr/share/snapper/config-templates
/etc/snapper/filters/*.txt
/usr/share/snapper/filters/*.txt
/var/log/snapper.log
وضعیت خروج (EXIT STATUS)
بهطور معمول وضعیت خروج 0 است. اگر خطایی رخ دهد وضعیت خروج 1 خواهد بود. همچنین اگر وضعیت خروج یک پلاگین 0 نباشد، خطا تلقی میشود.
نکات (NOTES)
هیچ سازوکاری برای تضمین سازگاری و یکپارچگی فایلها در حین ایجاد اسنپشات وجود ندارد. برای مثال فایلهای یک پایگاه داده ممکن است در زمان اجرا و فعالیت پایگاه داده، ناسازگار باشند.
سازگاری پس از واگردانی تغییرات (undochange) تضمین نمیشود. برای مثال هنگامی که ایجاد یک کاربر واگردانی میشود، ممکن است فایلهای آن کاربر همچنان باقی بمانند.
پشتیبانی از سیستمفایلهای مجزا، rollback و صفتهای گسترشیافته از گزینههای زمان کامپایل هستند و ممکن است در دسترس نباشند.
صفحه خانگی (HOMEPAGE)
نویسندگان (AUTHORS)
Arvin Schnell <aschnell@suse.com>
همچنین ببینید (SEE ALSO)
snapper-configs(5), snapper-zypp-plugin(8), snbk(8), pam_snapper(8), btrfs(8), lvm(8), attr(5), acl(5)
نکات (NOTES)
- 1.
- RFC 4180
| 2026-01-02 | 0.13.1 |