.TH git-annex-sim 1 .SH "نام (NAME)" git-annex-sim \- شبیه‌سازی جابجایی داده‌ها میان خوشه‌های مخازن .SH "خلاصه دستور (SYNOPSIS)" .B git annex sim start [\fImy.sim\fR] .PP .B git annex sim \fIcommand\fR .PP .B git annex sim show .PP .B git annex sim end .PP .B git annex sim run \fImy.sim\fR .SH "توضیحات (DESCRIPTION)" این دستور رفتار git-annex را در شبکه‌ای از مخازن شبیه‌سازی می‌کند، و مشخص می‌سازد که با توجه به پیکربندی محتوای ترجیحی (preferred content)، تعداد رونوشت‌ها (numcopies)، سطح اعتماد (trust level) و غیره، کدام فایل‌ها به کدام مخازن خواهند رسید. .PP ورودی شبیه‌سازی یک فایل sim یا دستورات sim است که پس از شروع شبیه‌سازی اجرا می‌شوند. این دستورات به شکل .B git annex sim command هستند، به‌طوری‌که دستور دقیقاً با همان قالبی که در فایل sim به کار می‌رود نوشته می‌شود (فهرست دستورات sim را در ادامه مشاهده کنید). برای نمونه، .B git annex sim step 1 شبیه‌سازی را یک گام به جلو می‌برد. .PP شبیه‌سازی حین اجرا گزارش وقایعی (log) را نگه‌داری می‌کند که حاوی تمامی ورودی‌های شبیه‌سازی، اقدامات انجام‌شده و همچنین نتایج شبیه‌سازی است. از دستور .B git-annex sim show برای نمایش این گزارش وقایع استفاده کنید. این کار امکان اجرای مجدد همان شبیه‌سازی در آینده و نیز تحلیل نتایج شبیه‌سازی را فراهم می‌آورد. .PP برای پایان دادن به شبیه‌سازی و پاک‌سازی، از دستور .B git annex sim end استفاده کنید. .PP جهت سهولت کار، برای اجرای یک شبیه‌سازی از روی یک فایل و سپس خاتمه دادن به آن، از دستور .B git-annex sim run استفاده کنید. اگر مشکلی در اجرای شبیه‌سازی رخ دهد، پیش از متوقف شدن به نمایش درخواهد آمد. .PP توجه داشته باشید که قطع کردن این دستور در حین اجرا ممکن است شبیه‌سازی را در وضعیتی ناسازگار باقی بگذارد. همچنین اجرای هم‌زمان چندین دستور sim نیز ممکن است همین وضعیت را ایجاد کند، اگرچه اجرای دستور .B git annex sim visit هم‌زمان با اجرای دیگر دستورات sim کاملاً ایمن است. .SH "فایل SIM (THE SIM FILE)" این فایل متنی برای پیکربندی شبیه‌سازی و همچنین گزارش نتایج آن به کار می‌رود. هر خط از این فایل به شکل یک دستور و به دنبال آن پارامترهای آن دستور است. خطوطی که با «#» یا «\-\-» آغاز می‌شوند، توضیحات (کامنت) به شمار می‌روند. .PP در اینجا نمونه‌ای از یک فایل sim آمده است: .PP .EX # افزودن مخازن به شبیه‌سازی و اتصال آن‌ها به‌عنوان ریموت init foo init bar connect foo <\-> bar # افزودن یک ریموت ویژه initremote baz connect foo \-> baz <\- bar # پیکربندی مخازن numcopies 2 group foo client wanted foo standard group bar archive wanted bar standard wanted baz include=*.mp3 # افزودن فایل‌های ضمیمه‌شده در درخت کاری به شبیه‌سازی، # گویی به‌تازگی به مخزن foo اضافه شده‌اند addtree foo include=*.mp3 addtree foo include=*.jpg addtree foo include=bigfiles/ # افزودن فایل‌های ضمیمه‌شده شبیه‌سازی‌شده add bigfile 100gb bar add hugefile 10tb foo # اجرای شبیه‌سازی به مدت ۱۰ گام به جلو step 10 # حذف ریموت bar از foo و بررسی این‌که آیا فایل جدید اضافه‌شده به foo به bar می‌رسد disconnect foo \-> bar add foo.mp3 2mb foo step 5 .EE .SH "دستورات SIM (SIM COMMANDS)" این مجموعه کاملی از دستوراتی است که می‌توانند هم در فایل sim استفاده شوند و هم در حین اجرای شبیه‌سازی به .B git annex sim داده شوند. .IP "\fBinit name\fP" یک مخزن شبیه‌سازی‌شده را مقداردهی اولیه کرده و نامی به آن اختصاص می‌دهد که در شبیه‌سازی استفاده خواهد شد. .IP "\fBinitremote name\fP" یک ریموت ویژه شبیه‌سازی‌شده را مقداردهی اولیه می‌کند. .IP "\fBuse name here|remote|description|uuid\fP" استفاده از یک مخزن موجود در شبیه‌سازی، همراه با پیکربندی‌های فعلی آن (سطح اعتماد، گروه‌ها، محتوای ترجیحی و الزامی، حداکثر اندازه (maxsize)، و پیکربندی groupwanted گروه‌های آن). .IP به این مخزن برای مقاصد شبیه‌سازی یک نام اختصاص می‌یابد. مخزن مورد استفاده را می‌توان با نام ریموت، uuid و غیره مشخص کرد؛ به عنوان مثال: .B "use myrepo here" .IP "\fBvisit repo [command]\fP" دستور شل مشخص‌شده را در داخل مخزن شبیه‌سازی‌شده اجرا می‌کند و منتظر خروج آن می‌ماند. .IP هنگامی که هیچ دستور شلی مشخص نشده باشد، یک شل تعاملی اجرا می‌شود. .IP این دستور در یک مخزن git اجرا می‌شود که شاخه git-annex آن حاوی وضعیت آن مخزن شبیه‌سازی‌شده است. این امر امکان اجرای هر یک از دستورات git-annex مانند .B git-annex whereis را جهت بررسی وضعیت شبیه‌سازی فراهم می‌کند. باید از اعمال هرگونه تغییر در وضعیت git-annex خودداری نمایید. .IP "\fBconnect repo [<\-|\->|<\->] repo [...]\fP" افزودن یک اتصال میان دو یا چند مخزن. فلش نشان‌دهنده جهت اتصال است و می‌تواند دوطرفه نیز باشد. به عنوان مثال، .B "connect foo \-> bar" باعث می‌شود bar یک ریموت برای foo باشد، در حالی که .B "connect foo <\-> bar" هر کدام را به ریموت دیگری تبدیل می‌کند. زنجیره‌ای از اتصالات می‌تواند به چندین مخزن گسترش یابد، مانند: .B "connect foo \-> bar \-> baz \-> foo" .IP "\fBdisconnect repo [<\-|\->|<\->] repo [...]\fP" اتصالات میان مخازن را حذف می‌کند. .IP برای نمونه، .B "disconnect foo \-> bar" باعث می‌شود foo دیگر bar را به عنوان ریموت در نظر نگیرد. .IP "\fBaddtree repo expression\fP" فایل‌های ضمیمه‌شده (annexed) را از مخزن git به شبیه‌سازی اضافه کرده و آن‌ها را در مخزن مشخص‌شده حاضر (موجود) می‌سازد. .IP عبارت (expression) یک عبارت محتوای ترجیحی است (به .BR git-annex\-preferred\-content (1) مراجعه کنید) که مشخص می‌کند کدام فایل‌های ضمیمه‌شده باید افزوده شوند. در حالی که افزودن تمام یا تعداد زیادی از فایل‌ها از این روش ممکن است، توجه داشته باشید که معمولاً شبیه‌سازی تعداد اندکی از فایل‌ها که ویژگی‌های خاص مورد نظر شما را دارند بسیار بهینه‌تر خواهد بود. .IP هنگام اجرا در یک زیرپوشه از مخزن، تنها فایل‌های موجود در آن زیرپوشه برای افزودن در نظر گرفته می‌شوند. .IP از این دستور می‌توان برای فایل‌های یکسان بیش از یک‌بار استفاده کرد تا چندین مخزن در شبیه‌سازی شامل همان فایل‌ها باشند. .IP "\fBadd filename size repo [repo ...]\fP" یک فایل ضمیمه‌شده شبیه‌سازی‌شده با نام فایل و اندازه مشخص ایجاد می‌کند که در مخزن یا مخازن تعیین‌شده حاضر (موجود) است. .IP اندازه را می‌توان با استفاده از هر یک از واحدهای مرسوم، مانند «10mb» یا «3.3terabytes» مشخص کرد. .IP نام فایل نمی‌تواند شامل فاصله (فاصله خالی) باشد. .IP این دستور فایلی را در نمایه (index) ثبت مرحله‌ای (stage) می‌کند تا بتوان از دستورات استاندارد git-annex برای بررسی وضعیت فایل ضمیمه‌شده شبیه‌سازی‌شده استفاده کرد. اگر فایلی ضمیمه‌شده با همان نام از قبل وجود داشته باشد، با فایل جدید بازنویسی می‌شود. .IP توجه داشته باشید که شبیه‌سازی، افزودن فایل‌های دارای تعارض به مخازن مختلف را پوشش نمی‌دهد. فایل‌های درون شبیه‌سازی در تمامی مخازن شبیه‌سازی‌شده یکسان هستند. .IP "\fBaddmulti N suffix minsize maxsize repo [repo ...]\fP" چندین فایل ضمیمه‌شده شبیه‌سازی‌شده را با اندازه‌های تصادفی در بازه میان minsize و maxsize اضافه می‌کند. .IP نام‌گذاری فایل‌ها با ترکیب شماره (که از ۱ آغاز می‌شود و تا N افزایش می‌یابد) با یک پسوند (suffix) انجام می‌گیرد. .IP به عنوان مثال: .IP .EX addmulti 100 testfile.jpg 100kb 10mb foo .EE .IP این کار فایل‌هایی به نام‌های «1testfile.jpg»، «2testfile.jpg» و غیره اضافه می‌کند. .IP توجه داشته باشید که افزودن تعداد زیادی فایل به شبیه‌سازی می‌تواند سرعت آن را کاهش داده و حافظه زیادی مصرف کند. .IP "\fBstep N\fP" شبیه‌سازی را به این تعداد گام به جلو می‌برد. .IP در هر گام از شبیه‌سازی، یک فایل با توجه به پیکربندی محتوای ترجیحی و سایر تنظیمات، یا منتقل (transferred) و یا رهاسازی (dropped) می‌شود. .IP اگر طبق پیکربندی جاری فایل دیگری برای انتقال یا رهاسازی باقی نمانده باشد، پیامی مبنی بر به پایداری رسیدن (stabilized) شبیه‌سازی نمایش داده خواهد شد. .IP این دستور همچنین اجرای git pull و git push را در صورت لزوم در هر مخزن شبیه‌سازی می‌کند تا کارهای بیشتری برای انجام پیدا کند. .IP "\fBstepstable N\fP" شبیه‌سازی را به این تعداد گام به جلو می‌برد، با این انتظار که تا آن مرحله به پایداری برسد. .IP اگر شبیه‌سازی پایدار نشود، دستور با وضعیت خروج غیرصفر خارج خواهد شد. .IP "\fBaction repo getwanted remote\fP" دریافت فایل‌های مورد نیاز مخزن از ریموت را شبیه‌سازی می‌کند. .IP "\fBaction repo dropunwanted\fP" رهاسازی فایل‌هایی که مخزن نیازی به آن‌ها ندارد را شبیه‌سازی می‌کند، در صورتی که بتواند وجود تعداد رونوشت‌های کافی روی ریموت‌ها را تأیید کند. .IP "\fBaction repo dropunwantedfrom remote\fP" رهاسازی فایل‌هایی از ریموت که خود ریموت نیازی به آن‌ها ندارد را شبیه‌سازی می‌کند، در صورتی که بتواند وجود تعداد رونوشت‌های کافی را تأیید کند. .IP "\fBaction repo sendwanted remote\fP" ارسال فایل‌های مورد نیاز ریموت به آن را توسط مخزن شبیه‌سازی می‌کند. .IP "\fBaction repo gitpush remote\fP" ارسال (push) شاخه git-annex به ریموت توسط مخزن را شبیه‌سازی می‌کند. .IP "\fBaction repo gitpull remote\fP" دریافت (pull) شاخه git-annex از ریموت توسط مخزن را شبیه‌سازی می‌کند. .IP "\fBaction repo pull remote\fP" معادل .BR git-annex\-pull (1) را با ترکیب اقدامات gitpull، getwanted و dropunwanted شبیه‌سازی می‌کند. .IP "\fBaction repo push remote\fP" معادل .BR git-annex\-push (1) را با ترکیب اقدامات sendwanted، dropunwantedfrom و gitpush شبیه‌سازی می‌کند. .IP "\fBaction repo sync remote\fP" معادل .BR git-annex\-sync (1) را با ترکیب اقدامات gitpull، getwanted، sendwanted، dropunwanted و gitpush شبیه‌سازی می‌کند. .IP "\fBaction [...] while action [...]\fP" اجرای هم‌روند دو اقدام را شبیه‌سازی می‌کند. اگرچه شبیه‌سازی در واقعیت تنها یک رویداد را در هر لحظه شبیه‌سازی می‌کند، اما هنگامی که هر یک از اقدامات بر روی چندین فایل اثر می‌گذارند، رویدادها به‌صورت تصادفی درهم‌آمیخته (interleaved) می‌شوند. .IP هر تعداد اقدام را می‌توان به این صورت ترکیب نمود. .IP به عنوان مثال: .IP .EX action foo dropunwanted while action bar getwanted foo .EE .IP در این مثال، ممکن است bar قبل از این‌که foo فایلی را رهاسازی کند، آن را دریافت کند یا نکند. .IP "\fBseed N\fP" بذر تصادفی (random seed) را روی عددی مشخص تنظیم می‌کند. استفاده از این دستور باید نتایج شبیه‌سازی را قطعی و تکرارپذیر (deterministic) کند. فایل خروجی sim همواره شامل بذر تصادفی است، از این رو می‌توان از آن برای بازپخش شبیه‌سازی استفاده نمود. .IP "\fBpresent repo file\fP" وضعیت مورد انتظار شبیه‌سازی را در این نقطه نشان می‌دهد. مخزن باید حاوی محتوای این فایل باشد. اگر چنین نباشد، عدم تطابق در خروجی خطای استاندارد اعلام می‌شود و دستور .B git-annex sim در نهایت با کد خطای غیرصفر خارج خواهد شد. .IP این مورد با پیشرفت شبیه‌سازی به فایل sim خروجی اضافه می‌شود. .IP "\fBnotpresent repo file\fP" وضعیت مورد انتظار شبیه‌سازی را در این نقطه نشان می‌دهد. مخزن نباید حاوی محتوای این فایل باشد. اگر فایل وجود داشته باشد، عدم تطابق در خروجی خطای استاندارد اعلام می‌شود و دستور .B git-annex sim در نهایت با کد خطای غیرصفر خارج خواهد شد. .IP این مورد با پیشرفت شبیه‌سازی به فایل sim خروجی اضافه می‌شود. .IP "\fBnumcopies N\fP" تعداد رونوشت‌های مورد نظر را تنظیم می‌کند. این دستور معادل .BR git-annex\-numcopies (1) است. .IP توجه داشته باشید که سایر پیکربندی‌هایی که numcopies را تعیین می‌کنند، مانند فایل‌های ‎.gitattributes‎، در شبیه‌سازی اعمال نمی‌شوند. .IP "\fBmincopies N\fP" حداقل تعداد رونوشت‌ها را تعیین می‌کند. این دستور معادل .BR git-annex\-mincopies (1) است. .IP "\fBtrustlevel repo trusted|untrusted|semitrusted|dead\fP" سطح اعتماد مخزن را مشخص می‌کند. این دستور معادل .BR git-annex\-trust (1)، .BR git-annex\-untrust (1) و موارد مشابه است. .IP "\fBwanted repo expression\fP" محتوای ترجیحی یک مخزن را پیکربندی می‌کند. این دستور معادل .BR git-annex\-wanted (1) است. .IP "\fBrequired repo expression\fP" محتوای الزامی یک مخزن را پیکربندی می‌کند. این دستور معادل .BR git-annex\-required (1) است. .IP "\fBgroupwanted group expression\fP" عبارت groupwanted را پیکربندی می‌کند. این دستور معادل .BR git-annex\-groupwanted (1) است. .IP "\fBrandomwanted repo term...\fP" محتوای ترجیحی یک مخزن را بر روی یک عبارت تصادفی تنظیم می‌کند که از ترکیب گزینشی از عبارت‌های ارائه‌شده با عملگرهای «and»، «or» و «not» ایجاد می‌شود. .IP به عنوان مثال، .B "randomwanted foo exclude=*.x include=*.x largerthan=100kb" ممکن است عبارتی مانند .B "exclude=*.x or not largerthan=100kb and include=*.x" یا عبارتی نظیر .B "include=*.x and exclude=*.x" تولید کند. .IP "\fBrandomrequired repo term...\fP" محتوای الزامی یک مخزن را بر روی یک عبارت تصادفی تنظیم می‌کند. .IP "\fBrandomgroupwanted group term...\fP" عبارت groupwanted را بر روی یک عبارت تصادفی تنظیم می‌کند. .IP "\fBgroup repo group\fP" یک مخزن را به یک گروه اضافه می‌کند. این دستور معادل .BR git-annex\-group (1) است. .IP "\fBungroup repo group\fP" یک مخزن را از یک گروه حذف می‌کند. این دستور معادل .BR git-annex\-ungroup (1) است. .IP "\fBmetadata filename expression\fP" متادیتای (فراداده) فایل شبیه‌سازی‌شده را تغییر می‌دهد. این عبارت دقیقاً با همان قالب گزینه .B \-\-set در دستور .B git-annex\-metadata نوشته می‌شود. به عنوان مثال: .B metadata foo year=2025 .IP "\fBmaxsize repo size\fP" حداکثر اندازه یک مخزن را پیکربندی می‌کند. این دستور معادل .BR git-annex\-maxsize (1) است. .IP "\fBrebalance [on|off]\fP" تنظیم «rebalance on» معادل ارسال گزینه .B \-\-rebalance به git-annex است. تنظیم «rebalance off» این اثر را خنثی می‌کند. .IP به عنوان مثال: .IP .EX maxsize foo 1tb rebalance on step 100 rebalance off .EE .IP "\fBclusternode name repo\fP" شبیه‌سازی یک مخزن به‌عنوان یک گره (نود) از یک خوشه، که می‌توان با نام مشخص‌شده به آن ارجاع داد. .IP به‌جای اینکه درگاه خوشه (cluster gateway) به‌عنوان یک موجودیت جداگانه شبیه‌سازی شود، هرگونه اتصال به یک گره خوشه با آن نام، به‌منزله دسترسی به آن مخزن از طریق همان درگاه خوشه تلقی می‌گردد. .IP از آنجا که یک درگاه خوشه از تمامی تغییراتی که از طریق آن بر روی گره‌ها اعمال می‌شود آگاه است، هر مخزنی که به یکی از گره‌های خوشه متصل باشد فوراً از تغییرات ایجادشده از طریق آن گره مطلع خواهد شد، بدون آنکه نیازی به شبیه‌سازی git pull باشد. .IP برای شبیه‌سازی مخزنی که گره بیش از یک خوشه است، یا پشت چندین درگاه در یک خوشه مشترک قرار دارد، از این دستور استفاده کنید تا چندین نام به آن داده شود. .SH "گزینه‌ها (OPTIONS)" .IP "همچنین می‌توان از گزینه‌های \fBgit-annex\-common\-options\fP(1) نیز استفاده کرد." .SH "مثال‌ها (EXAMPLES)" ابزار git-annex شامل مجموعه‌ای از فایل‌های sim است، در: .PP .SH "همچنین ببینید (SEE ALSO)" .BR git-annex (1) .PP .BR git-annex\-test (1) .SH "نویسنده (AUTHOR)" Joey Hess