.\" Automatically generated by Pandoc 3.10.2 .\" .TH "bup\-restore" "1" "2026\-09\-01" "Bup 0.34+" .SH "نام (NAME)" bup\-restore \- بازیابی فایل‌ها و دایرکتوری‌ها از مخزن پشتیبان bup .SH "خلاصه دستور (SYNOPSIS)" bup restore [\-r \f[I]host\f[R]:[\f[I]path\f[R]]] [\-\-outdir=\f[I]outdir\f[R]] [\-\-exclude\-rx \f[I]pattern\f[R]] [\-\-exclude\-rx\-from \f[I]filename\f[R]] [\-v] [\-q] .SH "توضیحات (DESCRIPTION)" دستور \f[CR]bup restore\f[R] فایل‌ها را از یک مجموعه پشتیبان (ایجادشده با \f[CR]bup\-save\f[R](1)) به سیستم‌فایل محلی بازیابی و استخراج می‌کند. .PP مسیرهای مشخص‌شده (\f[I]paths\f[R]) به صورت زیر هستند: /\f[I]branch\f[R]/\f[I]revision\f[R]/\f[I]some/where\f[R]. اجزای این مسیر به شرح زیر است: .TP branch نام مجموعه پشتیبان برای بازیابی از آن؛ این مورد با گزینه \f[CR]\-\-name\f[R] (\f[CR]\-n\f[R]) در دستور \f[CR]bup save\f[R] مطابقت دارد. .TP revision نسخه یا بازبینی (revision) از مجموعه پشتیبان برای بازیابی. نسخه \f[I]latest\f[R] همواره تازه‌ترین پشتیبان روی شاخه داده‌شده است. می‌توانید سایر نسخه‌ها را با استفاده از \f[CR]bup ls /branch\f[R] بیابید. .TP some/where مسیر قبلاً ذخیره‌شده (پس از هرگونه حذف یا پیوند مسیر مانند stripping/grafting) که قصد بازیابی آن را دارید. برای نمونه، \f[CR]etc/passwd\f[R]. .PP اگر \f[I]some/where\f[R] نام یک دایرکتوری باشد، دستور \f[CR]bup restore\f[R] آن دایرکتوری را بازیابی کرده و سپس محتویات آن را به صورت بازگشتی بازیابی می‌کند. .PP اگر \f[I]some/where\f[R] نام یک دایرکتوری باشد و به یک اسلش ختم شود (مانند path/to/dir/)، دستور \f[CR]bup restore\f[R] فرزندان و محتویات آن دایرکتوری را مستقیماً در دایرکتوری جاری (یا در \f[CR]\-\-outdir\f[R]) بازیابی می‌کند. اگر \f[I]some/where\f[R] به اسلش ختم نشود، فرزندان آن در یک زیردایرکتوری از دایرکتوری جاری بازیابی خواهند شد. .PP اگر \f[I]some/where\f[R] نام یک دایرکتوری باشد و به `/.` ختم شود (مانند path/to/dir/.)، دستور \f[CR]bup restore\f[R] دقیقاً همان کاری را انجام می‌دهد که برای path/to/dir انجام می‌داد، و سپس متاداده (metadata) \f[I]dir\f[R] را در دایرکتوری جاری (یا \f[CR]\-\-outdir\f[R]) بازیابی می‌کند. بخش «مثال‌ها» را ببینید. .PP به عنوان یک حالت خاص، اگر \f[I]some/where\f[R] به پیوند نمادین \(lqlatest\(rq اشاره کند، مانند \f[CR]bup restore /foo/latest\f[R]، در این صورت bup دقیقاً به گونه‌ای عمل می‌کند که گویی ذخیره‌ای که \(lqlatest\(rq به آن اشاره دارد مشخص شده است، و به جای خود پیوند نمادین \(lqlatest\(rq، آن نسخه ذخیره‌شده را بازیابی می‌کند. .PP هر زمان که متاداده مسیر در دسترس باشد، \f[CR]bup restore\f[R] تلاش می‌کند آن را بازیابی کند. هنگام بازیابی مالکیت، bup رفتاری مشابه tar/rsync را پیاده‌سازی می‌کند. در صورت در دسترس بودن، معمولاً نام کاربری و گروه را به uid و gid ترجیح می‌دهد، اما تلاش برای بازیابی کاربر را فقط در صورتی انجام می‌دهد که با دسترسی ریشه (root) اجرا شده باشد، و هر زمان متاداده حاوی نام کاربر یا گروهی باشد که در سیستم فعلی وجود ندارد، به uid یا gid عددی بازمی‌گردد. استفاده از نام‌های کاربر و گروه را می‌توان از طریق گزینه \f[CR]\-\-numeric\-ids\f[R] غیرفعال کرد (که برای نمونه هنگام بازیابی یک chroot می‌تواند مهم باشد)، و به عنوان یک حالت خاص، uid یا gid با مقدار 0 هرگز بر اساس نام بازنگاشت نخواهد شد. علاوه بر این، برخی سیستم‌ها اجازه تنظیم uid/gid که با یک کاربر/گروه شناخته‌شده مطابقت ندارد را نمی‌دهند. در این سیستم‌ها، bup برای هر مسیر مربوطه خطایی را در گزارش ثبت می‌کند. هر مسیر «ساختگی» (synthetic)، برای نمونه یک دایرکتوری ریشه که تحت تأثیر \f[CR]bup save \-\-graft\f[R] قرار گرفته است، مجوزهای خواندن/اجرای گروه و دیگران (world) را به گونه‌ای خواهد داشت که گویی با umask برابر با 022 ایجاد شده است. هر مسیری که متاداده آن از دست رفته باشد (شاید از طریق \f[CR]bup get \-\-repair\f[R] یا نسخه‌های قبلی bup؛ طبقه‌بندی در سند DESIGN را ببینید) مجوزهای محدودکننده‌ای خواهد داشت، گویی که با umask برابر با 077 ایجاد شده است. .PP گزینه‌های \f[CR]\-\-map\-user\f[R]، \f[CR]\-\-map\-group\f[R]، \f[CR]\-\-map\-uid\f[R] و \f[CR]\-\-map\-gid\f[R] می‌توانند برای تنظیم اطلاعات مالکیت موجود قبل از اعمال هر یک از قوانین بالا استفاده شوند، اما توجه داشته باشید که به دلیل این قوانین، \f[CR]\-\-map\-uid\f[R] و \f[CR]\-\-map\-gid\f[R] هرگاه یک مسیر دارای کاربر یا گروه معتبر باشد هیچ تأثیری نخواهند داشت. در این موارد، یا باید \f[CR]\-\-numeric\-ids\f[R] مشخص شود، یا کاربر یا گروه باید توسط یک مشخصه مناسب \f[CR]\-\-map\-user foo=\f[R] یا \f[CR]\-\-map\-group foo=\f[R] پاک شود. .PP پیوندهای سخت (Hardlinks) نیز در صورت امکان بازیابی خواهند شد، اما دست‌کم در حال حاضر، هیچ پیوندی به اهداف خارج از درخت بازیابی ایجاد نخواهد شد، و اگر درخت بازیابی ساختار متفاوتی از سیستم‌های فایل را نسبت به درخت ذخیره پوشش دهد، ممکن است برخی از مجموعه‌های پیوند سخت به طور کامل بازیابی نشوند. .PP همچنین توجه داشته باشید که تغییر مجموعه‌های پیوند سخت روی دیسک بین نمایه‌سازی (index) و ذخیره‌سازی (save) ممکن است نتایج غیرمنتظره‌ای ایجاد کند. با پیاده‌سازی فعلی، bup تلاش خواهد کرد تا هر مجموعه پیوند سخت مشخص را همان‌گونه که در زمان نمایه‌سازی وجود داشته است بازسازی کند، حتی اگر همه فایل‌های موجود در آن مجموعه در زمان ذخیره‌سازی دیگر پیوند سخت نداشته باشند (اما از سایر جهات یکسان باشند). .PP توجه داشته باشید که در طول فرآیند بازیابی، دسترسی به داده‌ها در داخل درخت بازیابی ممکن است بازتر و با مجوزهای بیشتری نسبت به منبع اصلی باشد. مگر اینکه امنیت اهمیتی نداشته باشد، باید در یک زیردایرکتوری خصوصی بازیابی را انجام دهید و سپس درخت حاصل را به مکان نهایی آن منتقل کنید. برای مشاهده نمونه عملی، بخش «مثال‌ها» را ببینید. .SH "گزینه‌ها (OPTIONS)" .TP \-r, \-\-remote=[\f[I]user\f[R]\(at]\f[I]host\f[R]:[\f[I]path\f[R]], \-\-remote=URL بازیابی از مخزن دوردست مشخص‌شده، به طور پیش‌فرض از طریق SSH. برای اطلاعات بیشتر به بخش REMOTE OPTIONS در \f[CR]bup\f[R](1) مراجعه کنید. .TP \-C, \-\-outdir=\f[I]outdir\f[R] ایجاد و تغییر مسیر به دایرکتوری \f[I]outdir\f[R] پیش از استخراج فایل‌ها. .TP \-\-numeric\-ids بازیابی شناسه‌های عددی (کاربر، گروه و غیره) به جای نام‌ها. .TP \-\-exclude\-rx=\f[I]pattern\f[R] مستثنی کردن هر مسیری که با \f[I]pattern\f[R] مطابقت داشته باشد، که باید یک عبارت باقاعده (Regular Expression) پایتون باشد (http://docs.python.org/library/re.html). الگو بدون مهاربندی (anchoring) با مسیر کامل که ریشه آن در بالای درخت بازیابی است مقایسه می‌شود، بنابراین \(lqx/y\(rq با \(lqox/yard\(rq یا \(lqbox/yards\(rq مطابقت خواهد داشت. برای مستثنی کردن محتویات /tmp، بدون مستثنی کردن خود دایرکتوری، از \(lq\(ha/tmp/.\(rq استفاده کنید. (می‌تواند بیش از یک بار مشخص شود) .RS توجه داشته باشید که ریشه درخت بازیابی (که با `\(ha/` مطابقت دارد) بالای درخت بایگانی در حال بازیابی است و هیچ ارتباطی با مقصد در سیستم‌فایل ندارد. با فرض \(lqrestore \&... /foo/latest/etc/\(rq، الگوی `\(ha/passwd$` در صورتی مطابقت خواهد داشت که فایلی به نام passwd به عنوان `/foo/latest/etc/passwd` ذخیره شده باشد. مثال‌ها: .IP \(bu 2 \f[CR]/foo$\f[R] \- مستثنی کردن هر فایلی به نام foo .IP \(bu 2 \f[CR]/foo/$\f[R] \- مستثنی کردن هر دایرکتوری به نام foo .IP \(bu 2 \f[CR]/foo/.\f[R] \- مستثنی کردن محتوای هر دایرکتوری به نام foo .IP \(bu 2 \f[CR]\(ha/tmp/.\f[R] \- مستثنی کردن محتوای دایرکتوری tmp در سطح ریشه .RE .TP \-\-exclude\-rx\-from=\f[I]filename\f[R] خواندن الگوهای \(enexclude\-rx از \f[I]filename\f[R]، یک الگو در هر خط (می‌تواند تکرار شود). خطوط کاملاً خالی نادیده گرفته می‌شوند. .TP \-\-sparse نوشتن خروجی داده‌ها به صورت تنک (sparse) در صورت منطقی بودن. در حال حاضر، منطقی بودن صرفاً به معنای «حداقل هر زمان که ۵۱۲ صفر متوالی یا بیشتر وجود داشته باشد» است. .TP \-\-map\-user \f[I]old\f[R]=\f[I]new\f[R] برای هر مسیر، نام کاربری \f[I]old\f[R] (ذخیره‌شده) را به عنوان \f[I]new\f[R] بازیابی می‌کند. مشخص کردن \(lq\(rq برای \f[I]new\f[R] کاربر را پاک می‌کند. برای نمونه \(lq\(enmap\-user foo=\(rq اجازه می‌دهد تا uid برای هر مسیری که در اصل کاربری به نام \(lqfoo\(rq داشته است اعمال شود، مگر اینکه با یک مشخصه بعدی \(lq\(enmap\-user foo=\&...\(rq نقض و لغو گردد. برای اطلاعات بیشتر بخش «توضیحات» در بالا را ببینید. .TP \-\-map\-group \f[I]old\f[R]=\f[I]new\f[R] برای هر مسیر، نام گروه \f[I]old\f[R] (ذخیره‌شده) را به عنوان \f[I]new\f[R] بازیابی می‌کند. مشخص کردن \(lq\(rq برای \f[I]new\f[R] گروه را پاک می‌کند. برای نمونه \(lq\(enmap\-group foo=\(rq اجازه می‌دهد تا gid برای هر مسیری که در اصل دارای گروه \(lqfoo\(rq بوده است اعمال شود، مگر اینکه با یک مشخصه بعدی \(lq\(enmap\-group foo=\&...\(rq لغو گردد. برای اطلاعات بیشتر بخش «توضیحات» در بالا را ببینید. .TP \-\-map\-uid \f[I]old\f[R]=\f[I]new\f[R] برای هر مسیر، شناسه uid قبلی (\f[I]old\f[R]) را به عنوان \f[I]new\f[R] بازیابی می‌کند، مگر اینکه با گزینه بعدی \(lq\(enmap\-uid \f[I]old\f[R]=\&...\(rq نقض و لغو گردد. توجه داشته باشید که uid تنها برای مسیرهای فاقد کاربر معتبر خواهد بود. برای اطلاعات بیشتر بخش «توضیحات» در بالا را ببینید. .TP \-\-map\-gid \f[I]old\f[R]=\f[I]new\f[R] برای هر مسیر، شناسه gid قبلی (\f[I]old\f[R]) را به عنوان \f[I]new\f[R] بازیابی می‌کند، مگر اینکه با گزینه بعدی \(lq\(enmap\-gid \f[I]old\f[R]=\&...\(rq لغو گردد. توجه داشته باشید که gid تنها برای مسیرهای فاقد کاربر معتبر خواهد بود. برای اطلاعات بیشتر بخش «توضیحات» در بالا را ببینید. .TP \-v, \-\-verbose افزایش خروجی وقایع و گزارش‌ها. با یک بار مشخص شدن، هر دایرکتوری را هنگام بازیابی چاپ می‌کند؛ با دو بار مشخص شدن، هر فایل و دایرکتوری را چاپ می‌کند. .TP \-q, \-\-quiet سرکوب خروجی، از جمله نوار پیشرفت. به طور معمول، اگر stderr یک tty باشد، یک نشانگر پیشرفت تعداد کل فایل‌های بازیابی‌شده را نمایش می‌دهد. .SH "مثال‌ها (EXAMPLES)" ایجاد یک مجموعه پشتیبان آزمایشی ساده: .IP .EX $ bup index \-u /etc $ bup save \-n mybackup /etc/passwd /etc/profile .EE .PP بازیابی تنها یک فایل: .IP .EX $ bup restore /mybackup/latest/etc/passwd Restoring: 1, done. $ ls \-l passwd \-rw\-r\-\-r\-\- 1 apenwarr apenwarr 1478 2010\-09\-08 03:06 passwd .EE .PP بازیابی etc در پوشه test (بدون اسلش پایانی): .IP .EX $ bup restore \-C test /mybackup/latest/etc Restoring: 3, done. $ find test test test/etc test/etc/passwd test/etc/profile .EE .PP بازیابی محتویات etc در پوشه test (با اسلش پایانی): .IP .EX $ bup restore \-C test /mybackup/latest/etc/ Restoring: 2, done. $ find test test test/passwd test/profile .EE .PP بازیابی محتویات etc و متاداده etc در پوشه test (با پسوند \(lq/.\(rq پایانی): .IP .EX $ bup restore \-C test /mybackup/latest/etc/. Restoring: 2, done. # At this point test and etc\(aqs metadata will match. $ find test test test/passwd test/profile .EE .PP بازیابی یک درخت بدون خطر دسترسی غیرمجاز: .IP .EX # mkdir \-\-mode 0700 restore\-tmp # bup restore \-C restore\-tmp /somebackup/latest/foo Restoring: 42, done. # mv restore\-tmp/foo somewhere # rmdir restore\-tmp .EE .PP بازیابی یک درخت، همراه با نگاشت مجدد کاربر و گروه قدیمی به کاربر و گروه جدید: .IP .EX # ls \-l /original/y \-rw\-r\-\-\-\-\- 1 foo baz 3610 Nov 4 11:31 y # bup restore \-C dest \-\-map\-user foo=bar \-\-map\-group baz=bax /x/latest/y Restoring: 42, done. # ls \-l dest/y \-rw\-r\-\-\-\-\- 1 bar bax 3610 Nov 4 11:31 y .EE .PP بازیابی یک درخت، با نگاشت مجدد یک uid قدیمی به uid جدید. توجه داشته باشید که کاربر قدیمی باید پاک شود تا bup آن را بر uid ترجیح ندهد: .IP .EX # ls \-l /original/y \-rw\-r\-\-\-\-\- 1 foo baz 3610 Nov 4 11:31 y # ls \-ln /original/y \-rw\-r\-\-\-\-\- 1 1000 1007 3610 Nov 4 11:31 y # bup restore \-C dest \-\-map\-user foo= \-\-map\-uid 1000=1042 /x/latest/y Restoring: 97, done. # ls \-ln dest/y \-rw\-r\-\-\-\-\- 1 1042 1007 3610 Nov 4 11:31 y .EE .PP روشی جایگزین برای انجام همین کار با نادیده گرفتن سراسری کاربران/گروه‌ها با استفاده از \f[CR]\-\-numeric\-ids\f[R]: .IP .EX # bup restore \-C dest \-\-numeric\-ids \-\-map\-uid 1000=1042 /x/latest/y Restoring: 97, done. .EE .SH "همچنین ببینید (SEE ALSO)" \f[CR]bup\-save\f[R](1), \f[CR]bup\-ftp\f[R](1), \f[CR]bup\-fuse\f[R](1), \f[CR]bup\-web\f[R](1) .SH "درباره BUP (BUP)" بخشی از مجموعه \f[CR]bup\f[R](1). .SH "نویسندگان (AUTHORS)" Avery Pennarun \c .MT apenwarr@gmail.com .ME \c.