| git-annex-sim(1) | General Commands Manual | git-annex-sim(1) |
نام (NAME)
git-annex-sim - شبیهسازی جابجایی دادهها میان خوشههای مخازن
خلاصه دستور (SYNOPSIS)
git annex sim start [my.sim]
git annex sim command
git annex sim show
git annex sim end
git annex sim run my.sim
توضیحات (DESCRIPTION)
این دستور رفتار git-annex را در شبکهای از مخازن شبیهسازی میکند، و مشخص میسازد که با توجه به پیکربندی محتوای ترجیحی (preferred content)، تعداد رونوشتها (numcopies)، سطح اعتماد (trust level) و غیره، کدام فایلها به کدام مخازن خواهند رسید.
ورودی شبیهسازی یک فایل sim یا دستورات sim است که پس از شروع شبیهسازی اجرا میشوند. این دستورات به شکل git annex sim command هستند، بهطوریکه دستور دقیقاً با همان قالبی که در فایل sim به کار میرود نوشته میشود (فهرست دستورات sim را در ادامه مشاهده کنید). برای نمونه، git annex sim step 1 شبیهسازی را یک گام به جلو میبرد.
شبیهسازی حین اجرا گزارش وقایعی (log) را نگهداری میکند که حاوی تمامی ورودیهای شبیهسازی، اقدامات انجامشده و همچنین نتایج شبیهسازی است. از دستور git-annex sim show برای نمایش این گزارش وقایع استفاده کنید. این کار امکان اجرای مجدد همان شبیهسازی در آینده و نیز تحلیل نتایج شبیهسازی را فراهم میآورد.
برای پایان دادن به شبیهسازی و پاکسازی، از دستور git annex sim end استفاده کنید.
جهت سهولت کار، برای اجرای یک شبیهسازی از روی یک فایل و سپس خاتمه دادن به آن، از دستور git-annex sim run استفاده کنید. اگر مشکلی در اجرای شبیهسازی رخ دهد، پیش از متوقف شدن به نمایش درخواهد آمد.
توجه داشته باشید که قطع کردن این دستور در حین اجرا ممکن است شبیهسازی را در وضعیتی ناسازگار باقی بگذارد. همچنین اجرای همزمان چندین دستور sim نیز ممکن است همین وضعیت را ایجاد کند، اگرچه اجرای دستور git annex sim visit همزمان با اجرای دیگر دستورات sim کاملاً ایمن است.
فایل SIM (THE SIM FILE)
این فایل متنی برای پیکربندی شبیهسازی و همچنین گزارش نتایج آن به کار میرود. هر خط از این فایل به شکل یک دستور و به دنبال آن پارامترهای آن دستور است. خطوطی که با «#» یا «--» آغاز میشوند، توضیحات (کامنت) به شمار میروند.
در اینجا نمونهای از یک فایل sim آمده است:
# افزودن مخازن به شبیهسازی و اتصال آنها بهعنوان ریموت 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
دستورات SIM (SIM COMMANDS)
این مجموعه کاملی از دستوراتی است که میتوانند هم در فایل sim استفاده شوند و هم در حین اجرای شبیهسازی به git annex sim داده شوند.
- init name
- یک مخزن شبیهسازیشده را مقداردهی اولیه کرده و نامی به آن اختصاص میدهد که در شبیهسازی استفاده خواهد شد.
- initremote name
- یک ریموت ویژه شبیهسازیشده را مقداردهی اولیه میکند.
- use name here|remote|description|uuid
- استفاده از یک مخزن موجود در شبیهسازی، همراه با پیکربندیهای فعلی آن (سطح اعتماد، گروهها، محتوای ترجیحی و الزامی، حداکثر اندازه (maxsize)، و پیکربندی groupwanted گروههای آن).
- به این مخزن برای مقاصد شبیهسازی یک نام اختصاص مییابد. مخزن مورد استفاده را میتوان با نام ریموت، uuid و غیره مشخص کرد؛ به عنوان مثال: use myrepo here
- visit repo [command]
- دستور شل مشخصشده را در داخل مخزن شبیهسازیشده اجرا میکند و منتظر خروج آن میماند.
- هنگامی که هیچ دستور شلی مشخص نشده باشد، یک شل تعاملی اجرا میشود.
- این دستور در یک مخزن git اجرا میشود که شاخه git-annex آن حاوی وضعیت آن مخزن شبیهسازیشده است. این امر امکان اجرای هر یک از دستورات git-annex مانند git-annex whereis را جهت بررسی وضعیت شبیهسازی فراهم میکند. باید از اعمال هرگونه تغییر در وضعیت git-annex خودداری نمایید.
- connect repo [<-|->|<->] repo [...]
- افزودن یک اتصال میان دو یا چند مخزن. فلش نشاندهنده جهت اتصال است و میتواند دوطرفه نیز باشد. به عنوان مثال، connect foo -> bar باعث میشود bar یک ریموت برای foo باشد، در حالی که connect foo <-> bar هر کدام را به ریموت دیگری تبدیل میکند. زنجیرهای از اتصالات میتواند به چندین مخزن گسترش یابد، مانند: connect foo -> bar -> baz -> foo
- disconnect repo [<-|->|<->] repo [...]
- اتصالات میان مخازن را حذف میکند.
- برای نمونه، disconnect foo -> bar باعث میشود foo دیگر bar را به عنوان ریموت در نظر نگیرد.
- addtree repo expression
- فایلهای ضمیمهشده (annexed) را از مخزن git به شبیهسازی اضافه کرده و آنها را در مخزن مشخصشده حاضر (موجود) میسازد.
- عبارت (expression) یک عبارت محتوای ترجیحی است (به git-annex-preferred-content(1) مراجعه کنید) که مشخص میکند کدام فایلهای ضمیمهشده باید افزوده شوند. در حالی که افزودن تمام یا تعداد زیادی از فایلها از این روش ممکن است، توجه داشته باشید که معمولاً شبیهسازی تعداد اندکی از فایلها که ویژگیهای خاص مورد نظر شما را دارند بسیار بهینهتر خواهد بود.
- هنگام اجرا در یک زیرپوشه از مخزن، تنها فایلهای موجود در آن زیرپوشه برای افزودن در نظر گرفته میشوند.
- از این دستور میتوان برای فایلهای یکسان بیش از یکبار استفاده کرد تا چندین مخزن در شبیهسازی شامل همان فایلها باشند.
- add filename size repo [repo ...]
- یک فایل ضمیمهشده شبیهسازیشده با نام فایل و اندازه مشخص ایجاد میکند که در مخزن یا مخازن تعیینشده حاضر (موجود) است.
- اندازه را میتوان با استفاده از هر یک از واحدهای مرسوم، مانند «10mb» یا «3.3terabytes» مشخص کرد.
- نام فایل نمیتواند شامل فاصله (فاصله خالی) باشد.
- این دستور فایلی را در نمایه (index) ثبت مرحلهای (stage) میکند تا بتوان از دستورات استاندارد git-annex برای بررسی وضعیت فایل ضمیمهشده شبیهسازیشده استفاده کرد. اگر فایلی ضمیمهشده با همان نام از قبل وجود داشته باشد، با فایل جدید بازنویسی میشود.
- توجه داشته باشید که شبیهسازی، افزودن فایلهای دارای تعارض به مخازن مختلف را پوشش نمیدهد. فایلهای درون شبیهسازی در تمامی مخازن شبیهسازیشده یکسان هستند.
- addmulti N suffix minsize maxsize repo [repo ...]
- چندین فایل ضمیمهشده شبیهسازیشده را با اندازههای تصادفی در بازه میان minsize و maxsize اضافه میکند.
- نامگذاری فایلها با ترکیب شماره (که از ۱ آغاز میشود و تا N افزایش مییابد) با یک پسوند (suffix) انجام میگیرد.
- به عنوان مثال:
-
addmulti 100 testfile.jpg 100kb 10mb foo
- این کار فایلهایی به نامهای «1testfile.jpg»، «2testfile.jpg» و غیره اضافه میکند.
- توجه داشته باشید که افزودن تعداد زیادی فایل به شبیهسازی میتواند سرعت آن را کاهش داده و حافظه زیادی مصرف کند.
- step N
- شبیهسازی را به این تعداد گام به جلو میبرد.
- در هر گام از شبیهسازی، یک فایل با توجه به پیکربندی محتوای ترجیحی و سایر تنظیمات، یا منتقل (transferred) و یا رهاسازی (dropped) میشود.
- اگر طبق پیکربندی جاری فایل دیگری برای انتقال یا رهاسازی باقی نمانده باشد، پیامی مبنی بر به پایداری رسیدن (stabilized) شبیهسازی نمایش داده خواهد شد.
- این دستور همچنین اجرای git pull و git push را در صورت لزوم در هر مخزن شبیهسازی میکند تا کارهای بیشتری برای انجام پیدا کند.
- stepstable N
- شبیهسازی را به این تعداد گام به جلو میبرد، با این انتظار که تا آن مرحله به پایداری برسد.
- اگر شبیهسازی پایدار نشود، دستور با وضعیت خروج غیرصفر خارج خواهد شد.
- action repo getwanted remote
- دریافت فایلهای مورد نیاز مخزن از ریموت را شبیهسازی میکند.
- action repo dropunwanted
- رهاسازی فایلهایی که مخزن نیازی به آنها ندارد را شبیهسازی میکند، در صورتی که بتواند وجود تعداد رونوشتهای کافی روی ریموتها را تأیید کند.
- action repo dropunwantedfrom remote
- رهاسازی فایلهایی از ریموت که خود ریموت نیازی به آنها ندارد را شبیهسازی میکند، در صورتی که بتواند وجود تعداد رونوشتهای کافی را تأیید کند.
- action repo sendwanted remote
- ارسال فایلهای مورد نیاز ریموت به آن را توسط مخزن شبیهسازی میکند.
- action repo gitpush remote
- ارسال (push) شاخه git-annex به ریموت توسط مخزن را شبیهسازی میکند.
- action repo gitpull remote
- دریافت (pull) شاخه git-annex از ریموت توسط مخزن را شبیهسازی میکند.
- action repo pull remote
- معادل git-annex-pull(1) را با ترکیب اقدامات gitpull، getwanted و dropunwanted شبیهسازی میکند.
- action repo push remote
- معادل git-annex-push(1) را با ترکیب اقدامات sendwanted، dropunwantedfrom و gitpush شبیهسازی میکند.
- action repo sync remote
- معادل git-annex-sync(1) را با ترکیب اقدامات gitpull، getwanted، sendwanted، dropunwanted و gitpush شبیهسازی میکند.
- action [...] while action [...]
- اجرای همروند دو اقدام را شبیهسازی میکند. اگرچه شبیهسازی در واقعیت تنها یک رویداد را در هر لحظه شبیهسازی میکند، اما هنگامی که هر یک از اقدامات بر روی چندین فایل اثر میگذارند، رویدادها بهصورت تصادفی درهمآمیخته (interleaved) میشوند.
- هر تعداد اقدام را میتوان به این صورت ترکیب نمود.
- به عنوان مثال:
-
action foo dropunwanted while action bar getwanted foo
- در این مثال، ممکن است bar قبل از اینکه foo فایلی را رهاسازی کند، آن را دریافت کند یا نکند.
- seed N
- بذر تصادفی (random seed) را روی عددی مشخص تنظیم میکند. استفاده از این دستور باید نتایج شبیهسازی را قطعی و تکرارپذیر (deterministic) کند. فایل خروجی sim همواره شامل بذر تصادفی است، از این رو میتوان از آن برای بازپخش شبیهسازی استفاده نمود.
- present repo file
- وضعیت مورد انتظار شبیهسازی را در این نقطه نشان میدهد. مخزن باید حاوی محتوای این فایل باشد. اگر چنین نباشد، عدم تطابق در خروجی خطای استاندارد اعلام میشود و دستور git-annex sim در نهایت با کد خطای غیرصفر خارج خواهد شد.
- این مورد با پیشرفت شبیهسازی به فایل sim خروجی اضافه میشود.
- notpresent repo file
- وضعیت مورد انتظار شبیهسازی را در این نقطه نشان میدهد. مخزن نباید حاوی محتوای این فایل باشد. اگر فایل وجود داشته باشد، عدم تطابق در خروجی خطای استاندارد اعلام میشود و دستور git-annex sim در نهایت با کد خطای غیرصفر خارج خواهد شد.
- این مورد با پیشرفت شبیهسازی به فایل sim خروجی اضافه میشود.
- numcopies N
- تعداد رونوشتهای مورد نظر را تنظیم میکند. این دستور معادل git-annex-numcopies(1) است.
- توجه داشته باشید که سایر پیکربندیهایی که numcopies را تعیین میکنند، مانند فایلهای .gitattributes، در شبیهسازی اعمال نمیشوند.
- mincopies N
- حداقل تعداد رونوشتها را تعیین میکند. این دستور معادل git-annex-mincopies(1) است.
- trustlevel repo trusted|untrusted|semitrusted|dead
- سطح اعتماد مخزن را مشخص میکند. این دستور معادل git-annex-trust(1)، git-annex-untrust(1) و موارد مشابه است.
- wanted repo expression
- محتوای ترجیحی یک مخزن را پیکربندی میکند. این دستور معادل git-annex-wanted(1) است.
- required repo expression
- محتوای الزامی یک مخزن را پیکربندی میکند. این دستور معادل git-annex-required(1) است.
- groupwanted group expression
- عبارت groupwanted را پیکربندی میکند. این دستور معادل git-annex-groupwanted(1) است.
- randomwanted repo term...
- محتوای ترجیحی یک مخزن را بر روی یک عبارت تصادفی تنظیم میکند که از ترکیب گزینشی از عبارتهای ارائهشده با عملگرهای «and»، «or» و «not» ایجاد میشود.
- به عنوان مثال، randomwanted foo exclude=*.x include=*.x largerthan=100kb ممکن است عبارتی مانند exclude=*.x or not largerthan=100kb and include=*.x یا عبارتی نظیر include=*.x and exclude=*.x تولید کند.
- randomrequired repo term...
- محتوای الزامی یک مخزن را بر روی یک عبارت تصادفی تنظیم میکند.
- randomgroupwanted group term...
- عبارت groupwanted را بر روی یک عبارت تصادفی تنظیم میکند.
- group repo group
- یک مخزن را به یک گروه اضافه میکند. این دستور معادل git-annex-group(1) است.
- ungroup repo group
- یک مخزن را از یک گروه حذف میکند. این دستور معادل git-annex-ungroup(1) است.
- metadata filename expression
- متادیتای (فراداده) فایل شبیهسازیشده را تغییر میدهد. این عبارت دقیقاً با همان قالب گزینه --set در دستور git-annex-metadata نوشته میشود. به عنوان مثال: metadata foo year=2025
- maxsize repo size
- حداکثر اندازه یک مخزن را پیکربندی میکند. این دستور معادل git-annex-maxsize(1) است.
- rebalance [on|off]
- تنظیم «rebalance on» معادل ارسال گزینه --rebalance به git-annex است. تنظیم «rebalance off» این اثر را خنثی میکند.
- به عنوان مثال:
-
maxsize foo 1tb rebalance on step 100 rebalance off
- clusternode name repo
- شبیهسازی یک مخزن بهعنوان یک گره (نود) از یک خوشه، که میتوان با نام مشخصشده به آن ارجاع داد.
- بهجای اینکه درگاه خوشه (cluster gateway) بهعنوان یک موجودیت جداگانه شبیهسازی شود، هرگونه اتصال به یک گره خوشه با آن نام، بهمنزله دسترسی به آن مخزن از طریق همان درگاه خوشه تلقی میگردد.
- از آنجا که یک درگاه خوشه از تمامی تغییراتی که از طریق آن بر روی گرهها اعمال میشود آگاه است، هر مخزنی که به یکی از گرههای خوشه متصل باشد فوراً از تغییرات ایجادشده از طریق آن گره مطلع خواهد شد، بدون آنکه نیازی به شبیهسازی git pull باشد.
- برای شبیهسازی مخزنی که گره بیش از یک خوشه است، یا پشت چندین درگاه در یک خوشه مشترک قرار دارد، از این دستور استفاده کنید تا چندین نام به آن داده شود.
گزینهها (OPTIONS)
- همچنین میتوان از گزینههای git-annex-common-options(1) نیز استفاده کرد.
مثالها (EXAMPLES)
ابزار git-annex شامل مجموعهای از فایلهای sim است، در:
همچنین ببینید (SEE ALSO)
نویسنده (AUTHOR)
Joey Hess <id@joeyh.name>