borg-create(1) ابزار پشتیبان‌گیری borg borg-create(1)

borg-create - ایجاد یک آرشیو جدید

borg [گزینه‌های عمومی] create [گزینه‌ها] ARCHIVE [PATH...]

این دستور یک آرشیو پشتیبان شامل تمامی فایل‌های یافت‌شده حین پیمایش بازگشتی مسیرهای مشخص‌شده ایجاد می‌کند. مسیرها همان‌طور که مشخص شده‌اند به آرشیو اضافه می‌شوند، به این معنی که اگر مسیرهای نسبی مد نظر باشد، دستور باید از پوشه صحیح اجرا شود.

شگرد نقطه‌اسلش در مسیرها (ریشه‌های بازگشتی) با استفاده از /./ فعال می‌شود: /this/gets/stripped/./this/gets/archived به معنای پردازش آن شیء در سیستم‌فایل است، اما پیشوند سمت چپ ./ از موارد آرشیوشده حذف خواهد شد (در این حالت، this/gets/archived مسیر شیء در آرشیو خواهد بود).

هنگام مشخص کردن '-' به عنوان مسیر، Borg داده‌ها را از ورودی استاندارد می‌خواند و فایلی با نام 'stdin' در آرشیو ایجاد می‌کند. در برخی موارد استفاده از --content-from-command مناسب‌تر است. برای جزئیات به بخش "خواندن از stdin" در زیر مراجعه کنید.

آرشیو برای فایل‌ها یا بخش‌هایی از فایل‌ها که قبلاً در آرشیوهای دیگر ذخیره شده‌اند، تقریباً هیچ فضای دیسکی مصرف نمی‌کند.

نام آرشیو باید یکتا باشد. نباید به '.checkpoint' یا '.checkpoint.N' (که N عدد است) ختم شود، زیرا این نام‌ها برای نقاط بازرسی استفاده شده و رفتار ویژه‌ای با آن‌ها می‌شود.

در نام آرشیو می‌توانید از جانگهدارنده‌های زیر استفاده کنید: {now}، {utcnow}، {fqdn}، {hostname}، {user} و چند مورد دیگر.

سرعت پشتیبان‌گیری با پردازش نکردن مجدد فایل‌هایی که قبلاً در آرشیوهای موجود ذخیره شده‌اند و تغییر نکرده‌اند، افزایش می‌یابد. تشخیص فایل‌های تغییرنیافته با مقایسه فراداده‌های فایل با مقادیر قبلی موجود در حافظه پنهان فایل‌ها انجام می‌شود.

این مقایسه می‌تواند در حالت‌های مختلفی که با --files-cache مشخص می‌شود عمل کند:

  • ctime,size,inode (پیش‌فرض)
  • mtime,size,inode (رفتار پیش‌فرض در نسخه‌های قدیمی‌تر از 1.1.0rc4)
  • ctime,size (نادیده گرفتن شماره inode)
  • mtime,size (نادیده گرفتن شماره inode)
  • rechunk,ctime (همه فایل‌ها تغییریافته تلقی می‌شوند - قطعه‌بندی مجدد، ذخیره ctime در کش)
  • rechunk,mtime (همه فایل‌ها تغییریافته تلقی می‌شوند - قطعه‌بندی مجدد، ذخیره mtime در کش)
  • disabled (غیرفعال‌سازی کش فایل‌ها، همه فایل‌ها تغییریافته تلقی می‌شوند - قطعه‌بندی مجدد)

شماره inode: ایمنی بیشتر، اما اغلب ناپایدار در سیستم‌فایل‌های شبکه‌ای

در حالت عادی، تشخیص تغییر فایل‌ها اطلاعات inode را در نظر می‌گیرد تا دقت تشخیص بهبود یابد. این مورد برای فایل‌های روی SSHFS و سیستم‌های فایل شبکه‌ای مشابه که شماره inode پایداری ارائه نمی‌دهند مشکل‌ساز است؛ چنین فایل‌هایی همیشه تغییریافته تلقی خواهند شد. در این موارد می‌توانید از حالت‌های بدون inode برای بهبود کارایی استفاده کنید، اما قابلیت اطمینان تشخیص ممکن است کاهش یابد.

مقایسه ctime در برابر mtime: ایمنی در برابر سرعت

  • مقدار ctime روشی کاملاً ایمن برای تشخیص تغییرات فایل (فراداده و محتوا) است زیرا نمی‌توان آن را از فضای کاربری تغییر داد. با این حال، حتی تغییر در فراداده نیز ctime را به‌روز می‌کند، بنابراین ممکن است حتی بدون تغییر محتوا قطعه‌بندی/درهم‌سازی غیرضروری انجام شود. برخی سیستم‌های فایل از ctime پشتیبانی نمی‌کنند. برای مثال، دستور chown یا chmod روی یک فایل، ctime آن را تغییر می‌دهد.
  • مقدار mtime معمولاً به درستی کار می‌کند و تنها در صورت تغییر محتوای فایل به‌روز می‌شود. اما mtime می‌تواند به دلخواه از فضای کاربری تنظیم شود، مثلاً برای بازگرداندن mtime به همان مقداری که قبل از تغییر محتوا داشت. این مورد می‌تواند برای اهداف مخرب یا حتی کاربردهای عادی استفاده شود، اما در هر دو حالت حالت‌های کش مبتنی بر mtime می‌توانند مشکل‌ساز باشند.

