| rsnapshot(1) | rsnapshot-tools | rsnapshot(1) |
نام (NAME)
rsnapshot - ابزار تهیه تصویر لحظهای از فایلسیستم راه دور
خلاصه دستور (SYNOPSIS)
rsnapshot [-vtxqVD] [-c cfgfile] [command] [args]
توضیحات (DESCRIPTION)
rsnapshot ابزاری برای تهیه تصویر لحظهای (اسنپشات) از فایلسیستم است. این ابزار میتواند برای هر تعداد ماشین، از فایلسیستمهای محلی و دوردست نسخههای پشتیبان افزایشی تهیه کند.
تصویربرداری از فایلسیستمهای محلی توسط rsync(1) مدیریت میشود. اتصالات امن راه دور از طریق rsync بر بستر ssh(1) انجام میپذیرد، در حالی که اتصالات ناشناس rsync صرفاً از یک سرور rsync استفاده میکنند. هر دو نوع انتقال محلی و راه دور به rsync وابسته هستند.
rsnapshot بسیار بیشتر از آنچه تصور کنید در فضای دیسک صرفهجویی میکند. میزان فضای مورد نیاز تقریباً معادل حجم یک نسخه پشتیبان کامل، به همراه یک نسخه از هر فایل دیگری است که تغییر کرده باشد. rsnapshot استفاده گستردهای از پیوندهای سخت (hard links) میکند؛ بنابراین اگر فایلی تغییر نکرده باشد، اسنپشات بعدی صرفاً یک پیوند سخت به همان فایل دقیق خواهد بود.
rsnapshot معمولاً به عنوان کاربر ریشه (root) توسط یک کار cron یا مجموعهای از کارهای cron فراخوانی میشود. با این حال، اجرای آن به عنوان هر کاربر دلخواه دیگری به همراه یک فایل پیکربندی جایگزین نیز امکانپذیر است.
تمام گزینههای مهم در یک فایل پیکربندی مشخص میشوند که به طور پیشفرض در مسیر /etc/rsnapshot.conf قرار دارد. میتوان یک فایل جایگزین را از طریق خط فرمان تعیین کرد. همچنین گزینههای اضافی دیگری وجود دارند که امکان ارسال آنها از طریق خط فرمان فراهم است.
گزینههای خط فرمان به شرح زیر هستند:
-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) شروع شوند. خطوط ادامه هنگام پردازش فایل پیکربندی، تمام فاصلههای ابتدا و انتهای آنها حذف شده و سپس با یک نویسه تب واسط به خط قبلی ضمیمه میشوند.
در اینجا فهرستی از پارامترهای مجاز آورده شده است:
snapshot_root مسیر فایلسیستم محلی برای ذخیره تمام اسنپشاتها
include_conf شامل کردن فایلی دیگر در پیکربندی در این نقطه.
no_create_root اگر روی 1 تنظیم شود، rsnapshot دایرکتوری snapshot_root را ایجاد نخواهد کرد
cmd_rsync مسیر کامل به "rsync" (الزامی)
cmd_ssh مسیر کامل به "ssh" (اختیاری)
cmd_cp مسیر کامل به "cp" (اختیاری، اما باید نسخه GNU باشد)
با 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
cmd_postexec
linux_lvm_cmd_lvcreate
linux_lvm_cmd_lvremove
linux_lvm_cmd_mount
linux_lvm_cmd_umount
retain [name] [number]
یک نام مستعار منسوخشده برای '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 beta 7
retain gamma 4
پوشه beta.0/ از alpha.5/ منتقل خواهد شد، و gamma.0/ از beta.6/ منتقل میشود.
پوشه alpha.0/ مستقیماً از فایلسیستم همگامسازی (rsync) خواهد شد.
link_dest 1
sync_first 1
این قابلیت باعث بازیابی بهتر در حالتی میشود که فرایند rsnapshot در میانه یک عملیات همگامسازی متوقف شود، چرا که مرحله همگامسازی و مراحل چرخش از یکدیگر تفکیک شدهاند. این بدین معنا نیز هست که میتوانید به سادگی «rsnapshot sync» را در خط فرمان اجرا کنید بدون اینکه نگران چرخش اجباری تمام دایرکتوریهای دیگر به سمت بالا باشید. این مزیت به قیمت مصرف فضای دیسک به اندازه یک اسنپشات اضافه تمام میشود. مقدار پیشفرض 0 (خاموش) است.
verbose 2
loglevel 3
logfile /var/log/rsnapshot
include [file-name-pattern]
exclude [file-name-pattern]
include_file /path/to/include/file
exclude_file /path/to/exclude/file
rsync_short_args -a
گزینه «-a» همان حالت آرشیو («archive mode») در rsync است که به آن اعلام میکند تا حد امکان فرادادههای سیستمفایل را برای هر فایل رونوشت کند. این گزینه بهطور خاص شامل اطلاعات مربوط به پیوندهای سخت (hard links) *نمیشود*، چرا که این کار مصرف حافظه rsync را بهشدت افزایش داده و سرعت آن را کم میکند. اگر نیاز به حفظ پیوندهای سخت در پشتیبانهای خود دارید، «H» را به این گزینه اضافه کنید.
rsync_long_args --delete --numeric-ids --relative --delete-excluded
--delete --numeric-ids --relative --delete-excluded این بدان معناست که ساختار دایرکتوری در مقصد هر نقطه پشتیبانگیری، با ساختار موجود در مبدأ نقطه پشتیبانگیری مطابقت خواهد داشت.
استفاده از نقلقولها در rsync_long_args مجاز است، مانند "--rsync-path='sudo /usr/bin/rsync'". میتوانید از نقلقول تکی (') یا جفتی (") استفاده کنید، اما نقلقولهای تودرتو (شامل نقلقولهای تودرتوی ترکیبی) مجاز نیستند. نقلقول مشابه در rsync_long_args به ازای هر نقطه پشتیبانگیری نیز مجاز است.
rsync_numtries 0
rsync_wait_between_tries 0
ssh_args -p 22
du_args -csh
lockfile /var/run/rsnapshot.pid
stop_on_stale_lockfile 0
اگر هنگام شروع rsnapshot یک فایل قفل وجود داشته باشد، برنامه تلاش میکند آن فایل را بخواند و اگر نتواند، با یک خطا متوقف میشود. اگر *بتواند* فایل را بخواند، بررسی میکند که آیا فرآیندی با شناسه PID درجشده در فایل وجود دارد یا خیر. اگر وجود داشته باشد، rsnapshot با یک پیام خطا متوقف میشود. اگر هیچ فرآیندی با آن PID وجود نداشته باشد، فرض میکنیم فایل قفل کهنه (stale) است و آن را نادیده میگیریم، *مگر اینکه* stop_on_stale_lockfile برابر 1 تنظیم شده باشد که در این صورت برنامه متوقف میشود.
مقدار پیشفرض stop_on_stale_lockfile برابر 0 است.
one_fs 1
use_lazy_deletes 1
فعال کردن این گزینه به این معنی است که اسنپشاتها زودتر گرفته میشوند (چرا که حذف در ابتدا انجام نمیشود) و به سایر فرآیندهای rsnapshot اجازه داده میشود در حین انجام حذف نهایی شروع به کار کنند. این مزیت به قیمت مصرف فضای دیسک بیشتر تمام میشود. پیشفرض 0 (خاموش) است.
جزئیات نحوه عملکرد این ویژگی در rsnapshot نسخه 1.3.1 تغییر کرده است. در ابتدا در هر سطح پشتیبانگیری تنها میتوانستید یک دایرکتوری .delete داشته باشید. اکنون میتوانید چندین مورد داشته باشید، بنابراین اگر پشتیبانگیری بعدی شما (برای مثال alpha) در حالی آغاز شود که قبلی هنوز در حال انجام حذف تنبل (lazy delete) است، ممکن است موقتاً دایرکتوریهای _delete اضافی باقی مانده باشند.
linux_lvm_snapshotsize 2G
linux_lvm_snapshotname rsnapshot
linux_lvm_vgpath /dev
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/
backup /usr/local/ localhost/
backup root@example.com:/etc/ example.com/
backup example.com:/etc/ example.com/
backup root@example.com:/usr/local/ example.com/
backup rsync://example.com/pub/ example.com/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/
backup_script /usr/local/bin/backup_database.sh db_backup/
لطفاً توجه داشته باشید که هر آنچه در دایرکتوری مقصد باشد به طور کامل حذف شده و دوباره ساخته میشود. به همین دلیل، 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/
به یاد داشته باشید که تمامی عناصر باید با کلید 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 برخی هشدارها رخ داد، اما پشتیبانگیری همچنان به پایان رسید
فایلها (FILES)
/etc/rsnapshot.conf
همچنین ببینید (SEE ALSO)
rsync(1), ssh(1), logger(1), sshd(1), ssh-keygen(1), perl(1), cp(1), du(1), crontab(1)
خطاها (DIAGNOSTICS)
از پرچم -t برای مشاهده دستوراتی که قرار بوده اجرا شوند استفاده کنید. این پرچم دستوراتی را که rsnapshot برای اجرا تلاش خواهد کرد نشان میدهد. تفاوتهای جزئی اندکی وجود دارد (برای نمونه، عدم نمایش تلاش برای حذف lockfile به دلیل آنکه در آزمون واقعاً ایجاد نشده است)، اما دید بسیار خوبی از آنچه رخ خواهد داد به شما ارائه میدهد.
استفاده از پرچمهای -v، -V و -D به ترتیب اطلاعات بیشتری را در STDOUT چاپ میکند.
اطمینان حاصل کنید که در فایل پیکربندی به جای تب (tab) از فاصله (space) استفاده نکرده باشید.
بسیاری از رفتارهای عجیب دیگر را میتوان احتمالاً به مجوزهای ساده سیستم فایل و مشکلات احراز هویت ssh نسبت داد.
گزارش باگها (BUGS)
لطفاً باگها (و سایر نظرات) را به فهرست پستی rsnapshot-discuss گزارش دهید:
http://lists.sourceforge.net/lists/listinfo/rsnapshot-discuss
نکات (NOTES)
اطمینان حاصل کنید که تمام عناصر در فایل /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)
Robert Jackson (RobertJ@promedicalinc.com)
Justin Grote (justin@grote.name)
Anthony Ettinger (apwebdesign@yahoo.com)
Sherman Boyd
William Bear (bear@umn.edu)
Eric Anderson (anderson@centtech.com)
Alan Batie (alan@batie.org)
Dieter Bloms (dieter@bloms.de)
Henning Moll (newsScott@gmx.de)
Ben Low (ben@bdlow.net)
بخشی از کپیرایت (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 |