VFS_SHADOW_COPY2(8) System Administration tools VFS_SHADOW_COPY2(8)

vfs_shadow_copy2 - نمایش اسنپ‌شات‌ها به عنوان رونوشت سایه (shadow copies) به کلاینت‌های ویندوز

vfs objects = shadow_copy2

این ماژول VFS بخشی از مجموعه samba(7) است.

ماژول VFS با نام vfs_shadow_copy2 قابلیتی مشابه سرویس‌های Shadow Copy مایکروسافت ارائه می‌دهد. در صورت پیکربندی مناسب، این ماژول به کلاینت‌های مایکروسافت اجازه می‌دهد اسنپ‌شات‌های سیستم‌فایل را به صورت “رونوشت‌های سایه” در اشتراک‌های سامبا مرور کنند.

این دومین پیاده‌سازی از ماژول shadow copy است که ویژگی‌های اضافی زیر را (در مقایسه با ماژول اصلی shadow_copy(8)) دارد:

1.دیگر نیازی به پر کردن دایرکتوری ریشه اشتراک با پیوندهای نمادین (symlinks) به اسنپ‌شات‌ها در صورت ذخیره اسنپ‌شات‌ها در جای دیگر نیست. در عوض، می‌توانید ماژول را به‌صورت انعطاف‌پذیر پیکربندی کنید که اسنپ‌شات‌ها را در کجا جستجو کند. این قابلیت زمانی که هزاران اشتراک دارید یا از [homes] استفاده می‌کنید بسیار مهم است.
2.دایرکتوری‌های اسنپ‌شات نیازی به قرار گرفتن در یک مکان مرکزی ثابت ندارند و می‌توانند در هر کجای درخت دایرکتوری مستقر باشند. این حالت به پشتیبانی از سیستم‌فایل‌هایی که از زیردرخت‌های خاص اسنپ‌شات می‌گیرند (مانند مجموعه‌های مستقل فایل GPFS) کمک می‌کند.
3.نام‌گذاری دلخواه برای اسنپ‌شات‌ها: اسنپ‌شات‌ها می‌توانند با هر قالبی که با تبدیلات str[fp]time سازگار باشد نام‌گذاری شوند.
4.برچسب‌های زمانی را می‌توان به جای UTC بر حسب زمان محلی (localtime) نمایش داد.
5.شماره inode فایل‌ها را می‌توان به صورت اختیاری تغییر داد تا با شماره اصلی متفاوت باشد. این کار باعث می‌شود دکمه ’restore’ در رابط گرافیکی ویندوز بدون خطای نقض اشتراک‌گذاری (sharing violation) هنگام ارائه از سیستم‌فایل‌هایی مانند GPFS (که شماره دستگاه و inode یکسانی برای فایل اسنپ‌شات و فایل اصلی برمی‌گردانند) کار کند.
6.نتایج shadow copy به طور پیش‌فرض قبل از ارسال به کلاینت مرتب می‌شوند. این ویژگی برای سیستم‌فایل‌هایی که دایرکتوری‌ها را بر اساس حروف الفبا نمی‌خوانند (یونیکس پیش‌فرض) سودمند است. ترتیب مرتب‌سازی قابل پیکربندی است و در صورتی که سیستم‌فایل فهرست دایرکتوری خود را مرتب می‌کند، می‌توان مرتب‌سازی را کاملاً غیرفعال کرد.

این ماژول قابلیت پشته‌سازی (stackable) دارد.

ماژول vfs_shadow_copy2 به پیاده‌سازی اسنپ‌شات در سیستم‌فایل متکی است. بسیاری از سیستم‌فایل‌های رایج از این ویژگی به طور بومی پشتیبانی می‌کنند.

اسنپ‌شات‌های سیستم‌فایل باید زیر دایرکتوری‌هایی با نام ویژه در دسترس باشند تا توسط vfs_shadow_copy2 شناسایی شوند. این دایرکتوری اسنپ‌شات معمولاً یک زیردایرکتوری مستقیم از نقطه اتصال ریشه اشتراک است، اما حالت‌های دیگری نیز وجود دارند که با پارامترهای مشروح زیر قابل پیکربندی هستند.

