SNBK(8) Filesystem Snapshot Management SNBK(8)

snbk - برنامه خط فرمانی برای پشتیبان‌گیری از اسنپ‌شات‌های snapper

snbk [--global-opts] command [command-arguments]

snbk {--help}

برنامه snbk یک برنامه خط فرمانی برای پشتیبان‌گیری از اسنپ‌شات‌های snapper است. این برنامه می‌تواند اسنپ‌شات‌های پشتیبان را روی فایل‌سیستم‌های محلی و دوردست btrfs منتقل و حذف کند.

به ازای هر پیکربندی snapper می‌تواند چندین پیکربندی پشتیبان‌گیری وجود داشته باشد. هر پیکربندی پشتیبان‌گیری، پشتیبان‌های اسنپ‌شات‌های snapper را در یک مکان، محلی یا دوردست تعریف می‌کند؛ برای تنظیمات ممکن snapper-backup-configs(5) را ببینید.

هر اسنپ‌شات دارای وضعیتی در مبدا و مقصد است. مقادیر ممکن برای مبدا عبارتند از:

(empty)

اسنپ‌شات موجود نیست و بنابراین در مقصد منسوخ در نظر گرفته می‌شود. این اسنپ‌شات با دستور delete بعدی در مقصد حذف خواهد شد.

read-only

اسنپ‌شات فقط‌خواندنی است.

read-write

اسنپ‌شات خواندنی-نوشتنی است و بنابراین نمی‌توان از آن پشتیبان گرفت.

مقادیر ممکن برای مقصد عبارتند از:

(empty)

اسنپ‌شات موجود نیست. اگر اسنپ‌شات مبدا فقط‌خواندنی باشد، با دستور transfer بعدی به مقصد منتقل خواهد شد.

valid

اسنپ‌شات معتبر است. این موضوع نشان می‌دهد که فقط‌خواندنی است.

invalid

اسنپ‌شات نامعتبر است. یا UUID دریافتی اشتباه است یا خواندنی-نوشتنی است. این وضعیت در صورت قطع شدن فرایند انتقال رخ می‌دهد. دستور transfer بعدی تلاش خواهد کرد اسنپ‌شات را دوباره منتقل کند.

legacy

اسنپ‌شات معتبر است، اما متادیتای اسنپ‌شات مبدا از زمان انتقال تغییر کرده است. دستور transfer بعدی متادیتای اسنپ‌شات را در مقصد به‌روزرسانی خواهد کرد.

برنامه snbk دستور visualize را برای تولید گراف‌ها در قالب DOT ابزار Graphviz به منظور بصری‌سازی فراهم می‌کند. در حال حاضر، تولید نمودارهای درختی برای اسنپ‌شات‌ها در هر دو سمت مبدا و مقصد پشتیبانی می‌شود. خروجی دستور را می‌توان به ابزارهای Graphviz هدایت (pipe) کرد تا یک تصویر تولید شود.

در اینجا نمونه‌ای از تولید نمودار درختی برای اسنپ‌شات‌ها در سمت مبدا با پیکربندی پشتیبان‌گیری 'root' آورده شده است:

# snbk -b root visualize source-tree | dot -T png -o root-source-tree.png

در نمودار درختی برای اسنپ‌شات‌ها، یک گره دارای ویژگی‌های virtual و valid است. یک گره مجازی (virtual) به این معنی است که زیرحجم (subvolume) متناظر Btrfs توسط یک اسنپ‌شات Snapper مدیریت نمی‌شود. یک گره معتبر (valid) یعنی گره در هر دو سمت مبدا و مقصد وجود دارد، و می‌تواند به عنوان والد ارسال (send parent) معتبر Btrfs جهت کاهش فضای مصرفی دیسک در طول انتقال یا بازگردانی اسنپ‌شات استفاده شود. گره ریشه نمودار یک گره مجازی تخصصی است که زیرحجم Btrfs نیست و نشان‌دهنده فایل‌سیستم Btrfs در مبدا یا مقصد است.

-q, --quiet

پنهان کردن خروجی عادی. پیام‌های خطا با این حال چاپ خواهند شد.

-v, --verbose

افزایش پرگویی (جزئیات خروجی).

--debug

فعال‌سازی اشکال‌زدایی.

--utc

نمایش تاریخ‌ها و زمان‌ها در قالب UTC. به‌طور پیش‌فرض، از زمان محلی استفاده می‌شود.

--iso

نمایش تاریخ‌ها و زمان‌ها در قالب ISO. قالب ISO همیشه برای خروجی‌های ماشین‌خوانده استفاده می‌شود.

-t, --table-style style

سبک جدول را مشخص می‌کند. سبک جدول با یک عدد صحیح مشخص می‌شود.

--machine-readable format

یک قالب خروجی ماشین‌خوانده را مشخص می‌کند. گزینه‌های ممکن csv و json هستند.

--csvout

قالب خروجی CSV را تنظیم می‌کند. برای برخی دستورات، خروجی CSV شامل اطلاعات بیشتری نسبت به خروجی پیش‌فرض جدول است. برای جزئیات RFC 4180[1] را ببینید، با این تفاوت که سطرها با LF پایان می‌یابند نه CR+LF.

--jsonout

قالب خروجی JSON را تنظیم می‌کند. برای برخی دستورات، خروجی JSON شامل اطلاعات بیشتری نسبت به خروجی پیش‌فرض جدول است.

--separator character

کاراکتر جداکننده را برای قالب خروجی CSV مشخص می‌کند.

