bup-config(5) File Formats Manual bup-config(5)

bup-config - گزینه‌های پیکربندی bup

گزینه‌های زیر ممکن است در پیکربندی مربوطه git (git-config(1)) تنظیم شوند. برای نمونه:

git --git-dir="$BUP_DIR" config bup.split.trees true

در صورت تعیین، شناسه‌ای برای مخزن است که باید در میان تمام مخازن موجود یکتا باشد. از آنجا که این شناسه در حال حاضر در مسیرهای سیستم‌فایل استفاده می‌شود، باید تنها شامل نویسه‌های درون این گیومه‌ها باشد: “0123456789_-”، “ABCDEFGHIJKLMNOPQRSTUVWXYZ” و “abcdefghijklmnopqrstuvwxyz”. همچنین دو شناسه مخزن نباید تنها در بزرگی و کوچکی حروف با یکدیگر تفاوت داشته باشند (“something” در برابر “SOMETHING”)، مگر آنکه تمام سیستم‌فایل‌های مربوطه به حروف بزرگ و کوچک حساس باشند.
اکنون bup init هنگام ایجاد مخازن جدید یا بازخوانی مخازن موجودی که فاقد bup.repo.id هستند یک شناسه تصادفی اضافه می‌کند؛ بنابراین می‌توانید با اجرای دوباره bup init یک شناسه به مخازنی که پیش از مرسوم شدن این ویژگی ایجاد شده‌اند اضافه کنید. اگر شناسه اختصاصی خود را تعیین می‌کنید، برای اطمینان از یکتایی، گنجاندن محتوای تصادفی را مد نظر قرار دهید. نکته: همیشه باید شناسه یک مخزن کپی‌شده را تغییر دهید (مثلاً به صورت محلی از طریق cp(1) یا میان میزبان‌ها از طریق rsync(1))، زیرا شناسه‌های تکراری در حداقل حالت می‌توانند مشکلات عملکردی چشمگیری ایجاد کنند.
هنگامی که روی true تنظیم باشد، bup-server(1) هر شیء دریافتی را با ایندکس محلی خود تطبیق می‌دهد و در صورتی که شیء از پیش وجود داشته باشد، سرور به کلاینت پیشنهاد می‌کند که فایل *.idx شامل آن شیء را بارگیری کند تا از ارسال داده‌های تکراری جلوگیری شود.
هنگامی که روی false باشد، سرور قبل از نوشتن اشیاء، ایندکس محلی خود را بررسی نمی‌کند. برای جلوگیری از نوشتن اشیاء تکراری، سرور در ابتدای نشست به کلاینت اعلام می‌کند که تمام فایل‌های *.idx خود را بارگیری کند. این حالت در سرورهایی با سخت‌افزار محدودتر (مانند روترها، دستگاه‌های ذخیره‌ساز تحت شبکه یا NAS کُند و غیره) کاربردی است. اگر مقداری تنظیم نشده باشد و فایل $BUP_DIR/dumb-server-mode وجود داشته باشد، bup به‌گونه‌ای عمل می‌کند که گویی این تنظیم روی false قرار دارد.
روشی که برای تقسیم داده‌ها جهت حذف افزونگی استفاده می‌شود، برای نمونه توسط bup save یا bup split. معمولاً نباید پس از افزودن هرگونه داده به مخزن تغییر داده شود (پایین را ببینید).
این گزینه میزان “ریزدانگی” (granularity) حذف افزونگی را مشخص می‌کند و مقادیر بزرگ‌تر به طور میانگین تکه‌های بزرگ‌تری تولید می‌کنند. مقدار باید رشته‌ای مانند legacy:N باشد که در آن عدد صحیح N باید بزرگ‌تر از 12 و کوچک‌تر از 22 باشد. مقدار پیش‌فرض 13 سازگاری رو به عقب را فراهم می‌کند، اما توصیه می‌شود برای مخازن بزرگ‌تر افزایش یابد. N تعداد بیت‌های ثابت در الگوریتم hash-split را مشخص می‌کند که با یک شدن همه آن‌ها مرز یک تکه تولید می‌شود، و در نتیجه اندازه میانگین اشیاء بدون افزونگی را تعیین می‌کند. این یک مصالحه میان کارایی حذف افزونگی (بیت‌های کمتر به معنی حذف افزونگی بهتر) در برابر مقدار متاداده نگهداری‌شده روی دیسک و میزان مصرف رم در طول عملیات‌های مخزن است (بیت‌های بیشتر یعنی اشیاء کمتر، فضای متاداده کمتر و مصرف رم کمتر). اندازه مورد انتظار برای میانگین یک بلاب (blob) برابر با 2^bits (1 << bits) است. تغییری به اندازه کافی کوچک در یک فایل موجب ذخیره همین مقدار داده جدید (به همراه متاداده درخت) خواهد شد. حداکثر اندازه بلاب چهار برابر این مقدار است. مقدار پیش‌فرض سنتی legacy:13 احتمالاً برای بسیاری از مخازن فعلی کوچک است. همان‌طور که در بالا گفته شد، تنظیم مقدار بالاتر باید حافظه رم مورد نیاز برای بسیاری از عملیات‌ها را به ازای هر افزایش تقریباً به ضریب دو کاهش دهد و در عین حال اندازه مخزن را نیز مقداری افزایش دهد (زیرا پتانسیل حذف افزونگی کمتری را فراهم می‌کند)، اما این اثر به داده‌های ذخیره‌شده در مخزن (اندازه فایل‌ها، نرخ حذف افزونگی و غیره) بستگی دارد. اگر فضا و زمان لازم را دارید، همیشه می‌توانید با مقایسه bup get --rewrite روی مخازن جدید با تنظیمات گوناگون، مقادیر مختلف را برای داده‌های خود بیازمایید. legacy به روش کنونی تقسیم اشاره دارد که دارای یک رفتار خاص ناخواسته اما بی‌ضرر است. برای جزئیات بیشتر به بخش DESIGN در درخت سورس‌کد مراجعه کنید. نکته: تغییر این مقدار در یک مخزن موجود موجب تکثیر و تکرار داده‌ها خواهد شد زیرا مرزهای تقسیم تغییر می‌کنند، بنابراین ذخیره‌سازی‌های بعدی نسبت به داده‌های موجود حذف افزونگی نخواهند شد؛ بلکه صرفاً داده‌ها دوباره ذخیره می‌شوند. نکته: همانند bup.split.trees در زیر (نکته را ببینید)، استفاده از یک ایندکس مشترک برای مخازنی با تنظیمات متفاوت bup.split.files باعث خواهد شد که بهینه‌سازی‌های ایندکس به درستی عمل نکنند، و در نتیجه bup save مجبور خواهد شد فایل‌هایی را که دستخوش تغییر نشده‌اند مجدداً به طور کامل بازخوانی کند که این امر هزینه‌بر است.
هنگامی که این گزینه منطقی روی true تنظیم شده باشد، bup تلاش خواهد کرد هنگام نوشتن در مخزن (برای نمونه در زمان اجرای bup save ...، bup gc .. و غیره) درخت‌ها (دایرکتوری‌ها) را تقسیم کند. این کار می‌تواند در زمان تغییر دایرکتوری‌های بزرگ (مانند Maildirهای بزرگ و فعال)، اندازه داده‌های جدید اضافه‌شده به مخزن را به شکل چشمگیری کاهش دهد. برای کسب اطلاعات بیشتر، بخش “Handling large directories” در فایل DESIGN در سورس bup را ببینید.
نکته: استفاده از یک ایندکس مشترک برای ذخیره‌سازی در مخازنی با مقادیر متفاوت برای این گزینه می‌تواند کارایی را کاهش دهد، زیرا ایندکس شامل هش‌های دایرکتوری‌هایی است که ذخیره شده‌اند و تغییر این گزینه هش‌های دایرکتوری‌های تحت تأثیر تقسیم را تغییر می‌دهد. هش یک درخت دایرکتوری به bup امکان می‌دهد در صورتی که ایندکس نشان دهد دایرکتوری تغییری نکرده و شیء درختی با آن هش در مخزن مقصد وجود دارد، از پیمایش دایرکتوری خودداری کند. از آنجا که مقدار این تنظیم هش درخت‌های قابل تقسیم را تغییر می‌دهد، هش موجود در ایندکس در مخزنی با مقدار متفاوت bup.split.trees نسبت به مخزنی که درخت آخرین بار در آن ذخیره شده یافت نخواهد شد. در نتیجه، هر دایرکتوری (معمولاً بزرگ) که مشمول تقسیم درخت است باید دوباره خوانده شود و هش‌های مربوط به آن مجدداً محاسبه گردند.
سطح پیش‌فرض فشرده‌سازی فایل پک (pack file) در صورتی که core.compression تنظیم نشده باشد. اگر این مورد نیز تنظیم نشده باشد، مقدار پیش‌فرض 1 خواهد بود (برخلاف git که مقدار پیش‌فرض آن -1 است). سطح فشرده‌سازی تعیین‌شده در خط فرمان بر این مقدار اولویت دارد. همچنین ببینید git-config(1).
سطح پیش‌فرض فشرده‌سازی فایل پک. در صورت عدم تعیین، به core.compression رجوع می‌کند. همچنین ببینید git-config(1).
حداکثر اندازه بسته (pack) را هنگام نوشتن فایل‌های پک (مثلاً از طریق bup save) محدود می‌کند (به git-config(1) مراجعه کنید). این تنظیم زمانی کاربرد دارد که در مخزن مقصد (که ممکن است ریموت/از راه دور باشد) تنظیم شود. مقدار پیش‌فرض 1e9 بایت (یعنی حدود 0.93 گیبی‌بایت یا GiB) است و bup ممکن است به اندازه یک تکه (chunk) از این حد فراتر رود. با این حال، تنظیم آن به عنوان مثال روی “2g” (2 گیبی‌بایت) همچنان به این معنی است که تمام اشیاء موجود در پک می‌توانند با یک آفست ۳۱ بیتی آدرس‌دهی شوند و بنابراین نیازی به آفست بزرگ در فایل idx نخواهند داشت.

در صورت تنظیم، مکان پیش‌فرض مخزن است، مگر اینکه با گزینه bup -d در خط فرمان بازنویسی شود.
مکان ترجیحی کش (حافظه نهان).

$XDG_CACHE_HOME/bup/remote

~/.cache/bup/remote

$BUP_DIR/index-cache
مکان‌های کش ایندکس کلاینت، به ترتیب اولویت. داده‌های مخزن راه دور در حین عملیات‌هایی مانند bup save -r در اینجا ذخیره می‌شوند. در حال حاضر bup به ترتیب اولویت به دنبال داده‌های موجود می‌گردد، و در صورتی که موردی برای مخزن مورد نظر پیدا نشود، bup در صورت تنظیم بودن $XDG_CACHE_HOME از $XDG_CACHE_HOME/bup/remote و در غیر این صورت از ~/.cache/bup/remote استفاده خواهد کرد.

git-config(1)

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

Rob Browning rlb@defaultvalue.org.

2026-09-01 Bup 0.34+