| bup-config(5) | File Formats Manual | bup-config(5) |
نام (NAME)
bup-config - گزینههای پیکربندی bup
توضیحات (DESCRIPTION)
گزینههای زیر ممکن است در پیکربندی مربوطه git (git-config(1)) تنظیم شوند. برای نمونه:
-
git --git-dir="$BUP_DIR" config bup.split.trees true
گزینهها (OPTIONS)
- bup.repo.id
- در صورت تعیین، شناسهای برای مخزن است که باید در میان تمام مخازن موجود یکتا باشد. از آنجا که این شناسه در حال حاضر در مسیرهای سیستمفایل استفاده میشود، باید تنها شامل نویسههای درون این گیومهها باشد: “0123456789_-”، “ABCDEFGHIJKLMNOPQRSTUVWXYZ” و “abcdefghijklmnopqrstuvwxyz”. همچنین دو شناسه مخزن نباید تنها در بزرگی و کوچکی حروف با یکدیگر تفاوت داشته باشند (“something” در برابر “SOMETHING”)، مگر آنکه تمام سیستمفایلهای مربوطه به حروف بزرگ و کوچک حساس باشند.
اکنون
bup init هنگام
ایجاد
مخازن جدید
یا
بازخوانی
مخازن
موجودی که
فاقد bup.repo.id
هستند یک
شناسه
تصادفی
اضافه
میکند؛
بنابراین
میتوانید
با اجرای
دوباره bup
init یک شناسه
به مخازنی
که پیش از
مرسوم شدن
این ویژگی
ایجاد
شدهاند
اضافه کنید.
اگر شناسه
اختصاصی
خود را
تعیین
میکنید،
برای
اطمینان از
یکتایی،
گنجاندن
محتوای
تصادفی را
مد نظر قرار
دهید. نکته:
همیشه باید
شناسه یک
مخزن
کپیشده را
تغییر دهید
(مثلاً به
صورت محلی
از طریق
cp(1) یا
میان
میزبانها
از طریق
rsync(1))، زیرا
شناسههای
تکراری در
حداقل حالت
میتوانند
مشکلات
عملکردی
چشمگیری
ایجاد
کنند.
- bup.server.deduplicate-writes (پیشفرض true)
- هنگامی که روی true تنظیم باشد، bup-server(1) هر شیء دریافتی را با ایندکس محلی خود تطبیق میدهد و در صورتی که شیء از پیش وجود داشته باشد، سرور به کلاینت پیشنهاد میکند که فایل *.idx شامل آن شیء را بارگیری کند تا از ارسال دادههای تکراری جلوگیری شود.
هنگامی
که روی false
باشد، سرور
قبل از
نوشتن
اشیاء،
ایندکس
محلی خود را
بررسی
نمیکند.
برای
جلوگیری از
نوشتن
اشیاء
تکراری،
سرور در
ابتدای
نشست به
کلاینت
اعلام
میکند که
تمام
فایلهای
*.idx خود را
بارگیری
کند. این
حالت در
سرورهایی
با
سختافزار
محدودتر
(مانند
روترها،
دستگاههای
ذخیرهساز
تحت شبکه یا NAS
کُند و غیره)
کاربردی
است. اگر
مقداری
تنظیم نشده
باشد و فایل
$BUP_DIR/dumb-server-mode
وجود داشته
باشد، bup
بهگونهای
عمل میکند
که گویی این
تنظیم روی
false قرار
دارد.
- bup.split.files (پیشفرض legacy:13)
- روشی که برای تقسیم دادهها جهت حذف افزونگی استفاده میشود، برای نمونه توسط 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
مجبور
خواهد شد
فایلهایی
را که
دستخوش
تغییر
نشدهاند
مجدداً به
طور کامل
بازخوانی
کند که این
امر
هزینهبر
است.
- bup.split.trees
- هنگامی که این گزینه منطقی روی true تنظیم شده باشد، bup تلاش خواهد کرد هنگام نوشتن در مخزن (برای نمونه در زمان اجرای bup save ...، bup gc .. و غیره) درختها (دایرکتوریها) را تقسیم کند. این کار میتواند در زمان تغییر دایرکتوریهای بزرگ (مانند Maildirهای بزرگ و فعال)، اندازه دادههای جدید اضافهشده به مخزن را به شکل چشمگیری کاهش دهد. برای کسب اطلاعات بیشتر، بخش “Handling large directories” در فایل DESIGN در سورس bup را ببینید.
نکته:
استفاده از
یک ایندکس
مشترک برای
ذخیرهسازی
در مخازنی
با مقادیر
متفاوت
برای این
گزینه
میتواند
کارایی را
کاهش دهد،
زیرا
ایندکس
شامل
هشهای
دایرکتوریهایی
است که
ذخیره
شدهاند و
تغییر این
گزینه
هشهای
دایرکتوریهای
تحت تأثیر
تقسیم را
تغییر
میدهد. هش
یک درخت
دایرکتوری
به bup امکان
میدهد در
صورتی که
ایندکس
نشان دهد
دایرکتوری
تغییری
نکرده و شیء
درختی با آن
هش در مخزن
مقصد وجود
دارد، از
پیمایش
دایرکتوری
خودداری
کند. از آنجا
که مقدار
این تنظیم
هش
درختهای
قابل تقسیم
را تغییر
میدهد، هش
موجود در
ایندکس در
مخزنی با
مقدار
متفاوت
bup.split.trees نسبت
به مخزنی که
درخت آخرین
بار در آن
ذخیره شده
یافت
نخواهد شد.
در نتیجه،
هر
دایرکتوری
(معمولاً
بزرگ) که
مشمول
تقسیم درخت
است باید
دوباره
خوانده شود
و هشهای
مربوط به آن
مجدداً
محاسبه
گردند.
- core.compression
- سطح پیشفرض فشردهسازی فایل پک (pack file) در صورتی که core.compression تنظیم نشده باشد. اگر این مورد نیز تنظیم نشده باشد، مقدار پیشفرض 1 خواهد بود (برخلاف git که مقدار پیشفرض آن -1 است). سطح فشردهسازی تعیینشده در خط فرمان بر این مقدار اولویت دارد. همچنین ببینید git-config(1).
- pack.compression
- سطح پیشفرض فشردهسازی فایل پک. در صورت عدم تعیین، به core.compression رجوع میکند. همچنین ببینید git-config(1).
- pack.packSizeLimit
- حداکثر اندازه بسته (pack) را هنگام نوشتن فایلهای پک (مثلاً از طریق bup save) محدود میکند (به git-config(1) مراجعه کنید). این تنظیم زمانی کاربرد دارد که در مخزن مقصد (که ممکن است ریموت/از راه دور باشد) تنظیم شود. مقدار پیشفرض 1e9 بایت (یعنی حدود 0.93 گیبیبایت یا GiB) است و bup ممکن است به اندازه یک تکه (chunk) از این حد فراتر رود. با این حال، تنظیم آن به عنوان مثال روی “2g” (2 گیبیبایت) همچنان به این معنی است که تمام اشیاء موجود در پک میتوانند با یک آفست ۳۱ بیتی آدرسدهی شوند و بنابراین نیازی به آفست بزرگ در فایل idx نخواهند داشت.
محیط (ENVIRONMENT)
- BUP_DIR
- در صورت تنظیم، مکان پیشفرض مخزن است، مگر اینکه با گزینه bup -d در خط فرمان بازنویسی شود.
- XDG_CACHE_HOME/bup
- مکان ترجیحی کش (حافظه نهان).
فایلها (FILES)
$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 استفاده خواهد کرد.
همچنین ببینید (SEE ALSO)
git-config(1)
BUP
بخشی از مجموعه bup(1).
نویسندگان (AUTHORS)
Rob Browning rlb@defaultvalue.org.
| 2026-09-01 | Bup 0.34+ |