rsnapshot(1) rsnapshot-tools rsnapshot(1)

rsnapshot - ابزار تهیه تصویر لحظه‌ای از فایل‌سیستم راه دور

rsnapshot [-vtxqVD] [-c cfgfile] [command] [args]

rsnapshot ابزاری برای تهیه تصویر لحظه‌ای (اسنپ‌شات) از فایل‌سیستم است. این ابزار می‌تواند برای هر تعداد ماشین، از فایل‌سیستم‌های محلی و دوردست نسخه‌های پشتیبان افزایشی تهیه کند.

تصویربرداری از فایل‌سیستم‌های محلی توسط rsync(1) مدیریت می‌شود. اتصالات امن راه دور از طریق rsync بر بستر ssh(1) انجام می‌پذیرد، در حالی که اتصالات ناشناس rsync صرفاً از یک سرور rsync استفاده می‌کنند. هر دو نوع انتقال محلی و راه دور به rsync وابسته هستند.

rsnapshot بسیار بیشتر از آنچه تصور کنید در فضای دیسک صرفه‌جویی می‌کند. میزان فضای مورد نیاز تقریباً معادل حجم یک نسخه پشتیبان کامل، به همراه یک نسخه از هر فایل دیگری است که تغییر کرده باشد. rsnapshot استفاده گسترده‌ای از پیوندهای سخت (hard links) می‌کند؛ بنابراین اگر فایلی تغییر نکرده باشد، اسنپ‌شات بعدی صرفاً یک پیوند سخت به همان فایل دقیق خواهد بود.

rsnapshot معمولاً به عنوان کاربر ریشه (root) توسط یک کار cron یا مجموعه‌ای از کارهای cron فراخوانی می‌شود. با این حال، اجرای آن به عنوان هر کاربر دلخواه دیگری به همراه یک فایل پیکربندی جایگزین نیز امکان‌پذیر است.

تمام گزینه‌های مهم در یک فایل پیکربندی مشخص می‌شوند که به طور پیش‌فرض در مسیر /etc/rsnapshot.conf قرار دارد. می‌توان یک فایل جایگزین را از طریق خط فرمان تعیین کرد. همچنین گزینه‌های اضافی دیگری وجود دارند که امکان ارسال آن‌ها از طریق خط فرمان فراهم است.

گزینه‌های خط فرمان به شرح زیر هستند:

-v پرگویی (verbose)، نمایش دستورات شل در حال اجرا

-t آزمایش (test)، نمایش دستورات شلی که قرار است اجرا شوند

-c مسیر فایل پیکربندی جایگزین

-x یک فایل‌سیستم واحد، عدم عبور از مرز پارتیشن‌ها در هر نقطه پشتیبان‌گیری

-q بی‌صدا (quiet)، نادیده‌گرفتن هشدارهای غیربحرانی

-V مشابه -v، اما با جزئیات بیشتر

-D جریانی انبوه از اطلاعات عیب‌یابی و تشخیصی /etc/rsnapshot.conf فایل پیکربندی پیش‌فرض است. تمام پارامترها در این فایل باید با تب (tab) از یکدیگر جدا شوند. /etc/rsnapshot.conf.default می‌تواند به عنوان یک مرجع مورد استفاده قرار گیرد.

توصیه می‌شود که /etc/rsnapshot.conf.default را به /etc/rsnapshot.conf رونوشت کنید و سپس /etc/rsnapshot.conf را بر اساس نیازهای خود تغییر دهید.

خطوط طولانی را می‌توان به چند خط تقسیم کرد. خطوط «ادامه» (Continuation) باید با یک نویسه فاصله (space) یا تب (tab) شروع شوند. خطوط ادامه هنگام پردازش فایل پیکربندی، تمام فاصله‌های ابتدا و انتهای آن‌ها حذف شده و سپس با یک نویسه تب واسط به خط قبلی ضمیمه می‌شوند.

در اینجا فهرستی از پارامترهای مجاز آورده شده است:

config_version نسخه فایل پیکربندی (الزامی). مقدار پیش‌فرض 1.2 است

snapshot_root مسیر فایل‌سیستم محلی برای ذخیره تمام اسنپ‌شات‌ها

include_conf شامل کردن فایلی دیگر در پیکربندی در این نقطه.

این کار بازگشتی است، اما هنگام مشخص کردن فایلی که باید گنجانده شود ممکن است لازم باشد درباره مسیرها احتیاط کنید. بررسی می‌شود که آیا فایل مشخص‌شده خواندنی است یا خیر، و در غیر این صورت با خطا اعلام خواهد شد. ما استفاده از یک مسیر کامل را توصیه می‌کنیم. به عنوان یک حالت خاص، مقدار include_conf می‌تواند درون `بک‌تیک` قرار گیرد که در این صورت اجرا خواهد شد و هر خروجی‌ای که به STDOUT بفرستد در پیکربندی گنجانده می‌شود. توجه داشته باشید که فرانویسه‌های شل ممکن است تفسیر شوند.

no_create_root اگر روی 1 تنظیم شود، rsnapshot دایرکتوری snapshot_root را ایجاد نخواهد کرد

cmd_rsync مسیر کامل به "rsync" (الزامی)

cmd_ssh مسیر کامل به "ssh" (اختیاری)

cmd_cp مسیر کامل به "cp" (اختیاری، اما باید نسخه GNU باشد)

اگر از لینوکس استفاده می‌کنید، باید cmd_cp را از حالت کامنت خارج کنید. اگر از بستری استفاده می‌کنید که فاقد GNU cp است، باید بگذارید cmd_cp به صورت کامنت‌شده باقی بماند.

با GNU cp، برنامه rsnapshot می‌تواند هم از فایل‌های عادی و هم از فایل‌های خاص (مانند FIFOها، سوکت‌ها، و دستگاه‌های بلوکی/نویسه‌ای) در یک مرحله پشتیبان‌گیری کند.

اگر cmd_cp غیرفعال باشد، rsnapshot از تابع توکار خودش، یعنی native_cp_al() برای پشتیبان‌گیری از فایل‌ها و دایرکتوری‌های عادی استفاده خواهد کرد. سپس این عمل با یک فراخوانی جداگانه به rsync برای انتقال فایل‌های خاص (در صورت وجود) دنبال می‌شود.

cmd_rm مسیر کامل به "rm" (اختیاری)

cmd_logger مسیر کامل به "logger" (اختیاری، برای پشتیبانی از syslog)