--no-headers

حذف سرایندها برای قالب خروجی CSV.

-b, --backup-config name

استفاده از پیکربندی مشخص‌شده به جای تمام پیکربندی‌ها.

--no-dbus

کار بدون اتصال DBus.

با احتیاط استفاده شود.

--target-mode name

تنها عمل روی پیکربندی‌های پشتیبان‌گیری با حالت مقصد مشخص‌شده.

--automatic

تنها عمل روی پیکربندی‌های پشتیبان‌گیری که فلگ automatic در آن‌ها تنظیم شده است.

--version

چاپ نسخه و خروج.

برنامه snbk تعدادی دستور ارائه می‌دهد. هر دستور گزینه‌های فهرست‌شده در بخش «گزینه‌های عمومی (GLOBAL OPTIONS)» را می‌پذیرد. این گزینه‌ها باید قبل از نام دستور مشخص شوند. علاوه بر این، بسیاری از دستورات آرگومان‌های ویژه‌ای دارند که در این بخش فهرست شده‌اند. این آرگومان‌های اختصاصی دستور باید بعد از نام دستور مشخص شوند.

help

نمایش متن راهنمای کوتاه.

list-configs

فهرست کردن پیکربندی‌های موجود.

list (ls)

فهرست کردن اسنپ‌شات‌ها.

transfer [number]

انتقال تمام اسنپ‌شات‌های مفقود یا اسنپ‌شات مشخص‌شده به مقصد.

restore [number]

بازگردانی تمام اسنپ‌شات‌های مفقود یا اسنپ‌شات مشخص‌شده به مبدا. برای اجرای این دستور باید یک پیکربندی پشتیبان‌گیری مشخص شود. راه‌اندازی مجدد سرویس `snapperd` لازم است تا اسنپ‌شات‌های بازگردانده‌شده بلافاصله نمایان شوند.

delete (remove|rm) [number]

حذف تمام اسنپ‌شات‌های منسوخ یا اسنپ‌شات مشخص‌شده از مقصد.

transfer-and-delete

ترکیب transfer و delete.

visualize [options] mode

تولید گراف Graphviz با mode مشخص‌شده. برای جزئیات بیشتر بخش «بصری‌سازی (Visualization)» را ببینید.

-r, --rankdir rankdir

مشخصه نمودار 'rankdir' در Graphviz. پیش‌فرض 'LR' است.

source-tree

تولید نمودار درختی از اسنپ‌شات‌ها در مبدا.

target-tree

تولید نمودار درختی از اسنپ‌شات‌ها در مقصد.

اسنپ‌شات‌ها را می‌توان با استفاده از دستور restore بازگرداند. روش‌های بیشتری نیز برای انجام بازگردانی وجود دارد؛ برای نمونه می‌توان نسخه پشتیبان را سوار (mount) کرده و سپس کپی نمود یا از rsync استفاده کرد.

در اینجا مثالی درباره نحوه استفاده دستی از btrfs send و receive برای بازگردانی یک اسنپ‌شات در سیستم مبدا ارائه می‌شود. به‌طور کلی استفاده از btrfs send و receive کمی پیچیده است.

هنگام استفاده از target-mode local:

# mkdir /.snapshots/42
# cp /backups/root/42/info.xml /.snapshots/42/
# btrfs send /backups/root/42/snapshot | btrfs receive /.snapshots/42

هنگام استفاده از target-mode ssh-push:

# mkdir /.snapshots/42
# scp backups.example.com:/backups/eberich/root/42/info.xml /.snapshots/42
# ssh backups.example.com btrfs send /backups/eberich/root/42/snapshot | btrfs receive /.snapshots/42

اگر سیستم مجدداً نصب شده باشد، متأسفانه معمولاً نمی‌توان به‌سادگی از اسنپ‌شات بازگردانده‌شده به عنوان اسنپ‌شات پیش‌فرض جدید استفاده کرد، چرا که برخی فایل‌ها، مانند /etc/fstab، احتمالاً نیاز به تغییر دارند. همچنین متأسفانه برای زیرحجم‌هایی غیر از root قابلیت عقب‌گرد (rollback) پشتیبانی نمی‌شود.

اگر برای سرعت بخشیدن به عملیات اسنپ‌شات‌هایی در مبدا وجود داشته باشد، می‌توانید از گزینه -p برای btrfs send نیز استفاده کنید.

محتوای اسنپ‌شات‌های منتقل‌شده نباید در سیستم مبدا تغییر داده شود. معمولاً از آنجا که اسنپ‌شات‌ها فقط‌خواندنی هستند از این بابت اطمینان حاصل می‌شود. اما تغییر اسنپ‌شات‌ها به حالت خواندنی-نوشتنی امکان‌پذیر است. این کار می‌تواند در آینده در طول انتقال‌ها باعث بروز خطا شود.

از آنجا که target-mode ssh-push به مجوزهای ریشه (root) در مقصد نیاز دارد، توصیه می‌شود از یک ماشین یا کانتینر اختصاصی به عنوان مقصد استفاده شود.

/etc/snapper/backup-configs

دایرکتوری حاوی فایل‌های پیکربندی.

در حالت عادی وضعیت خروج 0 است. در صورت بروز خطا وضعیت خروج 1 خواهد بود.

http://snapper.io

Arvin Schnell <aschnell@suse.com>

snapper-backup-configs(5), snapper(8), btrfs-send(8), btrfs-receive(8) rsync(1), sshfs(1)

1.
RFC 4180
2026-01-16 0.13.1