اسنپ‌شات در یک نقطه زمانی مشخص در زیردایرکتوری از دایرکتوری اسنپ‌شات انتظار می‌رود، که در آن نام دایرکتوری اسنپ‌شات قالبی از زمان اسنپ‌شات است. قالب پیش‌فرض که با گزینه shadow:format قابل تغییر است @GMT-YYYY.MM.DD-hh.mm.ss می‌باشد، که در آن:

•YYYY سال ۴ رقمی است
•MM ماه ۲ رقمی است
•DD روز ۲ رقمی است
•hh ساعت ۲ رقمی است
•mm دقیقه ۲ رقمی است
•ss ثانیه ۲ رقمی است.

قرارداد نام‌گذاری اسنپ‌شات vfs_shadow_copy2 را می‌توان با دستور date(1) زیر تولید کرد:

TZ=GMT date +@GMT-%Y.%m.%d-%H.%M.%S

shadow:mountpoint = MOUNTPOINT

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

مثال: shadow:mountpoint = /path/to/filesystem

پیش‌فرض: shadow:mountpoint = NOT SPECIFIED

shadow:snapdir = SNAPDIR

مسیر دایرکتوری که سیستم‌فایل اشتراک اسنپ‌شات‌های خود را در آن نگه می‌دارد. اگر مسیر مطلق مشخص شود، همان‌طور که هست استفاده می‌شود. اگر مسیر نسبی مشخص شود، نسبت به نقطه اتصال سیستم‌فایل ریشه اشتراک در نظر گرفته می‌شود (به shadow:mountpoint مراجعه کنید).

توجه داشته باشید که shadow:snapdirseverywhere به این پارامتر وابسته است و نیاز به مسیر نسبی دارد. تعیین مسیر مطلق باعث غیرفعال شدن shadow:snapdirseverywhere می‌شود.

همچنین توجه داشته باشید که گزینه shadow:crossmountpoints نیز نیازمند یک snapdir نسبی است. تعیین مسیر مطلق باعث غیرفعال شدن shadow:crossmountpoints می‌شود.

مثال: shadow:snapdir = /some/absolute/path

پیش‌فرض: shadow:snapdir = .snapshots

shadow:basedir = BASEDIR

گزینه basedir امکان مشخص کردن دایرکتوری میان نقطه اتصال اشتراک و ریشه اشتراک را فراهم می‌کند که اسنپ‌شات‌های سیستم‌فایل نسبت به آن گرفته می‌شوند.

برای نمونه اگر:

•basedir = mountpoint/rel_basedir
•share_root = basedir/rel_share_root
•snapshot_path = mountpoint/snapdir

یا snapshot_path = snapdir در صورتی که snapdir مطلق باشد

آنگاه اسنپ‌شات یک file = mountpoint/rel_basedir/rel_share_root/rel_file در زمان TIME در مسیر snapshot_path/FS_GMT_TOKEN(TIME)/rel_share_root/rel_file یافت خواهد شد، که در آن FS_GMT_TOKEN(TIME) رشته برچسب زمانی متعلق به TIME در قالب مورد نیاز سیستم‌فایل است (به shadow:format مراجعه کنید).

مقدار پیش‌فرض برای basedir، نقطه اتصال سیستم‌فایل ریشه اشتراک است (به shadow:mountpoint مراجعه کنید).

توجه داشته باشید که گزینه‌های shadow:snapdirseverywhere و shadow:crossmountpoints با shadow:basedir ناسازگار هستند و تنظیم basedir را غیرفعال می‌کنند.

shadow:snapsharepath = SNAPSHAREPATH

با این پارامتر می‌توان مسیر دایرکتوری ریشه اشتراک را در اسنپ‌شات‌ها، نسبت به دایرکتوری ریشه اسنپ‌شات مشخص کرد. این یک روش جایگزین برای shadow:basedir است که کنترل بیشتری فراهم می‌کند.

برای نمونه، اگر درون هر اسنپ‌شات، فایل‌های اشتراک دارای پیشوند path/to/share/ باشند، آنگاه shadow:snapsharepath را می‌توان روی path/to/share تنظیم کرد.

با این پارامتر، دیگر فرض نمی‌شود که یک اسنپ‌شات تصویری از سیستم‌فایل اصلی یا بخشی از آن است. برای نمونه، یک سیستم می‌تواند تنها از فایل‌های موجود در اشتراک‌ها پشتیبان بگیرد و سپس فایل‌های پشتیبان را در یک ساختار منطقی ارائه دهد:

