.\" Man page generated from reStructuredText .\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .TH "borg-diff" "1" "2026-07-18" "" "borg backup tool" .SH "نام (NAME)" borg-diff \- مقایسه تفاوت‌های دو بایگانی در Borg .SH "خلاصه دستور (SYNOPSIS)" .sp borg [common options] diff [options] REPO::ARCHIVE1 ARCHIVE2 [PATH...] .SH "توضیحات (DESCRIPTION)" .sp این دستور تفاوت‌ها (محتوای پرونده، کاربر/گروه/دسترسی) بین بایگانی‌ها را می‌یابد. .sp یک مکان مخزن و یک نام بایگانی باید برای REPO::ARCHIVE1 مشخص شود. ARCHIVE2 فقط نام یک بایگانی دیگر در همان مخزن است (تعیین مکان مخزن مجاز نیست). .SS "موارد مورد مقایسه (What is compared)" .sp برای هر مورد منطبق در هر دو بایگانی، Borg گزارش می‌دهد: .INDENT 0.0 .IP \(bu 2 تغییرات محتوا: مجموع بایت‌های افزوده/حذف شده در پرونده‌ها. اگر پارامترهای تکه‌ساز (chunker) قابل مقایسه باشند، Borg شناسه‌های تکه‌ها (chunk IDs) را به‌سرعت مقایسه می‌کند؛ در غیر این صورت، محتوا را مقایسه می‌کند. .IP \(bu 2 تغییرات متادیتا: کاربر، گروه، دسترسی و سایر فراداده‌ها به‌صورت درون‌خطی مانند \(dq[old_mode \-> new_mode]\(dq برای تغییرات دسترسی نمایش داده می‌شوند. برای جلوگیری از نمایش تغییرات متادیتا از \fB\-\-content\-only\fP استفاده کنید. .IP \(bu 2 موارد افزوده/حذف شده: به‌صورت \(dqadded SIZE path\(dq یا \(dqremoved SIZE path\(dq چاپ می‌شوند. .UNINDENT .SS "قالب‌های خروجی (Output formats)" .sp خروجی پیش‌فرض (متنی) یک خط برای هر مسیر تغییریافته نمایش می‌دهد، مانند: .INDENT 0.0 .INDENT 3.5 .sp .EX +135 B \-252 B [ \-rw\-r\-\-r\-\- \-> \-rwxr\-xr\-x ] path/to/file .EE .UNINDENT .UNINDENT .sp خروجی خطوط JSON با گزینه (\fB\-\-json\-lines\fP) یک شیء JSON برای هر مسیر تغییریافته چاپ می‌کند، مانند: .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqpath\(dq: \(dqPATH\(dq, \(dqchanges\(dq: [ {\(dqtype\(dq: \(dqmodified\(dq, \(dqadded\(dq: BYTES, \(dqremoved\(dq: BYTES}, {\(dqtype\(dq: \(dqmode\(dq, \(dqold_mode\(dq: \(dq\-rw\-r\-\-r\-\-\(dq, \(dqnew_mode\(dq: \(dq\-rwxr\-xr\-x\(dq}, {\(dqtype\(dq: \(dqadded\(dq, \(dqsize\(dq: SIZE}, {\(dqtype\(dq: \(dqremoved\(dq, \(dqsize\(dq: SIZE} ]} .EE .UNINDENT .UNINDENT .sp تنها تغییرات واقعی در فهرست \(dqchanges\(dq گنجانده می‌شوند. برای مثال، یک مدخل تغییریافته با added=0 و removed=0 نادیده گرفته می‌شود. .SS "مرتب‌سازی (Sorting)" .sp از \fB\-\-sort\-by FIELDS\fP استفاده کنید که در آن FIELDS فهرستی از فیلدها است که با کاما از هم جدا شده‌اند. مرتب‌سازی‌ها به‌صورت پایدار از آخرین به اولین مورد در فهرست داده‌شده اعمال می‌شوند. برای نزولی پیشوند \(dq>\(dq و برای صعودی \(dq<\(dq (یا بدون پیشوند) را اضافه کنید، برای مثال \fB\-\-sort\-by=\(dq>size_added,path\(dq\fP\&. فیلدهای پشتیبانی‌شده عبارتند از: .INDENT 0.0 .IP \(bu 2 path: مسیر مورد .IP \(bu 2 size_added: کل بایت‌های افزوده شده برای محتوای مورد .IP \(bu 2 size_removed: کل بایت‌های حذف شده برای محتوای مورد .IP \(bu 2 size_diff: size_added \- size_removed (تغییر خالص محتوا) .IP \(bu 2 size: اندازه مورد ذخیره‌شده در ARCHIVE2 (۰ برای موارد حذف شده) .IP \(bu 2 user, group, uid, gid, ctime, mtime: در صورت وجود، از وضعیت مورد در ARCHIVE2 گرفته می‌شوند .IP \(bu 2 ctime_diff, mtime_diff: اختلاف برچسب زمان (archive2 \- archive1) .UNINDENT .sp گزینه \fB\-\-sort\fP منسوخ شده است و تنها بر اساس مسیر مرتب‌سازی می‌کند. .SS "ملاحظات عملکرد (Performance considerations)" .sp برای بایگانی‌های ایجاد شده با Borg 1.1 یا جدیدتر، diff به‌طور خودکار تشخیص می‌دهد که آیا بایگانی‌ها با پارامترهای تکه‌ساز (chunker) یکسان ایجاد شده‌اند یا خیر. اگر چنین باشد، تنها شناسه‌های تکه مقایسه می‌شوند که بسیار سریع است. .sp برای بایگانی‌های پیش از Borg 1.1، محتوای تکه‌ها به‌طور پیش‌فرض مقایسه می‌شود. اگر بایگانی‌ها را با پارامترهای تکه‌ساز متفاوتی ایجاد نکرده‌اید، \fB\-\-same\-chunker\-params\fP را پاس دهید. توجه داشته باشید که پارامترهای تکه‌ساز از Borg 0.xx به 1.0 تغییر کرده‌اند. .sp برای راهنمایی بیشتر درباره الگوهای گنجاندن/مستثنی کردن، خروجی دستور \fIborg_patterns\fP را ببینید. .SH "گزینه‌ها (OPTIONS)" .sp برای گزینه‌های مشترک دستورات Borg به \fIborg\-common(1)\fP مراجعه کنید. .SS "آرگومان‌ها (arguments)" .INDENT 0.0 .TP .B REPO::ARCHIVE1 مکان مخزن و نام ARCHIVE1 .TP .B ARCHIVE2 نام ARCHIVE2 (تعیین مکان مخزن مجاز نیست) .TP .B PATH مسیر موارد درون بایگانی‌ها برای مقایسه؛ از الگوها پشتیبانی می‌شود .UNINDENT .SS "گزینه‌ها (options)" .INDENT 0.0 .TP .B \-\-numeric\-owner منسوخ شده است، به‌جای آن از \fB\-\-numeric\-ids\fP استفاده کنید .TP .B \-\-numeric\-ids تنها شناسه‌های عددی کاربر و گروه در نظر گرفته شوند .TP .B \-\-same\-chunker\-params صرف‌نظر کردن از بررسی پارامترهای تکه‌ساز. .TP .B \-\-sort مرتب‌سازی خروجی بر اساس مسیر (منسوخ شده، از \-\-sort\-by=path استفاده کنید). .TP .BI \-\-sort\-by \ FIELDS مرتب‌سازی پیشرفته: تعیین فیلد(ها) برای مرتب‌سازی. یک فهرست جداشده با کاما را می‌پذیرد. برای نزولی با > یا برای صعودی (پیش‌فرض) با < پیشوندگذاری کنید. .TP .B \-\-content\-only تنها مقایسه تفاوت‌ها در محتوا (صرف‌نظر کردن از تفاوت‌های متادیتا) .TP .B \-\-json\-lines قالب‌بندی خروجی به‌صورت خطوط JSON. .UNINDENT .SS "گزینه‌های گنجاندن/استثنا کردن (Include/Exclude options)" .INDENT 0.0 .TP .BI \-e \ PATTERN\fR,\fB \ \-\-exclude \ PATTERN مستثنی کردن مسیرهای منطبق با PATTERN .TP .BI \-\-exclude\-from \ EXCLUDEFILE خواندن الگوهای استثنا از EXCLUDEFILE، یک الگو در هر خط .TP .BI \-\-pattern \ PATTERN گنجاندن/مستثنی کردن مسیرهای منطبق با PATTERN .TP .BI \-\-patterns\-from \ PATTERNFILE خواندن الگوهای گنجاندن/استثنا از PATTERNFILE، یک الگو در هر خط .UNINDENT .SH "مثال‌ها (EXAMPLES)" .INDENT 0.0 .INDENT 3.5 .sp .EX $ borg init \-e=none testrepo $ mkdir testdir $ cd testdir $ echo asdf > file1 $ dd if=/dev/urandom bs=1M count=4 > file2 $ touch file3 $ borg create ../testrepo::archive1 . $ chmod a+x file1 $ echo \(dqsomething\(dq >> file2 $ borg create ../testrepo::archive2 . $ echo \(dqtesting 123\(dq >> file1 $ rm file3 $ touch file4 $ borg create ../testrepo::archive3 . $ cd .. $ borg diff testrepo::archive1 archive2 [\-rw\-r\-\-r\-\- \-> \-rwxr\-xr\-x] file1 +135 B \-252 B file2 $ borg diff testrepo::archive2 archive3 +17 B \-5 B file1 added 0 B file4 removed 0 B file3 $ borg diff testrepo::archive1 archive3 +17 B \-5 B [\-rw\-r\-\-r\-\- \-> \-rwxr\-xr\-x] file1 +135 B \-252 B file2 added 0 B file4 removed 0 B file3 $ borg diff \-\-json\-lines testrepo::archive1 archive3 {\(dqpath\(dq: \(dqfile1\(dq, \(dqchanges\(dq: [{\(dqtype\(dq: \(dqmodified\(dq, \(dqadded\(dq: 17, \(dqremoved\(dq: 5}, {\(dqtype\(dq: \(dqmode\(dq, \(dqold_mode\(dq: \(dq\-rw\-r\-\-r\-\-\(dq, \(dqnew_mode\(dq: \(dq\-rwxr\-xr\-x\(dq}]} {\(dqpath\(dq: \(dqfile2\(dq, \(dqchanges\(dq: [{\(dqtype\(dq: \(dqmodified\(dq, \(dqadded\(dq: 135, \(dqremoved\(dq: 252}]} {\(dqpath\(dq: \(dqfile4\(dq, \(dqchanges\(dq: [{\(dqtype\(dq: \(dqadded\(dq, \(dqsize\(dq: 0}]} {\(dqpath\(dq: \(dqfile3\(dq, \(dqchanges\(dq: [{\(dqtype\(dq: \(dqremoved\(dq, \(dqsize\(dq: 0}]} # استفاده از \-\-sort\-by با یک فهرست جداشده با کاما؛ مرتب‌سازی‌ها به‌صورت پایدار از آخر به اول اعمال می‌شوند. # در اینجا: اولویت اصلی با تغییر خالص اندازه به‌صورت نزولی، برای موارد برابر بر اساس مسیر به‌صورت صعودی $ borg diff \-\-sort\-by=\(dq>size_diff,path\(dq testrepo::archive1 archive3 +17 B \-5 B [\-rw\-r\-\-r\-\- \-> \-rwxr\-xr\-x] file1 removed 0 B file3 added 0 B file4 +135 B \-252 B file2 .EE .UNINDENT .UNINDENT .SH "همچنین ببینید (SEE ALSO)" .sp \fIborg\-common(1)\fP .SH "نویسندگان (AUTHORS)" The Borg Collective .\" End of generated man page.