bup-split(1) General Commands Manual bup-split(1)

bup-split - ذخیره فایل‌های مجزا در مجموعه‌های پشتیبان bup

bup split [-t] [-c] [-n name] COMMON_OPTIONS

bup split -b COMMON_OPTIONS

bup split –copy COMMON_OPTIONS

bup split –noop [-t|-b] COMMON_OPTIONS

[-r host:path] [-v] [-q] [-d seconds-since-epoch] [--bench] [--max-pack-size=bytes] [-#] [--bwlimit=bytes] [--max-pack-objects=n] [--fanout=count] [--keep-boundaries] [--git-ids | filenames...]

دستور bup split محتویات فایل‌های ارائه‌شده را به هم پیوند می‌دهد (یا اگر نام فایلی داده نشود، از ورودی استاندارد stdin می‌خواند)، محتوا را با استفاده از یک الگوریتم جمع کنترلی غلتان (rolling checksum) به تکه‌های حدود ۸ کیلوبایتی تقسیم می‌کند و تکه‌ها را در یک مخزن bup ذخیره می‌نماید. تکه‌هایی که قبلاً ذخیره شده‌اند مجدداً ذخیره نمی‌شوند (یعنی «حذف داده‌های تکراری» یا deduplicated می‌شوند).

به دلیل نحوه عملکرد جمع کنترلی غلتان، تکه‌ها در برابر تغییرات در یک فایل معین، از جمله افزودن، حذف و تغییر بایت‌ها، بسیار پایدار هستند.

برای مثال، اگر از bup split برای پشتیبان‌گیری از یک دامپ XML از یک پایگاه داده استفاده کنید، و فایل XML از یک اجرا به اجرای بعدی کمی تغییر کند، تقریباً تمام داده‌ها همچنان بدون تغییر و تکراری شناسایی می‌شوند و اندازه هر نسخه پشتیبان پس از نسخه اول معمولاً بسیار کوچک خواهد بود.

روش دیگر، هدایت خروجی برنامه‌های tar(1) یا cpio(1) به bup split است. هنگامی که تک تک فایل‌های موجود در tarball اندکی تغییر می‌کنند یا اضافه و حذف می‌شوند، bup همچنان باقی‌مانده tarball را به طور کارآمد پردازش می‌کند. (البته توجه داشته باشید که معمولاً bup save روش کارآمدتری برای دستیابی به این هدف است).

برای بازیابی داده‌ها، از bup-join(1) استفاده کنید.

این گزینه‌ها رفتار اصلی دستور را انتخاب می‌کنند که -n محتمل‌ترین انتخاب است.

پس از ایجاد مجموعه داده، یک شاخه گیت به نام name ایجاد می‌کند تا بتوان با آن نام به آن دسترسی داشت. اگر name از قبل وجود داشته باشد، مجموعه داده جدید از نوادگان name قدیمی در نظر گرفته می‌شود. (بنابراین، می‌توانید مرتباً مجموعه‌داده‌های جدید با یک نام بسازید و بعداً تاریخچه آن مجموعه داده را ببینید تا روند تغییرات در طول زمان را مشاهده کنید.) داده اصلی همچنین به عنوان یک فایل سطح بالا به نام “data” در VFS در دسترس خواهد بود که از طریق bup fuse، bup ftp و غیره قابل دسترسی است.
شناسه درخت گیت (git tree id) حاصل از مجموعه داده را خروجی می‌دهد.
شناسه کامیت گیت (git commit id) حاصل از مجموعه داده را خروجی می‌دهد.
مجموعه‌ای از شناسه‌های حباب گیت (git blob ids) مربوط به تکه‌های موجود در مجموعه داده را خروجی می‌دهد. ناسازگار با -n، -t، و -c.
داده‌ها را می‌خواند و بر اساس الگوریتم مجموع کنترلی غلتان “bupsplit” آن را به بلوک‌ها تقسیم می‌کند، اما چیزی در مخزن ذخیره نمی‌کند. می‌تواند با -b یا -t ترکیب شود تا blobها یا شناسه‌های درخت گیت را برای مجموعه داده محاسبه (اما ذخیره نکند). این عمدتاً برای بنچمارک و اعتبارسنجی الگوریتم bupsplit مفید است. ناسازگار با -n و -c.
مشابه --noop، اما داده‌ها را در خروجی استاندارد (stdout) نیز می‌نویسد. این می‌تواند برای بنچمارک سرعت read+bupsplit+write برای مقادیر زیادی از داده‌ها مفید باشد. ناسازگار با -n، -t، -c، و -b.

تقسیم و ارسال داده‌ها به مخزن راه دور مشخص‌شده، به‌طور پیش‌فرض از طریق SSH. برای اطلاعات بیشتر بخش REMOTE OPTIONS در bup(1) را ببینید.
تاریخ درج‌شده در کامیت را مشخص می‌کند (ثانیه‌ها از 1970-01-01).
غیرفعال کردن پیام‌های پیشرفت.
افزایش سطح پرگویی و جزئیات (می‌توان بیش از یک بار استفاده کرد).
ورودی استاندارد به‌جای داده خام، فهرستی از شناسه‌های شیء گیت است. دستور bup split محتوای هر شیء نام‌برده گیت را (در صورت وجود در مخزن bup) می‌خواند و آن را تقسیم می‌کند. این ممکن است برای تبدیل مخزن گیت دارای فایل‌های باینری بزرگ برای استفاده از تقسیم درهم‌سازی به سبک bup مفید باشد. این گزینه احتمالاً در ترکیب با --keep-boundaries بیشترین فایده را دارد.
اگر چندین نام فایل در خط فرمان داده شود، آنها معمولاً به هم پیوند داده می‌شوند، گویی محتوا از یک فایل واحد آمده است. یعنی مجموعه blobها/درخت‌های تولیدشده با آنچه در صورت وجود یک فایل ورودی واحد تولید می‌شد یکسان است. اما با استفاده از --keep-boundaries، هر فایل به طور جداگانه تقسیم می‌شود. شما همچنان یک درخت، کامیت یا مجموعه‌ای از blobها دریافت می‌کنید، اما هر blob فقط از یکی از فایل‌ها به دست می‌آید؛ پایان یک فایل ورودی همیشه پایان یک blob است.
چاپ زمان‌بندی‌های بنچمارک در خروجی خطای استاندارد (stderr).
هرگز فایل‌های بسته‌بندی گیت (packfiles) بزرگتر از تعداد بایت داده‌شده ایجاد نکنید. پیش‌فرض ۱ میلیارد بایت است. معمولاً دلیلی برای تغییر آن وجود ندارد.
هرگز فایل‌های بسته‌بندی با بیش از تعداد اشیاء مشخص‌شده نسازید. پیش‌فرض ۲۰۰ هزار شیء است. معمولاً دلیلی برای تغییر آن وجود ندارد.
هنگام تقسیم فایل‌های بسیار بزرگ، سعی کنید میانگین تعداد عناصر در درخت‌ها را روی numobjs نگه دارید.
بیش از bytes/sec بایت در ثانیه به سرور منتقل نکنید. این برای جلوگیری از بلعیدن تمام پهنای باند شبکه شما توسط پشتیبان‌گیری‌ها مناسب است. از پسوندهایی مانند k، M، یا G به ترتیب برای مضارب ۱۰۲۴، ۱۰۲۴*۱۰۲۴، ۱۰۲۴*۱۰۲۴*۱۰۲۴ استفاده کنید.
-#, --compress=#
سطح فشرده‌سازی را روی # تنظیم می‌کند (مقداری از 0 تا 9، که 9 بالاترین و 0 بدون فشرده‌سازی است). پیش‌فرض به مقادیر پیکربندی‌شده pack.compression یا core.compression، یا 1 (فشرده‌سازی سریع و شل) است.

$ tar -cf - /etc | bup split -r myserver: -n mybackup-tar
tar: Removing leading /' from member names
Indexing objects: 100% (196/196), done.
$ bup join -r myserver: mybackup-tar | tar -tf - | wc -l
1961

bup-join(1), bup-index(1), bup-save(1), bup-on(1), ssh_config(5)

بخشی از مجموعه bup(1).

Avery Pennarun apenwarr@gmail.com.

2026-09-01 Bup 0.34+