cmd_du مسیر کامل به "du" (اختیاری، برای گزارش‌های استفاده از دیسک)

cmd_rsnapshot_diff مسیر کامل به "rsnapshot-diff" (اختیاری)

cmd_preexec

مسیر کامل (به همراه هرگونه آرگومان) به اسکریپت preexec (اختیاری). این اسکریپت بلافاصله قبل از هر عملیات پشتیبان‌گیری (اما نه چرخش‌ها) اجرا خواهد شد. در صورت شکست در اجرا، rsnapshot بلافاصله متوقف می‌شود.

cmd_postexec

مسیر کامل (به همراه هرگونه آرگومان) به اسکریپت postexec (اختیاری). این اسکریپت بلافاصله بعد از هر عملیات پشتیبان‌گیری (اما نه چرخش‌ها) اجرا خواهد شد. در صورت شکست در اجرا، rsnapshot بلافاصله متوقف می‌شود.

linux_lvm_cmd_lvcreate

linux_lvm_cmd_lvremove

linux_lvm_cmd_mount

linux_lvm_cmd_umount

مسیرهای دستورات lvcreate، lvremove، mount و umount، برای استفاده با LVMهای لینوکس. همچنین می‌توانید گزینه‌هایی را نیز برای این دستورات در نظر بگیرید. دستورات lvcreate، lvremove، mount و umount برای مدیریت اسنپ‌شات‌های حجم‌های LVM الزامی هستند و در غیر این صورت اختیاری می‌باشند.

retain [name] [number]

مقدار «name» به نام این سطح پشتیبان‌گیری اشاره دارد (به عنوان مثال، alpha، beta، که همچنین «interval» یا بازه زمانی نامیده می‌شود). مقدار «number» تعداد اسنپ‌شات‌هایی است که برای این نوع بازه نگهداری خواهند شد. مقدار «name» دستوری خواهد بود که برای انجام این نوع پشتیبان‌گیری به rsnapshot داده می‌شود.

یک نام مستعار منسوخ‌شده برای 'retain' عبارت 'interval' است.

مثال: retain alpha 6

[root@localhost]# rsnapshot alpha

برای این مثال، هر بار که این دستور اجرا شود، موارد زیر رخ خواهد داد:

مسیر <snapshot_root>/alpha.5/ در صورت وجود، حذف خواهد شد.

پوشه‌های <snapshot_root>/alpha.{1,2,3,4} همگی، در صورت وجود، به میزان +1 می‌چرخند (rotate می‌شوند).

پوشه <snapshot_root>/alpha.0/ با استفاده از پیوندهای سخت (hard links) به <snapshot_root>/alpha.1/ رونوشت می‌شود.

سپس هر نقطه پشتیبان‌گیری (که در ادامه توضیح داده شده است) با دایرکتوری‌های متناظر در <snapshot_root>/alpha.0/ همگام‌سازی (rsync) خواهد شد.

سطوح پشتیبان‌گیری باید به ترتیب در فایل پیکربندی مشخص شوند، از بیشترین بسامد به کمترین بسامد. مدخل اول، موردی است که با نقاط پشتیبان‌گیری همگام‌سازی می‌شود. سطوح پشتیبان‌گیری بعدی (مانند beta، gamma و غیره) صرفاً می‌چرخند، و هر سطح بالاتر برای دایرکتوری .0 خود اطلاعات را از سطح پایین‌تر از خود می‌کشد.

مثال:

retain alpha 6

retain beta 7

retain gamma 4

پوشه beta.0/ از alpha.5/ منتقل خواهد شد، و gamma.0/ از beta.6/ منتقل می‌شود.

پوشه alpha.0/ مستقیماً از فایل‌سیستم همگام‌سازی (rsync) خواهد شد.

link_dest 1

اگر نسخه rsync شما از --link-dest پشتیبانی می‌کند (نسخه 2.5.7 یا جدیدتر)، می‌توانید این گزینه را فعال کنید تا به rsync اجازه داده شود اموری را مدیریت کند که در غیر این صورت توسط GNU cp یا زیرروال‌های توکار انجام می‌شد. فعال کردن این گزینه باعث می‌شود rsnapshot یک شاخه کد کمی پیچیده‌تر را دنبال کند، اما بهترین روش برای پشتیبانی از فایل‌های خاص روی سیستم‌های غیرلینوکسی است.

sync_first 1

گزینه sync_first رفتار rsnapshot را تغییر می‌دهد. هنگامی که این گزینه فعال باشد، تمام فراخوانی‌های rsnapshot با سطوح مختلف پشتیبان‌گیری، صرفاً فایل‌ها را می‌چرخانند. تمام پشتیبان‌گیری‌ها با فراخوانی rsnapshot به همراه آرگومان «sync» انجام می‌شوند. فایل‌های همگام‌سازی‌شده در دایرکتوری «.sync» در زیر snapshot_root ذخیره می‌شوند.

این قابلیت باعث بازیابی بهتر در حالتی می‌شود که فرایند rsnapshot در میانه یک عملیات همگام‌سازی متوقف شود، چرا که مرحله همگام‌سازی و مراحل چرخش از یکدیگر تفکیک شده‌اند. این بدین معنا نیز هست که می‌توانید به سادگی «rsnapshot sync» را در خط فرمان اجرا کنید بدون اینکه نگران چرخش اجباری تمام دایرکتوری‌های دیگر به سمت بالا باشید. این مزیت به قیمت مصرف فضای دیسک به اندازه یک اسنپ‌شات اضافه تمام می‌شود. مقدار پیش‌فرض 0 (خاموش) است.

verbose 2

میزان اطلاعاتی که هنگام اجرای برنامه در خروجی چاپ می‌شود. مقادیر مجاز از 1 تا 5 هستند. مقدار پیش‌فرض 2 است. 1 Quiet فقط نمایش خطاهای مهلک 2 Default نمایش هشدارها و خطاها 3 Verbose نمایش دستورهای معادل شل در حال اجرا 4 Extra Verbose مشابه Verbose، اما با جزئیات بیشتر 5 Debug انواع و اقسام اطلاعات

loglevel 3

این عدد همان مفهوم verbose در بالا را دارد، اما تعیین می‌کند که در صورت فعال بودن فایل لاگ، چه مقدار داده در آن ثبت شود.

logfile /var/log/rsnapshot