•share1/
•share2/
•.../
توجه داشته باشید که گزینه‌های shadow:snapdirseverywhere و shadow:basedir با shadow:snapsharepath ناسازگار هستند و تنظیم shadow:snapsharepath را غیرفعال می‌کنند.

مثال: shadow:snapsharepath = path/to/share

پیش‌فرض: shadow:snapsharepath = NOT SPECIFIED

shadow:sort = asc/desc

به طور پیش‌فرض، این ماژول داده‌های shadow copy را پیش از ارسال به کلاینت به ترتیب الفبایی مرتب می‌کند. با این پارامتر می‌توان جهت مرتب‌سازی را مشخص کرد. مقادیر شناخته‌شده عبارتند از desc (نزولی، پیش‌فرض) و asc (صعودی). اگر سیستم‌فایل دایرکتوری‌ها را مرتب‌شده بر اساس الفبا فهرست کند، می‌توان با مشخص کردن هر مقدار دیگری مرتب‌سازی را در این ماژول خاموش کرد.

مثال: shadow:sort = asc

مثال: shadow:sort = none

پیش‌فرض: shadow:sort = desc

shadow:localtime = yes/no

این پارامتر اختیاری مشخص می‌کند که آیا نام‌های اسنپ‌شات در قالب UTC/GMT هستند یا در قالب زمان محلی. اگر غیرفعال باشد، UTC/GMT انتظار می‌رود.

shadow:localtime = no

shadow:format = مشخصات قالب برای نام‌های اسنپ‌شات

این پارامتر اختیاری مشخصات قالب برای نام‌گذاری اسنپ‌شات‌ها در سیستم‌فایل را تعیین می‌کند. قالب باید با مشخصات تبدیل شناخته‌شده توسط str[fp]time سازگار باشد.

پیش‌فرض: shadow:format = "@GMT-%Y.%m.%d-%H.%M.%S"

shadow:sscanf = yes/no

از این پارامتر می‌توان برای تعیین اینکه زمان در رشته قالب به صورت یک عدد صحیح بدون علامت بلند (%lu) داده شده است به جای زمانی که strptime() بتواند تجزیه کند، استفاده کرد. نتیجه باید یک زمان unix time_t باشد.

پیش‌فرض: shadow:sscanf = no

shadow:fixinodes = yes/no

اگر shadow:fixinodes را فعال کنید، این ماژول شماره inode ظاهری فایل‌ها را در دایرکتوری‌های اسنپ‌شات با استفاده از هش مسیر فایل‌ها تغییر می‌دهد. این ویژگی برای سیستم‌های اسنپ‌شاتی مورد نیاز است که در آن‌ها اسنپ‌شات‌ها دارای شماره device:inode یکسانی با فایل‌های اصلی هستند (مانند آنچه در اسنپ‌شات‌های GPFS رخ می‌دهد). اگر این گزینه را تنظیم نکنید، دکمه ’restore’ در رابط کاربری shadow copy با خطای نقض اشتراک‌گذاری (sharing violation) با شکست مواجه می‌شود.

پیش‌فرض: shadow:fixinodes = no

shadow:snapdirseverywhere = yes/no

اگر shadow:snapdirseverywhere را فعال کنید، این ماژول دایرکتوری‌های اسنپ‌شات را در دایرکتوری کاری جاری و تمام دایرکتوری‌های والد جستجو می‌کند و به طور پیش‌فرض در نقطه اتصال متوقف می‌شود. اما برای نحوه تغییر این رفتار به shadow:crossmountpoints مراجعه کنید.

یک نمونه که به این گزینه نیاز است، filesetهای مستقل در IBM GPFS هستند، اما سیستم‌فایل‌های دیگر نیز ممکن است از اسنپ‌شات‌گیری تنها از زیردرخت‌های خاصی از سیستم‌فایل پشتیبانی کنند.

توجه داشته باشید که shadow:snapdirseverywhere به shadow:snapdir وابسته است و نیاز دارد که آن یک مسیر نسبی باشد. تعیین مسیر مطلق برای snapdir، گزینه shadow:snapdirseverywhere را غیرفعال می‌کند.

توجه داشته باشید که این گزینه با shadow:basedir ناسازگار است و تنظیم shadow:basedir را خودبه‌خود حذف می‌کند.