گزینه --files-changed کنترل می‌کند که Borg چگونه تغییر فایل را در طول پشتیبان‌گیری تشخیص دهد:

  • ctime (پیش‌فرض): استفاده از ctime برای تشخیص تغییرات. این ایمن‌ترین گزینه است.
  • mtime: استفاده از mtime برای تشخیص تغییرات.
  • disabled: غیرفعال‌سازی کامل تشخیص تغییر فایل در طول پشتیبان‌گیری. این گزینه توصیه نمی‌شود مگر اینکه بدانید چه می‌کنید، زیرا در صورت تغییر فایل‌ها در حین فرایند پشتیبان‌گیری می‌تواند منجر به ناسازگاری آرشیو شود.

نقاط اتصال سیستم‌های فایل یا عکس‌های لحظه‌ای (snapshots) باید برای هر بار ایجاد آرشیو جدید یکسان باشد تا عملیات سریع تضمین شود، زیرا حافظه پنهان فایل از نام‌های مطلق فایل استفاده می‌کند. اگر این امر امکان‌پذیر نیست، استفاده از bind mount در یک مکان پایدار را در نظر بگیرید.

گزینه --progress مقادیر داده اصلی، فشرده‌شده و یکتاشده (به ترتیب با حروف O، C و D)، سپس تعداد فایل‌های پردازش‌شده (N) و پس از آن مسیر فعلی در حال پردازش را نمایش می‌دهد.

هنگام استفاده از --stats آماری درباره میزان داده‌های اضافه‌شده دریافت خواهید کرد - اندازه یکتاشده در بخش "This Archive" مهم‌ترین است زیرا نشان می‌دهد مخزن چقدر رشد خواهد کرد. گزینه --quick-stats سریع‌تر است زیرا از آمار سرتاسری مخزن صرف‌نظر می‌کند. گزینه‌های --stats یا --quick-stats با --dry-run ناسازگار هستند زیرا در اجرای آزمایشی فشرده‌سازی و حذف داده‌های تکراری انجام نمی‌شود.

برای راهنمایی بیشتر درباره الگوها، خروجی دستور borg_patterns را ببینید.

برای راهنمایی بیشتر درباره جانگهدارنده‌ها، خروجی دستور borg_placeholders را ببینید.

برای گزینه‌های عمومی دستورات Borg به borg-common(1) مراجعه کنید.

نام آرشیو جهت ایجاد (باید یک نام پوشه معتبر نیز باشد)
مسیرها برای آرشیو کردن

آرشیو پشتیبان ایجاد نشود (اجرای آزمایشی)
چاپ آمار مربوط به آرشیو ایجادشده
چاپ تنها آمار آرشیو بدون محاسبه آمار سرتاسری مخزن
خروجی مشروح از موارد پردازش‌شده (فایل‌ها، پوشه‌ها، ...)
فقط نمایش مواردی با نویسه‌های وضعیت مشخص‌شده (توضیحات را ببینید)
خروجی آمار در قالب JSON (به همراه --stats)
آزمایشی: هماهنگ‌سازی حافظه پنهان انجام نشود. به معنی عدم استفاده از کش فایل‌هاست.
استفاده از NAME در آرشیو برای داده‌های ورودی استاندارد (پیش‌فرض: 'stdin')
تنظیم کاربر USER در آرشیو برای داده‌های ورودی استاندارد (پیش‌فرض: 'root')
تنظیم گروه GROUP در آرشیو برای داده‌های ورودی استاندارد (پیش‌فرض: 'wheel')
تنظیم سطح دسترسی M در آرشیو برای داده‌های stdin (پیش‌فرض: 0660)
تفسیر PATH به عنوان دستور و ذخیره خروجی استاندارد آن
خواندن فهرست مسیرهای جداشده با جداکننده از stdin
تفسیر PATH به عنوان دستور و رفتار با خروجی آن همانند --paths-from-stdin
تنظیم جداکننده مسیر برای --paths-from-stdin و --paths-from-command (پیش‌فرض: خط جدید)

مستثنی کردن مسیرهای منطبق با PATTERN
خواندن الگوهای استثنا از EXCLUDEFILE (هر خط یک الگو)
گنجاندن یا استثنا کردن مسیرهای منطبق با PATTERN
خواندن الگوهای گنجاندن/استثنا از PATTERNFILE
مستثنی کردن پوشه‌های دارای فایل CACHEDIR.TAG
مستثنی کردن پوشه‌هایی که شیئی با نام NAME دارند
در صورت استفاده از --exclude-if-present، خود شیء نشانه‌گذاری‌شده در آرشیو نگهداری شود
مستثنی کردن فایل‌های دارای نشان NODUMP
مستثنی کردن فایل‌های نشانه‌گذاری‌شده به عنوان DATALESS (در macOS)