مسیر کامل سیستم‌فایل به فایل لاگ rsnapshot. اگر این گزینه تعریف شود، یک فایل لاگ نوشته خواهد شد که حجم داده‌های آن توسط loglevel کنترل می‌شود. اگر این گزینه کامنت (غیرفعال) شود، هیچ فایل لاگی نوشته نخواهد شد.

include [file-name-pattern]

این مقدار با استفاده از دستورالعمل --include مستقیماً به rsync ارسال می‌شود. این پارامتر می‌تواند به تعداد دفعات مورد نیاز مشخص شود، به‌طوری که در هر خط یک الگو تعریف گردد. برای اطلاع از نحو، به صفحه راهنمای rsync(1) مراجعه کنید.

exclude [file-name-pattern]

این مقدار با استفاده از دستورالعمل --exclude مستقیماً به rsync ارسال می‌شود. این پارامتر می‌تواند به تعداد دفعات مورد نیاز مشخص شود، به‌طوری که در هر خط یک الگو تعریف گردد. برای اطلاع از نحو، به صفحه راهنمای rsync(1) مراجعه کنید.

include_file /path/to/include/file

این مقدار با استفاده از دستورالعمل --include-from مستقیماً به rsync ارسال می‌شود. برای اطلاع از نحو، به صفحه راهنمای rsync(1) مراجعه کنید.

exclude_file /path/to/exclude/file

این مقدار با استفاده از دستورالعمل --exclude-from مستقیماً به rsync ارسال می‌شود. برای اطلاع از نحو، به صفحه راهنمای rsync(1) مراجعه کنید.

rsync_short_args -a

فهرستی از آرگومان‌های کوتاه برای ارسال به rsync. در صورت مشخص نشدن، «-a» پیش‌فرض است. لطفاً توجه داشته باشید که این آرگومان‌ها باید همگی در کنار یکدیگر قرار گیرند. برای مثال، «-az» معتبر است، در حالی که «-a -z» معتبر نیست.

گزینه «-a» همان حالت آرشیو («archive mode») در rsync است که به آن اعلام می‌کند تا حد امکان فراداده‌های سیستم‌فایل را برای هر فایل رونوشت کند. این گزینه به‌طور خاص شامل اطلاعات مربوط به پیوندهای سخت (hard links) *نمی‌شود*، چرا که این کار مصرف حافظه rsync را به‌شدت افزایش داده و سرعت آن را کم می‌کند. اگر نیاز به حفظ پیوندهای سخت در پشتیبان‌های خود دارید، «H» را به این گزینه اضافه کنید.

rsync_long_args --delete --numeric-ids --relative --delete-excluded

فهرست آرگومان‌های بلند برای ارسال به rsync. مقادیر پیش‌فرض عبارتند از:
--delete --numeric-ids --relative --delete-excluded این بدان معناست که ساختار دایرکتوری در مقصد هر نقطه پشتیبان‌گیری، با ساختار موجود در مبدأ نقطه پشتیبان‌گیری مطابقت خواهد داشت.