مثال: shadow:snapdirseverywhere = yes

پیش‌فرض: shadow:snapdirseverywhere = no

shadow:crossmountpoints = yes/no

این گزینه در حالت shadow:snapdirseverywhere = yes مؤثر است. فعال کردن این گزینه باعث می‌شود ماژول در اولین نقطه اتصال مشاهده‌شده هنگام جستجوی snapdirها متوقف نشود، بلکه به آن اجازه می‌دهد به‌طور بالقوه در تمام طول مسیر جستجو کند.

یک نمونه که به این گزینه نیاز است، filesetهای مستقل در IBM GPFS هستند، اما سایر سیستم‌فایل‌ها نیز ممکن است از اسنپ‌شات‌گیری تنها از زیردرخت‌های خاص سیستم‌فایل پشتیبانی کنند.

توجه داشته باشید که shadow:crossmountpoints به shadow:snapdir وابسته است و نیاز دارد که آن یک مسیر نسبی باشد. تعیین مسیر مطلق برای snapdir، گزینه shadow:crossmountpoints را غیرفعال می‌کند.

توجه داشته باشید که این گزینه با گزینه shadow:basedir ناسازگار است و تنظیم shadow:basedir را خودبه‌خود حذف می‌کند.

مثال: shadow:crossmountpoints = yes

پیش‌فرض: shadow:crossmountpoints = no

shadow:snapprefix

با افزایش تعداد اسنپ‌شات‌ها، سیستم‌فایل‌ها به سازوکاری برای تفکیک یک مجموعه از اسنپ‌شات‌ها از مجموعه دیگر (مانند ماهانه، هفتگی، دستی، رویدادهای ویژه و غیره) نیاز دارند. بنابراین این سیستم‌فایل‌ها روش‌های متفاوتی برای برچسب‌گذاری اسنپ‌شات‌ها ارائه می‌دهند، مانند ارائه روشی قابل پیکربندی برای نام‌گذاری اسنپ‌شات‌ها که تنها بر پایه زمان نباشد. با داشتن صرفاً shadow:format فیلتر کردن این اسنپ‌شات‌ها بسیار دشوار است. با این پارامتر اختیاری، می‌توان یک مؤلفه پیشوند متغیر برای نام‌های دایرکتوری‌های اسنپ‌شات در سیستم‌فایل مشخص کرد. اگر این پارامتر تنظیم شود، همراه با پارامترهای shadow:format و shadow:delimiter نام‌های مجاز دایرکتوری‌های اسنپ‌شات در سیستم‌فایل را تعیین می‌کند. این گزینه تنها از عبارات منظم پایه (BRE) پشتیبانی می‌کند.

shadow:delimiter

این پارامتر اختیاری به عنوان جداکننده میان shadow:snapprefix و shadow:format استفاده می‌شود. این پارامتر تنها زمانی کاربرد دارد که shadow:snapprefix تنظیم شده باشد.

پیش‌فرض: shadow:delimiter = "_GMT"

افزودن پشتیبانی از shadow copy به دایرکتوری‌های خانگی کاربران:

        [homes]
	vfs objects = shadow_copy2
	shadow:snapdir = /data/snapshots
	shadow:basedir = /data/home
	shadow:sort = desc

این یک راهکار پشتیبان‌گیری، بایگانی، یا کنترل نسخه نیست.

در سرورهای سامبا یا ویندوز، vfs_shadow_copy2 تنها به عنوان ابزاری برای کاربر نهایی طراحی شده است. این ماژول جایگزین یا ارتقا‌دهنده راهکارهای پشتیبان‌گیری و بایگانی شما نیست و به هیچ وجه نباید به عنوان چنین ابزاری تلقی شود. علاوه بر این، اگر به کنترل نسخه نیاز دارید، یک سامانه کنترل نسخه پیاده‌سازی کنید.

این صفحه راهنما بخشی از نسخه 4.24.6 مجموعه Samba است.

نرم‌افزار اصلی Samba و ابزارهای مرتبط توسط Andrew Tridgell ایجاد شده‌اند. Samba اکنون توسط تیم Samba به عنوان یک پروژه متن‌باز مشابه نحوه توسعه هسته لینوکس توسعه داده می‌شود.

08/16/2026 Samba 4.24.6