عدم خروج از سیستم‌فایل جاری و نادیده گرفتن نقاط اتصال سیستم‌فایل‌های دیگر
منسوخ‌شده، از --numeric-ids استفاده کنید
تنها ذخیره شناسه‌های عددی کاربر و گروه
عدم ذخیره زمان دسترسی (atime) در آرشیو
ذخیره زمان دسترسی (atime) در آرشیو
عدم ذخیره ctime در آرشیو
عدم ذخیره زمان ایجاد (birthtime) در آرشیو
منسوخ‌شده، از --noflags استفاده کنید
عدم خواندن و ذخیره پرچم‌های فایل (مانند NODUMP یا IMMUTABLE)
عدم خواندن و ذخیره فهرست‌های کنترل دسترسی (ACL)
عدم خواندن و ذخیره ویژگی‌های توسعه‌یافته (xattrs)
تشخیص حفره‌های فایل خلوت (sparse holes)
تنظیم حالت حافظه پنهان فایل‌ها (پیش‌فرض: ctime,size,inode)
تعیین نحوه تشخیص تغییر فایل در حین پشتیبان‌گیری (پیش‌فرض: ctime)
خواندن فایل‌های دستگاهی بلوکی و نویسه‌ای و FIFOها همانند فایل‌های عادی

افزودن یادداشت متنی به آرشیو
تنظیم دستی زمان ایجاد آرشیو (قالب UTC یا یک فایل مرجع)
نوشتن نقطه بازرسی در هر فواصل ثانیه‌ای مشخص (پیش‌فرض: ۱۸۰۰)
مشخص کردن پارامترهای قطعه‌بندی (الگوریتم، حداقل، حداکثر، بیت‌های ماسک و اندازه پنجره)
انتخاب الگوریتم فشرده‌سازی

# پشتیبان‌گیری از ~/Documents در آرشیوی به نام "my-documents"
$ borg create /path/to/repo::my-documents ~/Documents
# پشتیبان‌گیری به همراه فهرست کردن فایل‌ها در حین پردازش
$ borg create --list /path/to/repo::my-documents ~/Documents
# پشتیبان‌گیری و حذف پیشوند مسیر با شگرد نقطه‌اسلش
$ borg create /path/to/repo::docs /mnt/disk/./docs
# پشتیبان‌گیری و مستثنی کردن فایل‌های pyc
$ borg create /path/to/repo::my-files \
    ~/Documents                       \
    ~/src                             \
    --exclude '*.pyc'
# پشتیبان‌گیری از ریشه سیستم‌فایل و استفاده از فشرده‌سازی zlib
$ borg create -C zlib,6 --one-file-system /path/to/repo::root-{now:%Y-%m-%d} /
# پشتیبان‌گیری به سمت سرور دوردست از طریق SSH
$ borg create ssh://borg@backup.example.org:2222/path/to/repo::{fqdn}-root-{now} /
# پشتیبان‌گیری بدون فشرده‌سازی
$ borg create --compression none /path/to/repo::arch ~
# پشتیبان‌گیری با فشرده‌سازی پیش‌فرض و بسیار سریع (lz4)
$ borg create /path/to/repo::arch ~
# فشرده‌سازی قوی‌تر با lzma
$ borg create --compression lzma,9 /path/to/repo::arch ~
# استفاده از خروجی find برای انتخاب فایل‌ها
$ find ~ -size -1000k | borg create --paths-from-stdin /path/to/repo::small-files-only

الگوهای --exclude با دستور tar متفاوت است؛ برای نمونه باید از --exclude '*/.bundler/gems' برای تطبیق مسیرها استفاده کنید.

گزینه -x یا --one-file-system پوشه‌هایی را که نقاط اتصال سیستم‌فایل‌های دیگر هستند مستثنی می‌کند. این کار با مقایسه شماره دستگاه در خروجی دستور stat انجام می‌شود.

هنگامی که Borg با فایلی مواجه می‌شود که قابل خواندن نیست (مثلاً عدم دسترسی)، پیامی هشدار در لاگ ثبت می‌کند، از آن فایل صرف‌نظر کرده و به کار ادامه می‌دهد و در پایان با کد هشدار خارج می‌شود تا یک فایل مانع کل پشتیبان‌گیری نشود.

در خروجی --list حروف زیر نشان‌دهنده وضعیت فایل هستند:

نویسه‌های کوچک نشان‌دهنده سایر انواع شیء هستند:

می‌توان مسیر را '-' تعیین کرده و مستقیماً داده را پایپ کرد یا از --content-from-command استفاده نمود که تضمین می‌کند در صورت شکست دستور تولیدکننده داده، آرشیو ناقص ساخته نشود.

borg-common(1), borg-delete(1), borg-prune(1), borg-check(1), borg-patterns(1), borg-placeholders(1), borg-compression(1)

The Borg Collective

2026-07-18