استفاده از نقل‌قول‌ها در rsync_long_args مجاز است، مانند "--rsync-path='sudo /usr/bin/rsync'". می‌توانید از نقل‌قول تکی (') یا جفتی (") استفاده کنید، اما نقل‌قول‌های تودرتو (شامل نقل‌قول‌های تودرتوی ترکیبی) مجاز نیستند. نقل‌قول مشابه در rsync_long_args به ازای هر نقطه پشتیبان‌گیری نیز مجاز است.

rsync_numtries 0

تعداد دفعات تلاش مجدد برای اجرای rsync به ازای هر مبدأ پشتیبان‌گیری مشخص‌شده. هر زمان که عملیات rsync برای یک مبدأ با یک کد وضعیت خروج غیرصفر به پایان برسد، rsnapshot این عملیات را تکرار می‌کند تا زمانی که تعداد دفعات پیکربندی‌شده در «rsync_numtries» برآورده شود یا rsync با موفقیت به پایان برسد. به‌طور پیش‌فرض هیچ تلاشی برای تکرار انجام نمی‌شود («rsync_numtries 0»).

rsync_wait_between_tries 0

مدت‌زمان انتظار بین تلاش‌ها بر حسب ثانیه. مدت‌زمانی را که باید بین تلاش‌های مجدد عملیات rsync منتظر ماند، بر حسب ثانیه مشخص کنید. تعداد تلاش‌های مجدد باید در rsync_numtries تعریف شده باشد. زمان انتظار پیش‌فرض 0 ثانیه است.

ssh_args -p 22

آرگومان‌هایی که باید به ssh ارسال شوند. در صورت مشخص نشدن، مقدار پیش‌فرض هیچ است.

du_args -csh

آرگومان‌هایی که باید به du ارسال شوند. در صورت مشخص نشدن، مقدار پیش‌فرض -csh است. نسخه GNU ابزار du از -csh پشتیبانی می‌کند، نسخه BSD ابزار du از -csk پشتیبانی می‌کند و Solaris du اصلاً از -c پشتیبانی نمی‌کند. نسخه GNU توصیه می‌شود، چرا که بیشترین امکانات را فراهم می‌کند.

lockfile /var/run/rsnapshot.pid

stop_on_stale_lockfile 0

فایل قفلی که هنگام اجرای rsnapshot استفاده می‌شود. این کار از تداخل و آسیب زدن اجرای دوم به اجرای اول جلوگیری می‌کند. در صورت مشخص نشدن، از هیچ فایل قفلی استفاده نمی‌شود. به دلایل امنیتی اطمینان حاصل کنید که از دایرکتوری‌ای استفاده می‌کنید که برای همگان قابل نوشتن نباشد. استفاده از فایل قفل قویاً توصیه می‌شود.

اگر هنگام شروع rsnapshot یک فایل قفل وجود داشته باشد، برنامه تلاش می‌کند آن فایل را بخواند و اگر نتواند، با یک خطا متوقف می‌شود. اگر *بتواند* فایل را بخواند، بررسی می‌کند که آیا فرآیندی با شناسه PID درج‌شده در فایل وجود دارد یا خیر. اگر وجود داشته باشد، rsnapshot با یک پیام خطا متوقف می‌شود. اگر هیچ فرآیندی با آن PID وجود نداشته باشد، فرض می‌کنیم فایل قفل کهنه (stale) است و آن را نادیده می‌گیریم، *مگر اینکه* stop_on_stale_lockfile برابر 1 تنظیم شده باشد که در این صورت برنامه متوقف می‌شود.

مقدار پیش‌فرض stop_on_stale_lockfile برابر 0 است.

one_fs 1

از عبور rsync از پارتیشن‌های سیستم‌فایل جلوگیری می‌کند. تنظیم این گزینه به مقدار 1 این ویژگی را فعال می‌کند. مقدار 0 آن را غیرفعال می‌سازد. این پارامتر اختیاری است. پیش‌فرض 0 (خاموش) است.

use_lazy_deletes 1

رفتار پیش‌فرض rsnapshot را تغییر داده و در ابتدا قدیمی‌ترین اسنپ‌شات را حذف نمی‌کند. در عوض آن دایرکتوری را به _delete.[processid] منتقل کرده و کار را به‌طور عادی ادامه می‌دهد. پس از تکمیل نسخه پشتیبان، فایل قفل پیش از شروع فرآیند حذف دایرکتوری توسط rsnapshot، برداشته خواهد شد.

فعال کردن این گزینه به این معنی است که اسنپ‌شات‌ها زودتر گرفته می‌شوند (چرا که حذف در ابتدا انجام نمی‌شود) و به سایر فرآیندهای rsnapshot اجازه داده می‌شود در حین انجام حذف نهایی شروع به کار کنند. این مزیت به قیمت مصرف فضای دیسک بیشتر تمام می‌شود. پیش‌فرض 0 (خاموش) است.

جزئیات نحوه عملکرد این ویژگی در rsnapshot نسخه 1.3.1 تغییر کرده است. در ابتدا در هر سطح پشتیبان‌گیری تنها می‌توانستید یک دایرکتوری .delete داشته باشید. اکنون می‌توانید چندین مورد داشته باشید، بنابراین اگر پشتیبان‌گیری بعدی شما (برای مثال alpha) در حالی آغاز شود که قبلی هنوز در حال انجام حذف تنبل (lazy delete) است، ممکن است موقتاً دایرکتوری‌های _delete اضافی باقی مانده باشند.

linux_lvm_snapshotsize 2G

اندازه اسنپ‌شات(های) LVM (گزینه --size در lvcreate).

linux_lvm_snapshotname rsnapshot

نام مورد استفاده هنگام ایجاد اسنپ‌شات(های) حجم منطقی LVM (گزینه --name در lvcreate).

linux_lvm_vgpath /dev

مسیر به گروه‌های حجمی LVM (Volume Groups).

linux_lvm_mountpath /mnt/lvm-snapshot

نقطه اتصالی که برای سوار کردن موقت اسنپ‌شات(ها) استفاده می‌شود.

backup /etc/ localhost/

backup root@example.com:/etc/ example.com/

backup rsync://example.com/path2/ example.com/

backup /var/ localhost/ one_fs=1

backup lvm://vg0/home/path2/ lvm-vg0/

backup_script /usr/local/bin/backup_pgsql.sh pgsql_backup/

مثال‌ها:

backup /etc/ localhost/

پشتیبان‌گیری از /etc/ در <snapshot_root>/<retain>.0/localhost/etc/ با استفاده از rsync روی سیستم‌فایل محلی

backup /usr/local/ localhost/

از مسیر /usr/local/ با استفاده از rsync بر روی فایل‌سیستم محلی در <snapshot_root>/<retain>.0/localhost/usr/local/ پشتیبان تهیه می‌کند

backup root@example.com:/etc/ example.com/

از مسیر root@example.com:/etc/ با استفاده از rsync از طریق ssh در <snapshot_root>/<retain>.0/example.com/etc/ پشتیبان تهیه می‌کند

backup example.com:/etc/ example.com/

مشابه مورد قبل است اما به ssh اجازه می‌دهد نام‌کاربری دوردست را تعیین کند (همان‌طور که در ~/.ssh/config مشخص شده است، در غیر این صورت مشابه نام‌کاربری محلی خواهد بود)

backup root@example.com:/usr/local/ example.com/

از مسیر root@example.com:/usr/local/ با استفاده از rsync از طریق ssh در <snapshot_root>/<retain>.0/example.com/usr/local/ پشتیبان تهیه می‌کند

backup rsync://example.com/pub/ example.com/pub/

از مسیر rsync://example.com/pub/ با استفاده از یک کارساز ناشناس rsync در <snapshot_root>/<retain>.0/example.com/pub/ پشتیبان می‌گیرد. لطفاً توجه داشته باشید که برعکس پشتیبان‌گیری از مسیرهای محلی و استفاده از rsync از طریق ssh، کارسازهای rsync دارای «ماژول‌ها» هستند، که دایرکتوری‌های سطح بالایی بوده و صادر (export) می‌شوند. بنابراین، ماژول باید در مسیر مقصد نیز مشخص شود، همان‌طور که در مثال بالا نشان داده شده است (دایرکتوری pub/ در انتها).

backup /var/ localhost/ one_fs=1

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

این قابلیت بیش از همه هنگام تعیین موارد استثنا (excludes) در rsync به ازای هر پشتیبان کاربرد دارد، بدین صورت:

backup root@somehost:/ somehost +rsync_long_args=--exclude=/var/spool/

به علامت + توجه کنید. این علامت به rsync_long_args اعلام می‌کند که به جای جایگزین کردن کل فهرست، آرگومان‌ها را به فهرست آرگومان‌های ارسالی به rsync اضافه کند. علامت + تنها برای rsync_long_args و rsync_short_args در rsnapshot پشتیبانی می‌شود.

backup lvm://vg0/home/path2/ lvm-vg0/

از حجم منطقی LVM به نام home، متعلق به گروه حجمی vg0، در مسیر <snapshot_root>/<retain>.0/lvm-vg0/ پشتیبان تهیه می‌کند. برای هر ورودی lvm:// یک اسنپ‌شات LVM ایجاد، سوار (mount)، پشتیبان‌گیری، پیاده (unmount) و حذف خواهد شد.

backup_script /usr/local/bin/backup_database.sh db_backup/

در این مثال، یک اسکریپت یا برنامه را برای اجرا مشخص می‌کنیم. این اسکریپت باید صرفاً فایل‌ها و/یا دایرکتوری‌هایی را در دایرکتوری کاری جاری خود بسازد. سپس rsnapshot آن خروجی را برداشته و به دایرکتوری مشخص‌شده در ستون سوم منتقل می‌کند.

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

بنابراین در این مثال، فرض کنید اسکریپت backup_database.sh دستوری شبیه به این را اجرا می‌کند:

#!/bin/sh
mysqldump -uusername mydatabase > mydatabase.sql
chmod u=r,go= mydatabase.sql        # r-------- (0400)

دستور rsnapshot فایل تولید شدهٔ «mydatabase.sql» را برداشته و آن را به دایرکتوری <snapshot_root>/<retain>.0/db_backup/ منتقل می‌کند. در اجراهای بعدی، rsnapshot تفاوت‌های میان فایل‌های ایجادشده را با فایل‌های قبلی مقایسه می‌کند. اگر اسکریپت پشتیبان‌گیری در اجرای بعدی خروجی یکسانی تولید کند، فایل‌ها به صورت پیوند سخت (hard link) به فایل‌های پیشین متصل می‌شوند و هیچ فضای دیسک اضافه‌ای مصرف نخواهد شد.

backup_exec ssh root@1.2.3.4 "du -sh /.offsite_backup"; optional

backup_exec rsync -az /.snapshots/daily.0 root@1.2.3.4:/.offsite_backup/ required

backup_exec /bin/true/

دستور backup_exec صرفاً دستور فهرست‌شده را اجرا می‌کند. آرگومان دوم اجباری نیست و مقدار پیش‌فرض آن 'optional' است. این آرگومان اهمیت این را که دستور مقدار 0 بازگرداند مشخص می‌کند. مقادیر معتبر شامل 'optional' و 'required' هستند. اگر دستور به عنوان optional مشخص شده باشد، وضعیت خروج غیر صفر از سوی دستور منجر به نمایش پیام هشدار خواهد شد. اگر دستور به عنوان 'required' مشخص شده باشد، وضعیت خروج غیر صفر از دستور منجر به نمایش پیام خطا شده و خود rsnapshot نیز با وضعیت خروج غیر صفر خاتمه می‌یابد.

به یاد داشته باشید که تمامی عناصر باید با کلید Tab (جهش) از یکدیگر جدا شوند، و باید در انتهای هر دایرکتوری یک اسلش پایانی وجود داشته باشد.

علامت هش (#) در ابتدای یک خط به عنوان توضیح (کامنت) در نظر گرفته می‌شود.

ترکیب همهٔ این موارد با یکدیگر (یک فایل نمونه):

    # THIS IS A COMMENT, REMEMBER TABS MUST SEPARATE ALL ELEMENTS
    config_version  1.2
    snapshot_root   /.snapshots/
    cmd_rsync           /usr/bin/rsync
    cmd_ssh             /usr/bin/ssh
    #cmd_cp             /bin/cp
    cmd_rm              /bin/rm
    cmd_logger          /usr/bin/logger
    cmd_du              /usr/bin/du
    linux_lvm_cmd_lvcreate        /sbin/lvcreate
    linux_lvm_cmd_lvremove        /sbin/lvremove
    linux_lvm_cmd_mount           /bin/mount
    linux_lvm_cmd_umount          /bin/umount
    linux_lvm_snapshotsize    2G
    linux_lvm_snapshotname    rsnapshot
    linux_lvm_vgpath          /dev
    linux_lvm_mountpath       /mnt/lvm-snapshot
    retain              alpha  6
    retain              beta   7
    retain              gamma  7
    retain              delta 3
    backup              /etc/                     localhost/
    backup              /home/                    localhost/
    backup_script       /usr/local/bin/backup_mysql.sh  mysql_backup/
    backup              root@foo.com:/etc/        foo.com/
    backup              root@foo.com:/home/       foo.com/
    backup              root@mail.foo.com:/home/  mail.foo.com/
    backup              rsync://example.com/pub/  example.com/pub/
    backup              lvm://vg0/xen-home/       lvm-vg0/xen-home/
    backup_exec         echo "backup finished!"
rsnapshot می‌تواند توسط هر کاربری استفاده شود، اما برای پشتیبان‌گیری‌های سراسری سیستم احتمالاً مایل خواهید بود آن را با دسترسی root اجرا کنید.
از آنجا که در صورت نیاز به دخالت انسان، پشتیبان‌گیری‌ها معمولاً فراموش می‌شوند، روش ارجح اجرای آن از طریق cron است.
هنگامی که برای نخستین بار پشتیبان‌گیری‌های خود را تنظیم می‌کنید، احتمالاً مایل خواهید بود آن را یک یا دو بار از خط فرمان اجرا کنید تا با نحوه کارکرد آن آشنا شوید.
در اینجا یک نمونه مدخل crontab آورده شده است، با این فرض که سطوح پشتیبان‌گیری alpha،
beta، gamma و delta در /etc/rsnapshot.conf تعریف شده باشند:
0 */4 * * *         /usr/local/bin/rsnapshot alpha

50 23 * * *         /usr/local/bin/rsnapshot beta

40 23 * * 6         /usr/local/bin/rsnapshot gamma

30 23 1 * *         /usr/local/bin/rsnapshot delta
این مثال موارد زیر را انجام خواهد داد:
۶ پشتیبان‌گیری alpha در روز (هر ۴ ساعت یک بار، در ساعت‌های ۰، ۴، ۸، ۱۲، ۱۶ و ۲۰)

۱ پشتیبان‌گیری beta در هر روز، در ساعت ۲۳:۵۰

۱ پشتیبان‌گیری gamma در هر هفته، ساعت ۲۳:۴۰، در روزهای شنبه (روز ششم هفته)

۱ پشتیبان‌گیری delta در هر ماه، ساعت ۲۳:۳۰ در روز اول ماه
معمولاً ایده خوبی است که زمان‌بندی سطوح پشتیبان‌گیری بزرگ‌تر را کمی قبل از سطوح پایین‌تر تنظیم کنید. برای مثال، در crontab بالا، توجه داشته باشید که «beta» ۱۰ دقیقه پیش از «alpha» اجرا می‌شود. دلیل اصلی این کار آن است که چرخش (rotate) سطح beta قدیمی‌ترین نسخه alpha را برداشته و آن را به جدیدترین نسخه beta تبدیل می‌کند (به این معنی که در چرخش بعدی alpha نیازی به حذف قدیمی‌ترین نسخه alpha نخواهد بود)، که این فرآیند کارآمدتر است. دلیل فرعی دیگر این است که پیش‌بینی مدت‌زمان اجرای پایین‌ترین سطح پشتیبان‌گیری دشوارتر است، زیرا علاوه بر چرخشی که همه پشتیبان‌ها انجام می‌دهند، این سطح باید یک rsync واقعی را نیز از مبدأ انجام دهد.
اگر انجام چرخش «beta» در rsnapshot بیش از ۱۰ دقیقه طول بکشد (که معمولاً شامل حذف قدیمی‌ترین تصویر لحظه‌ای beta نیز می‌شود)، باید فاصله زمانی بین سطوح پشتیبان‌گیری را افزایش دهید. در غیر این صورت (با فرض اینکه پارامتر lockfile را مطابق توصیه تنظیم کرده باشید)، نسخه alpha گاهی با شکست مواجه خواهد شد زیرا beta همچنان قفل را در اختیار دارد.
به یاد داشته باشید که این‌ها تنها زمان‌های اجرای برنامه هستند. برای تعیین تعداد پشتیبان‌های ذخیره‌شده، مقادیر retain را در
/etc/rsnapshot.conf تنظیم کنید.
برای بررسی فضای دیسک مصرف‌شده توسط rsnapshot، می‌توانید آن را با آرگومان «du» فراخوانی کنید.
برای مثال:
rsnapshot du
این دستور دقیقاً نشان می‌دهد چه مقدار فضای دیسک در ریشهٔ snapshot اشغال شده است. این ویژگی نیازمند آن است که دستور یونیکسی du بر روی سیستم شما نصب شده باشد، از آرگومان‌های خط فرمان «-csh» پشتیبانی کند، و در مسیر (PATH) شما قرار داشته باشد. همچنین می‌توانید با استفاده از پارامترهای cmd_du و du_args، تنظیمات مسیر و فلگ‌های ارسالی به du را بازنویسی کنید.
همچنین این امکان وجود دارد که یک مسیر فایل نسبی را به عنوان آرگومان دوم ارسال کنید تا گزارشی از یک فایل یا زیرشاخه خاص دریافت نمایید.
rsnapshot du localhost/home/
نسخه GNU از «du» ارجح است. نسخه BSD نیز به‌خوبی کار می‌کند، اما از فلگ -h پشتیبانی نمی‌کند (به جای آن از -k برای مشاهده مجموع مقادیر بر حسب کیلوبایت استفاده کنید). سایر نسخه‌های «du»، مانند Solaris، ممکن است اصلاً کار نکنند.
برای بررسی تفاوت‌های میان دو دایرکتوری، rsnapshot را با آرگومان «diff» و به دنبال آن دو سطح پشتیبان‌گیری یا مسیر دایرکتوری فراخوانی کنید.
برای مثال:
rsnapshot diff beta.0 beta.1

rsnapshot diff beta.0/localhost/etc beta.1/localhost/etc

rsnapshot diff /.snapshots/beta.0 /.snapshots/beta.1
این دستور برنامهٔ "rsnapshot-diff" را فراخوانی می‌کند که هر دو دایرکتوری را برای یافتن تفاوت‌ها (بر پایه پیوندهای سخت) پویش خواهد کرد.
rsnapshot sync
هنگامی که sync_first فعال باشد، ابتدا باید rsnapshot با آرگومان sync فراخوانی شود، و پس از آن سایر مدخل‌های معمول cron اجرا گردند. عملیات sync باید در سطحِ پایین‌ترین و پرتکرارترین پشتیبان‌گیری، و دقیقاً پیش از آن انجام شود. برای مثال:
0 */4 * * *         /usr/local/bin/rsnapshot sync && /usr/local/bin/rsnapshot alpha

50 23 * * *         /usr/local/bin/rsnapshot beta

40 23 1,8,15,22 * * /usr/local/bin/rsnapshot gamma

30 23 1 * *         /usr/local/bin/rsnapshot delta
عملیات sync صرفاً rsync و تمامی اسکریپت‌های پشتیبان‌گیری را اجرا می‌کند. در این سناریو، تمام فراخوانی‌ها دایرکتوری‌ها را به سادگی می‌چرخانند، حتی در پایین‌ترین سطح پشتیبان‌گیری.

لطفاً توجه داشته باشید که دستور فوق «rsnapshot sync && rsnapshot alpha»، هرگاه rsnapshot عملیات همگام‌سازی خود را «همراه با هشدار» به پایان برساند (مثلاً برخی فایل‌ها در زمان اجرای rsync ناپدید شده باشند)، از چرخش دایرکتوری‌ها صرف‌نظر خواهد کرد. اگر می‌خواهید حتی در صورت وجود هشدارها نیز چرخش انجام شود، دستور زیر می‌تواند برای کار cron شما مناسب باشد:
0 */4 * * *         /usr/local/bin/rsnapshot sync || [ $? -eq 2 ] && /usr/local/bin/rsnapshot alpha
rsnapshot sync [dest]
هنگامی که sync_first فعال باشد، تمام رفتار همگام‌سازی در طول یک گام sync اضافی رخ می‌دهد (به بالا مراجعه کنید). هنگام استفاده از آرگومان sync، تعیین مقصد نقطهٔ پشتیبان‌گیری به عنوان یک پارامتر اختیاری نیز امکان‌پذیر است. اگر این کار انجام شود، تنها نقاط پشتیبان‌گیری که آن مسیر مقصد را به اشتراک دارند همگام‌سازی خواهند شد.

برای مثال، فرض کنید example.com یک مسیر مقصد مشترک بین یک یا چند نقطهٔ پشتیبان‌گیری شما باشد:
rsnapshot sync example.com
این دستور تنها فایل‌هایی را همگام‌سازی می‌کند که معمولاً در example.com پشتیبان‌گیری می‌شوند. این دستور هیچ نقطهٔ پشتیبان‌گیری دیگری با مقادیر اندکی متفاوت (مانند example.com/etc/) را در بر نخواهد گرفت. برای همگام‌سازی example.com/etc، باید rsnapshot را دوباره با استفاده از example.com/etc به عنوان پارامتر اختیاری اجرا کنید.
rsnapshot configtest
یک بررسی سلامت سریع انجام می‌دهد تا اطمینان حاصل شود همه چیز آمادهٔ اجرا است.
0  تمام عملیات‌ها با موفقیت انجام شدند

1  یک خطای مهلک رخ داد

2  برخی هشدارها رخ داد، اما پشتیبان‌گیری همچنان به پایان رسید

/etc/rsnapshot.conf

rsync(1), ssh(1), logger(1), sshd(1), ssh-keygen(1), perl(1), cp(1), du(1), crontab(1)

از پرچم -t برای مشاهده دستوراتی که قرار بوده اجرا شوند استفاده کنید. این پرچم دستوراتی را که rsnapshot برای اجرا تلاش خواهد کرد نشان می‌دهد. تفاوت‌های جزئی اندکی وجود دارد (برای نمونه، عدم نمایش تلاش برای حذف lockfile به دلیل آنکه در آزمون واقعاً ایجاد نشده است)، اما دید بسیار خوبی از آنچه رخ خواهد داد به شما ارائه می‌دهد.

استفاده از پرچم‌های -v، -V و -D به ترتیب اطلاعات بیشتری را در STDOUT چاپ می‌کند.

اطمینان حاصل کنید که در فایل پیکربندی به جای تب (tab) از فاصله (space) استفاده نکرده باشید.

بسیاری از رفتارهای عجیب دیگر را می‌توان احتمالاً به مجوزهای ساده سیستم فایل و مشکلات احراز هویت ssh نسبت داد.

لطفاً باگ‌ها (و سایر نظرات) را به فهرست پستی rsnapshot-discuss گزارش دهید:

http://lists.sourceforge.net/lists/listinfo/rsnapshot-discuss

اطمینان حاصل کنید که تمام عناصر در فایل /etc/rsnapshot.conf شما با تب‌ها از یکدیگر جدا شده‌اند. برای مشاهده یک فایل نمونه کاربردی، /etc/rsnapshot.conf.default را ببینید.

مطمئن شوید که در انتهای تمام ارجاعات دایرکتوری از یک اسلش پایانی (trailing slash) استفاده می‌کنید. اگر این کار را نکنید، ممکن است دایرکتوری‌های اضافی در اسنپ‌شات‌های شما ایجاد شود. برای اطلاعات بیشتر در مورد نحوه مدیریت اسلش پایانی، صفحه راهنمای rsync(1) را ببینید.

اطمینان حاصل کنید که دایرکتوری اسنپ‌شات دارای دسترسی chmod 700 و در مالکیت کاربر root باشد (با فرض اینکه پشتیبان‌گیری‌ها توسط کاربر root انجام می‌شوند). اگر دایرکتوری اسنپ‌شات برای سایر کاربران قابل خواندن باشد، آن‌ها قادر خواهند بود اسنپ‌شات‌های حاوی فایل‌های خود را دستکاری کنند، که این امر یکپارچگی اسنپ‌شات‌ها را از بین می‌برد.

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

مقدار snapshot_root را در /etc/rsnapshot.conf برابر با /.private/.snapshots قرار دهید

مجوزهای فایل را روی این دایرکتوری‌ها به صورت زیر تنظیم کنید:

drwx------    /.private
drwxr-xr-x    /.private/.snapshots

دایرکتوری /.private/.snapshots را از طریق NFS فقط‌خواندنی، یک اشتراک Samba فقط‌خواندنی و غیره برون‌سپاری (export) کنید.

برای کسب اطلاعات بیشتر درباره در دسترس قرار دادن نسخه‌های پشتیبان برای کاربران بدون امتیاز، به HOWTO مربوط به rsnapshot مراجعه کنید.

برای اینکه ssh بدون نیاز به نظارت کاربر از طریق cron کار کند، احتمالاً مایل خواهید بود از ورود با کلید عمومی استفاده کنید. یک کلید ssh بدون عبارت عبور (passphrase) برای root ایجاد کنید و کلید عمومی را روی هر ماشینی که قصد پشتیبان‌گیری از آن را دارید نصب نمایید. اگر در حال پشتیبان‌گیری از فایل‌های سیستمی ماشین‌های راه دور هستید، این موضوع احتمالاً به معنای ورودهای بدون نظارت کاربر root است. احتمال دیگر، ایجاد یک کاربر دوم روی ماشین صرفاً برای پشتیبان‌گیری است. نام دیگری مانند "rsnapshot" به کاربر اختصاص دهید، اما برای اعطای امتیازات root، مقادیر UID و GID را روی 0 نگه دارید. با این حال، ورودها را یا از طریق پیکربندی ssh یا با استفاده از یک شل جایگزین، محدودتر کنید.

مراقب باشید! اگر کلید خصوصی توسط یک مهاجم به دست آید، او به تمام سیستم‌های مربوطه دسترسی کامل خواهد داشت. اگر در مورد نحوه انجام این کار ابهام دارید، ssh(1)، sshd(1) و ssh-keygen(1) را ببینید.

اسکریپت‌های پشتیبان‌گیری با همان کاربری اجرا می‌شوند که rsnapshot با آن در حال اجرا است. معمولاً این کاربر root است. مطمئن شوید که تمامی اسکریپت‌های پشتیبان‌گیری شما تنها توسط root قابل نوشتن هستند و هیچ برنامه دیگری را که متعلق به root نیست فراخوانی نمی‌کنند. اگر این کار را انجام ندهید، هر کسی که بتواند در اسکریپت پشتیبان‌گیری یا برنامه‌های فراخوانی‌شده توسط آن بنویسد، می‌تواند کنترل کامل ماشین را به دست گیرد. البته، این وضعیتی نیست که مختص به rsnapshot باشد.

به طور پیش‌فرض، انتقال‌های rsync با استفاده از گزینه --numeric-ids انجام می‌شوند. این به این معنی است که نام‌های کاربری و نام‌های گروه‌ها در حین انتقال نادیده گرفته می‌شوند، اما اطلاعات UID/GID دست‌نخورده باقی می‌مانند. فرض بر این است که پشتیبان‌ها در همان محیطی که از آن آمده‌اند بازیابی خواهند شد. بدون این گزینه، بازیابی پشتیبان‌ها برای چندین سرور ناهمگن غیرقابل مدیریت خواهد بود. اگر در حال بایگانی اسنپ‌شات‌ها با GNU tar هستید، ممکن است بخواهید از پارامتر --numeric-owner استفاده کنید. همچنین، یک نسخه از فایل‌های /etc/passwd و /etc/group سیستم بایگانی‌شده را برای نگاشت UID/GID به نام‌ها در دسترس نگه دارید.

اگر نقاط پشتیبان‌گیری را در فایل پیکربندی حذف کنید، فایل‌هایی که قبلاً ذیل آن نقاط بایگانی شده‌اند برای همیشه در دایرکتوری اسنپ‌شات‌ها باقی می‌مانند، مگر اینکه خودتان فایل‌ها را حذف کنید. اگر می‌خواهید فضای دیسک را ذخیره کنید، باید به دایرکتوری <snapshot_root> بروید و فایل‌ها را به صورت دستی از دایرکتوری ".0" در کوچک‌ترین سطح پشتیبان‌گیری حذف کنید.

برای مثال، اگر قبلاً از /home/ با مقصد localhost/ پشتیبان‌گیری می‌کردید و alpha کوچک‌ترین سطح پشتیبان‌گیری شماست، برای آزادسازی مجدد فضای دیسک باید اقدام زیر را انجام دهید:

rm -rf <snapshot_root>/alpha.0/localhost/home/

لطفاً توجه داشته باشید که سایر اسنپ‌شات‌هایی که قبلاً از /home/ گرفته شده‌اند همچنان از آن فضای دیسک استفاده خواهند کرد، اما از آنجا که فایل‌ها از alpha.0/ پاک‌سازی شده‌اند، دیگر به دایرکتوری‌های بعدی کپی نخواهند شد و بنابراین با انجام چرخه‌ها (rotations) در موعد مقرر حذف خواهند شد..SH "نویسندگان (AUTHORS)" Mike Rubel - http://www.mikerubel.org/computers/rsync_snapshots

- نگارش اسکریپت‌های اولیه پوسته که این پروژه بر پایه آن‌ها بنا شده است

Nathan Rosenquist (nathan@rsnapshot.org)

- نویسنده اصلی و نگه‌دارنده اولیه rsnapshot.

David Cantrell (david@cantrell.org.uk)

- نگه‌دارنده پیشین rsnapshot
- نگارش ابزار "rsnapshot-diff"
- بهبود عملکرد use_lazy_deletes به‌گونه‌ای که حذف‌های کُند، نسخه پشتیبان بعدی را در آن سطح پشتیبان‌گیری مختل نکند.

David Keegel <djk@cybersource.com.au>

- نگه‌دارنده پیشین rsnapshot
- رفع شرایط رقابتی در ایجاد فایل قفل و بهبود گزارش‌دهی خطاها
- مجاز ساختن مسیرهای دایرکتوری ssh دوردست که با "~/" و همچنین "/"
- رفع تعدادی از باگ‌ها و اشکالات کوچک دیگر

Benedikt Heine <bebe@bebehei.de>

- نگه‌دارنده پیشین rsnapshot (2015-2017)

Carl Wilhelm Soderstrom (chrome@real-time.com)

- ایجاد فایل .spec برای RPM که در کنار موارد دیگر، امکان ساخت بسته RPM را فراهم ساخت.

Ted Zlatanov (tzz@lifelogs.com)

- افزودن قابلیت one_fs، پشتیبانی از autoconf، راهنمایی‌های ارزشمند و موارد بسیار دیگر.

Ralf van Dooren (r.vdooren@snow.nl)

- افزودن و نگه‌داری مدخل rsnapshot در درخت پورت‌های FreeBSD.

SlapAyoda

- فراهم کردن امکان دسترسی به موزه رایانه‌اش به منظور آزمایش نرم‌افزار.

Carl Boe (boe@demog.berkeley.edu)

- یافتن چندین باگ پنهان و ظریف و ارائه راه‌حل‌هایی برای رفع آن‌ها.

Shane Leibling (shane@cryptio.net)

- رفع یک باگ سازگاری در utils/backup_smb_share.sh

Christoph Wegscheider (christoph.wegscheider@wegi.net)

- افزودن (و نگه‌داری پیشین) بسته دبیان rsnapshot.

Bharat Mediratta (bharat@menalto.com)

- بهبود قوانین استثنا برای جلوگیری از پشتیبان‌گیری از ریشه snapshot (در کنار موارد دیگر).

Peter Palfrader (weasel@debian.org)

- ارتقای گزارش‌دهی خطاها به‌گونه‌ای که شامل گزینه‌های خط فرمان نیز باشد.

Nicolas Kaiser (nikai@nikai.net)

- رفع اشتباهات نگارشی در برنامه و صفحه راهنما

Chris Petersen - (http://www.forevermore.net)

افزودن پشتیبانی از permanent-share برای cwrsync

Robert Jackson (RobertJ@promedicalinc.com)

افزودن قابلیت use_lazy_deletes

Justin Grote (justin@grote.name)

بهبود کد گزارش‌دهی خطای rsync

Anthony Ettinger (apwebdesign@yahoo.com)

نگارش اسکریپت "utils/mysqlbackup.pl"

Sherman Boyd

نگارش اسکریپت "utils/random_file_verify.sh"

William Bear (bear@umn.edu)

نگارش اسکریپت "utils/rsnapreport.pl" (خلاصه‌ای زیبا از آمار rsync)

Eric Anderson (anderson@centtech.com)

بهبودهایی در "utils/rsnapreport.pl".

Alan Batie (alan@batie.org)

رفع باگ‌های include_conf

Dieter Bloms (dieter@bloms.de)

گزینه‌های پیکربندی چندخطی

Henning Moll (newsScott@gmx.de)

stop_on_stale_lockfile

Ben Low (ben@bdlow.net)

پشتیبانی از snapshot در LVM لینوکس کپی‌رایت (C) 2003-2005 Nathan Rosenquist

بخشی از کپی‌رایت (C) 2002-2007 متعلق به Mike Rubel, Carl Wilhelm Soderstrom, Ted Zlatanov, Carl Boe, Shane Liebling, Bharat Mediratta, Peter Palfrader, Nicolas Kaiser, David Cantrell, Chris Petersen, Robert Jackson, Justin Grote, David Keegel, Alan Batie, Dieter Bloms, Henning Moll, Ben Low, Anthony Ettinger

این صفحه راهنما تحت همان مجوز rsnapshot منتشر شده است: مجوز GPL (به زیر مراجعه کنید).

این برنامه یک نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت شرایط مجوز عمومی همگانی گنو (GNU General Public License) همان‌طور که توسط بنیاد نرم‌افزارهای آزاد (Free Software Foundation) منتشر شده است، بازتوزیع کرده و/یا تغییر دهید؛ چه نسخهٔ 2 مجوز و چه (به انتخاب خودتان) هر نسخهٔ بالاتر دیگری.

این برنامه با این امید توزیع شده است که مفید باشد، اما بدون هر گونه ضمانت؛ حتی بدون ضمانت ضمنی قابلیت فروش یا تناسب برای یک هدف خاص. برای جزئیات بیشتر به GNU General Public License مراجعه کنید.

شما باید به همراه این برنامه نسخه‌ای از GNU General Public License دریافت کرده باشید؛ در غیر این صورت، به Free Software Foundation, Inc. بنویسید: 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

2025-02-02 rsnapshot-tools