نحوه تهیه نسخه پشتیبان و بازیابی پایگاه داده های PostgreSQL در اوبونتو 16.04
مقدمه PostgreSQL یک سیستم مدیریت پایگاه داده رایگان و منبع باز است که می تواند برای ذخیره اطلاعات مربوط به وب سایت ها استفاده شود. همچنین شناخته شده است
از زمان تصور آن در سال 2009 ، MongoDB رهبری صنعت NoSQL را بر عهده داشته است. یکی از مفاهیم اصلی MongoDB مجموعه Replica است ، بنابراین قبل از کار با آن ابتدا اجازه می دهد تا مفهوم را مرور کنیم.
ساده ترین مدل ارتباطی که در تکثیر پایگاه داده ها استفاده می شود ، معماری Master-Slave است. همانطور که از نام آن پیداست این مدل دارای 2 نقش است که در یک استاد منحصر به فرد و بسیاری از غلامان پخش شده است ، نقش استاد پردازش عملیات خواندن و نوشتن انجام شده توسط مددجویان است و بردگان با ماکت استاد رفتار می شوند.
مهمترین مزیت این مدل این است که عملکرد استاد توسط عملیات پشتیبان گیری به خطر نمی افتد ، عملیات تهیه پشتیبان به روشی ناهمزمان انجام می شود و در صورت عدم موفقیت گره اصلی ، این می تواند به یک مشکل جدی تبدیل شود. گره های برده فقط خوانده می شوند و باید به صورت دستی به گره اصلی ارتقاء یابد ، بنابراین در این زمان احتمال از دست دادن داده ها وجود دارد.
یک گزینه برای حل مشکل در دسترس بودن ، داشتن بیش از یک استاد در معماری است ، اما این می تواند منجر به مشکل دیگری در قوام داده ها بین آن نمونه ها و پیچیدگی اضافه شده در پیکربندی شود.
اکنون با توجه به زمینه می توانیم فناوری Replica Set را از MongoDB ارائه دهیم. Replica Set نام معماری Master-Slave است که دارای شکست اتوماتیک است ، بنابراین در لحظه ای که primary
گره استاد (که اکنون نامگذاری شده است ) نتواند به درستی election
کار کند باعث ایجاد اراده می شود و یک گره اولیه جدید از بین برده های باقی مانده انتخاب می شود ( که اکنون به آن اشاره شده است secondaries
)
گره اصلی تنها کسی است که عملیات نوشتن را انجام می دهد ، به طور پیش فرض عملیات خواندن توسط اصلی نیز انجام می شود ، اما این رفتار بعداً تغییر می یابد.
این عملیات در oplog
(ورود به سیستم عملیات) ضبط می شود ، سپس گره های ثانویه محتوای خود را بصورت غیرمستقیم و بر اساس محتوایoplog
توجه: oplog
یک مجموعه capped است ، به این معنی که این مجموعه محدودیتی دارد ، با local.oplog.rs
این کار می توانید محتوای هر مجموعه را در داخل یک پوسته mongo در هر عضو مجموعه بررسی کنید.
یک گره ثانویه علاوه بر اینکه کسانی هستند که پشتیبان مناسبی از پایگاه داده را انجام می دهند ، این نقش ها را دارند:
با تشکر از این خصوصیات ما می توانیم انواع مختلفی از گره های ثانویه داشته باشیم:
primary
انتخابات شوند ، اما می توانند در انتخابات رأی دهند ، یک ماکت کامل داشته باشند و می توانند عملیات خواندن را بپذیرند. این موارد در استقرار چند مرکز داده می تواند مفید باشد.Priority 0
اعضا هستند ، اما علاوه بر این آنها نمی توانند عملیات خواندن را پردازش کنند. در صورت لزوم ممکن است رأی دهند. وظایف ارجح برای این اعضا گزارش و تهیه پشتیبان است.priority 0
گره ای باشد و توصیه می شود که آنها hidden
نیز عضو باشند.قبل از استقرار زیرساخت ، طراحی آن بسیار مهم است و در این طرح نکاتی وجود دارد که باید در نظر بگیرید.
به خاطر داشته باشید که حداقل تعداد عناصر برای ساخت یک مجموعه Replica 3 است. می توانید سه نوع گره را با حداقل یک گره اصلی و یک گره ثانویه مخلوط کنید.
در این راهنما 3 عضو ، یک نفر اولیه و دو متوسطه استاندارد مستقر هستیم.
توجه: توصیه می شود حداکثر 7 عضو رای دهنده با ترکیبی از داوران و اعضای ثانویه داشته باشند.
نام فقط برای مرجع است اما شما در پیکربندی مجموعه از آن استفاده می کنید. به خاطر داشته باشید که می توانید بیش از یک مجموعه Replica در محیط تولید خود داشته باشید ، بنابراین از نام مجموعه خود غافل نشوید.
این آموزش کاربر را ترغیب می کند تا نام مجموعه را انتخاب کند.
این آموزش پیشنهاد می کند که در همان مرکز داده مستقر شوید تا از بروز مشکلات ارتباطی جلوگیری کنید.
توجه: در صورت استقرار در مراكز مختلف داده ، توصیه می شود گره های خود را با VPN پاك كنید
3 گره Ubuntu 16.04 x64 را راه اندازی کنید. در همان منطقه از پرتال مشتری خود ، در صورت امکان. فراموش نکنید که آنها را مطابق با نوع پروژه ای که با آن سروکار دارید نامگذاری کنید و حتماً در تمام این گره ها اندازه سرور یکسان دارید .
بعد از اینکه 3 گره خود را مستقر کردید ، باید مطمئن باشید که هر گره می تواند با بقیه صحبت کند. شما باید به دو گره ssh کنید و با استفاده از دیگران به آنها برسید ping -c 4 EXAMPLE_IP
. تغییر EXAMPLE_IP
به IP های واقعی گره خود را.
در اینجا می توانید نمونه ای از ارتباط موفق بین دو گره را مشاهده کنید.
root@foo_node:~# ping -c 4 EXAMPLE_IP
PING EXAMPLE_IP (EXAMPLE_IP) 56(84) bytes of data.
64 bytes from EXAMPLE_IP: icmp_seq=1 ttl=59 time=0.594 ms
64 bytes from EXAMPLE_IP: icmp_seq=2 ttl=59 time=0.640 ms
64 bytes from EXAMPLE_IP: icmp_seq=3 ttl=59 time=0.477 ms
64 bytes from EXAMPLE_IP: icmp_seq=4 ttl=59 time=0.551 ms
--- EXAMPLE_IP ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3021ms
rtt min/avg/max/mdev = 0.477/0.565/0.640/0.064 ms
به طور کلی می توانید از پکیج MongoDB اوبونتو استفاده کنید ، اما بهتر است از Repo جامعه رسمی استفاده کنید زیرا همیشه به روز است. این repo شامل این بسته ها است:
mongod
Daemon (فرایند اصلی که درخواست های داده را انجام می دهد) است.mongos
Daemon (سرویس مسیریابی برای استقرارهای مشترک) است.mongo shell
رابط جاوا اسکریپت است.به نصب بسته ها ادامه دهید.
کلید عمومی را به سیستم مدیریت بسته وارد کنید.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
پرونده فهرست را برای MongoDB '/etc/apt/source.list.d/mongodb-org-3.4.list' ایجاد کنید.
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
پایگاه داده بسته را به روز کنید.
sudo apt-get update
فراداده MongoDB را نصب کنید.
sudo apt-get install -y mongodb-org
سرویس MongoDB را شروع کنید.
sudo service mongod start
اکنون می توانید mongo shell
در هر جلسه خط مشی باز کنید. برای انجام این کار ، شما باید از mongo
دستور استفاده کنید . شما را با چیزی شبیه به این مورد استقبال می کند.
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
Server has startup warnings:
*Some extra logs are cut by the way*
>
خاموش کردن سرویس را فراموش نکنید sudo service mongod stop
، زیرا بعداً mongod
با برخی پارامترها دوباره شروع خواهیم کرد. این روند را در هر 3 گره مجموعه تکرار کنید.
استفاده از یک کلید در مدیریت Replica Set دو مفهوم را مجبور می کند. مورد اول است Internal Authentication
. به طور پیش فرض شما می توانید یک mongo shell
جلسه را بدون استفاده از کاربر شروع کنید و این جلسه کنترل کاملی از دیتابیس خواهد داشت ، اما وقتی از یک keyfile برای تأیید اعتبار استفاده می کنید mongo shell
جلسه شما به وضعیتی به نام می رسد localhost exception
. این حالت فقط به شما امکان می دهد تا کاربر سرپرست و مجموعه Replica را ایجاد کنید. مفهوم دوم Role-Based Access Control
یا به عبارت دیگر مجوز است. این امر برای اعمال سطح اداری به مجموعه Replica اعمال می شود.
keyfile کلمه عبور برای استفاده در مجموعه است ، این رمز عبور باید در تمام اعضای مجموعه یکسان باشد. برای افزایش امنیت استفاده از کلید تصادفی با ابزار مورد نظر خود بسیار مهم است.
محتوا باید بین 6 تا 1064 نویسه باشد. همچنین باید read only
مجوز مربوط به keyfile را تنظیم کنید.
chmod 400 PATH_OF_YOUR_KEYFILE
اکنون keyfile خود را برای هر عضو تنظیم شده کپی کنید ، لطفاً از یک پوشه ثابت برای مراجعه بعدی استفاده کنید ، و آن را در یک رسانه قابل جابجایی ذخیره نکنید.
همچنین از یک پوشه برای پرونده ای که mongod
می توانید دسترسی داشته باشید استفاده کنید.
در این مرحله ما باید mongod daemon
در هر عضو تنظیم شده شروع کنیم . دو روش برای شروع mongod
فرایند وجود دارد: استفاده از یک فایل پیکربندی یا استفاده از خط فرمان. هر دو روش کاملاً آسان هستند ، اما فقط برای سادگی ، این آموزش از نسخه خط فرمان استفاده می کند.
از نامی که قبلاً در این دستور انتخاب کرده اید استفاده کنید.
mongod --keyFile PATH_OF_YOUR_KEYFILE --replSet "YOUR_SET_NAME"
به طور پیش فرض mongod
به عنوان یک شبح اجرا نمی شود. برای اجرای کامل آن به عنوان یک Daemon باید از --fork
پارامتر استفاده کنید یا از آن استفاده کنید upstart
. در این آموزش ما دویدن را mongod
به عنوان یک Daemon تشویق نمی کنیم تا بتوانید سیاهههای مربوط به ترمینال خود را مستقیماً مشاهده کنید.
توجه: اسم مجموعه Replica را با دقت تایپ کنید زیرا پس از ایجاد ، شما نمی توانید آن را تغییر دهید.
توجه: اگر شما به mongod
عنوان یک فرآیند غیر Daemon کار می کنید ، برای ادامه کار مجبورید اتصال ssh دیگری را باز کنید.
mongo
برای باز کردن دستور باید از دستور استفاده کنید mongo shell
. این می تواند در هر یک از اعضای مجموعه انجام شود.
در این لحظه ما در وضعیتی هستیم به نام localhost exception
. هنگامی که از یک keyfile برای تنظیم mongod
فرآیند استفاده می شود ، شما موظف هستید قبل از اعمال عملیات خواندن و نوشتن ، یک مدیر پایگاه داده ایجاد کنید ، اما بعداً به آن خواهیم پرداخت.
این یک بخش ظریف است ، ما قبل از استفاده از این دستور ، از دستور rs.initiate()
داخل mongo shell
مرحله 4 استفاده می کنیم.
rs.initiate(
{
_id : <replicaSetName>,
members: [
{ _id : 0, host : "example1.net:27017" },
{ _id : 1, host : "example2.net:27017" },
{ _id : 2, host : "example3.net:27017" }
]
}
)
_id
زمینه اول رشته ای است و باید مطابق --replSet
با قبل از قبل mongod
باشد. همچنین ، هر مقدار مقدار host
باید یا ip یا نام دامنه هر یک از اعضای مجموعه Replica باشد. فراموش نکنید که بندری را که نمونه mongo در هر عضو استفاده می کند ، ضمیمه کنید.
اکنون زمان آن رسیده است که دستور را با داده های خود بر روی آن اجرا کنید ، این باعث می شود که election
یک اولیه شروع شود ، سپس یک اولیه به طور خودکار انتخاب می شود.
در اینجا باید توجه داشته باشید که نشانگر پوسته شما به YOUR_SET_NAME:PRIMARY>
یا تغییر کرده است YOUR_SET_NAME:SECONDARY
. این بدان معنی است که ایجاد یک مجموعه موفقیت بود.
در primary
صورت عدم فعالیت ، برای ادامه کار ، باید کار را پیدا کنید . rs.status()
برای نمایش اطلاعات مربوط به مجموعه Replica و تعیین مکان از این دستور ، استفاده کنید primary
. شما در جستجوی ملک هستید "stateStr" : "PRIMARY"
.
بعد از یافتن فرمان ، دستور بعدی را با استفاده از داده های خود primary
وارد کرده mongo shell
و آن را اجرا کنید.
admin = db.getSiblingDB("admin")
admin.createUser(
{
user: "YOUR_USER",
pwd: "YOU_PASSWORD",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
این admin = db.getSiblingDB("admin")
قسمت به ما اجازه می دهد تا admin
از یک پایگاه داده دیگر بنویسیم . با این کار نام مستعار ایجاد می شود admin
، بنابراین می توانیم دستوراتی را به جای آن اجرا کنیم.
اگر این عملیات موفقیت آمیز باشد ، اعلانی مبنی بر اضافه شدن کاربر دریافت خواهید کرد.
Successfully added user: {
"user" : "YOUR_USER",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
در این مرحله ، ما فقط یک سرور برای همه سرورها داریم ، اما داشتن یک مجموعه Replica ما را مجبور می کند که یک کاربر با clusterAdmin
نقش داشته باشیم. ما کاربر دیگری را تنها با آن نقش ایجاد خواهیم کرد تا نگرانی ها را جدا کند.
ما به حد مجاز رسیده ایم localhost exception
، به همین دلیل است که باید اعتبار را به کاربر ایجاد شده در یک مرحله قبل تغییر دهیم.
شما می توانید کاربران را mongo shell
با موارد زیر تغییر دهید.
db.getSiblingDB("admin").auth("YOUR_ADMIN", "YOUR_PASSWORD" )
اگر در حال حاضر به mongo shell
استفاده از این دستور وصل نشده اید.
mongo -u "YOUR_ADMIN" -p "YOUR_PASSWORD" --authenticationDatabase "admin"
از تغییر یک کاربر مطلع می شوید و می توانید به مرحله بعدی بروید.
این clusterAdmin
نقش کنترل کامل مجموعه Replica را به کاربر می دهد. ایجاد آن به آسانی ایجاد کاربر سرپرست است.
db.getSiblingDB("admin").createUser(
{
"user" : "YOUR_USER",
"pwd" : "YOUR_PASSWORD",
roles: [ { "role" : "clusterAdmin", "db" : "admin" } ]
}
)
توجه داشته باشید که این بار نقش به تغییر یافته استclusterAdmin
.
در حال حاضر ما 2 کاربر سرپرست داریم: یکی کنترل کامل روی سرور و دیگری که دسترسی به کارهای اداری در سطح مجموعه Replica دارد. اگرچه ، ما فاقد کاربری هستیم که به "استفاده" از پایگاه داده دسترسی داشته باشد ، بنابراین ما اکنون آن کاربر را ایجاد خواهیم کرد.
admin = db.getSiblingDB("admin")
admin.createUser(
{
user: "YOUR_USER",
pwd: "YOUR_PASSWORD",
roles: [ { role: "userAdminAnyDatabase", db: "cars" } ]
}
)
توجه کنید که این بار db
قسمت را تغییر می دهیم ، در آنجا پایگاه داده را در دسترس کاربر قرار می دهیم ، در این حالت ما از دیتابیس با نام استفاده می کنیم cars
.
بانک اطلاعاتی هنوز ایجاد نشده است. برای انجام این کار ، شما باید برخی از دستورات را تایپ کنید تا به طور ضمنی آن را ایجاد کنید. تغییر به cars
پایگاه داده.
use cars
شما یک اعلان دریافت خواهید کرد switched to db cars
:.
بانک اطلاعاتی هنوز ایجاد نشده است ، برای این منظور باید چیزی را برای آن بنویسید. ما از مثال زیر استفاده می کنیم.
db.models.insert({ make: "Dodge", model: "Viper", year: 2010 })
این بار به شما اطلاع داده می شود WriteResult({ "nInserted" : 1 })
.
در صورت تمایل می توانید کلیه اشیاء موجود در پایگاه داده را با استفاده از این find()
روش بازیابی کنید :
db.models.find()
{ "_id" : ObjectId("59acd8b55334882863541ff4"), "make" : "Dodge", "model" : "Viper", "year" : 2010 }
توجه داشته باشید که _id
در خروجی شما متفاوت خواهد بود ، اما داده های دیگر باید یکسان باشند. با توجه به زمان کافی ، این داده ها برای اعضای دیگر تکرار می شود.
ایجاد یک مجموعه Replica در ابتدا می تواند چالش برانگیز باشد زیرا اطلاعات زیادی برای درک آن وجود دارد ، اما هنگامی که ایده خود را پشت سر گذاشتید می توانید آن را در یک نسیم مستقر کنید ، بنابراین اگر در اولین بار نمی توانید آن را درک کنید ، تسلیم نشوید. به خاطر داشته باشید که مجموعه Replica در مدیریت MongoDB از اهمیت زیادی برخوردار است زیرا امکان افزودن ویژگی های پیشرفته مانند Load Balancing را فراهم می کند.
مقدمه PostgreSQL یک سیستم مدیریت پایگاه داده رایگان و منبع باز است که می تواند برای ذخیره اطلاعات مربوط به وب سایت ها استفاده شود. همچنین شناخته شده است
Barnyard2 راهی برای ذخیره و پردازش خروجی های باینری از Snort به یک پایگاه داده MySQL است. قبل از شروع لطفا توجه داشته باشید که اگر شما خروپف ندارید
MongoDB به طور پیش فرض امن نیست. اگر MongoDB را نصب می کنید و بدون پیکربندی آن برای احراز هویت ، آن را راه اندازی می کنید ، می خواهید زمان بدی داشته باشید
در این مقاله ، Ill به شما نشان می دهد که چگونه MariaDB را در OpenBSD 6 نصب کنید و پیکربندی کنید تا در دسترس یک وب سرور قرار گرفته (Apache یا Nginx) باشد. شما als
MySQL محبوب ترین نرم افزار در جهان است که برای پایگاه داده ها استفاده می شود. اطمینان از داشتن نسخه پشتیبان از پایگاه داده خود بسیار مهم است. این عمل اجازه می دهد
OrientDB یک منبع آزاد منبع آزاد چند مدل NoSQL DBMS است. با پشتیبانی از چندین مدل داده ، OrientDB می تواند عملکرد و انعطاف پذیری بیشتری را در اختیار شما قرار دهد
با استفاده از یک سیستم متفاوت؟ Apache Cassandra یک سیستم مدیریت پایگاه داده NoSQL آزاد و منبع باز است که به منظور ارائه مقیاس پذیری ، hig طراحی شده است
پیش نیاز سرور Vultr که تا به امروز Arch Linux را اجرا می کند (به این مقاله مراجعه کنید) دسترسی به سودو: دستورات لازم برای اجرا به عنوان root توسط پیشوند شماره یک و یک
با استفاده از یک سیستم متفاوت؟ مقدمه ArangoDB یک پایگاه داده منبع باز NoSQL است که دارای یک مدل داده انعطاف پذیر برای اسناد ، نمودارها و مقادیر کلیدی است. این است
پیش نیاز سرور Vultr در حال اجرا به روز Arch Arch (به این مقاله مراجعه کنید.) دسترسی به سودو: دستورات لازم برای اجرا به عنوان root توسط پیشوند # و یک مورد انجام می شود
MongoDB یک پایگاه داده سریع و قدرتمند NoSQL است. با این حال ، مخازن دبیان به آرامی بروزرسانی می شوند و اغلب حاوی نسخه های بسیار قدیمی بسته ها هستند. این آموزش
Laravel GitScrum یا GitScrum ابزاری با بهره وری منبع باز است که برای کمک به تیم های توسعه در اجرای متد Scrum به روشی مشابه مشابه طراحی شده است.
پیش نیاز سرور Vultr که تا به امروز Arch Linux را اجرا می کند (به این مقاله مراجعه کنید) دسترسی به سودو. دستورات لازم برای اجرا به عنوان root توسط پیشوند # و یک مورد اجرا می شوند
با استفاده از یک سیستم متفاوت؟ Apache Cassandra یک سیستم مدیریت پایگاه داده NoSQL آزاد و منبع باز است که به منظور ارائه مقیاس پذیری ، hig طراحی شده است
مقدمه InfluxDB یک پایگاه داده مبتنی بر سری زمان است که در Go نوشته شده است. InfluxDB کاربردهای بسیاری دارد که یکی از آنها ذخیره اطلاعات نظارت بر روی سرورها است. من
MariaDB یک پایگاه داده منبع آزاد است و بیشترین کاربرد جایگزین کشویی برای MySQL است. این توسط توسعه دهندگان MySQL ساخته شده است و در نظر گرفته شده است تا آن را بازسازی کنید
phpRedisAdmin یک برنامه وب است که بانکهای اطلاعاتی Redis را با یک رابط کاربری گرافیکی بصری مدیریت می کند. این آموزش نحوه نصب را توضیح می دهد
مقدمه در این نوشتن ، چگونگی تهیه نسخه پشتیبان از چندین پایگاه داده MySQL یا MariaDB که در همان دستگاه قرار دارند با استفاده از یک اسکریپت bash سفارشی ، پشتیبان گیری کنید.
با استفاده از یک سیستم متفاوت؟ Apache Cassandra یک سیستم مدیریت پایگاه داده NoSQL آزاد و منبع باز است که به منظور ارائه مقیاس پذیری ، hig طراحی شده است
LiteCart یک بستر سبد خرید آزاد و منبع باز است که به زبان های PHP ، jQuery و HTML 5 نوشته شده است. این نرم افزار ساده ، سبک و با کاربرد آسان است.
با استفاده از یک سیستم متفاوت؟ Anchor CMS یک سیستم مدیریت محتوا (CMS) بسیار ساده و بسیار سبک ، بسیار آزاد و آزاد است.
NFS یک سیستم فایل مبتنی بر شبکه است که به رایانه ها اجازه می دهد تا از طریق شبکه رایانه ای به فایلها دسترسی پیدا کنند. این راهنما توضیح می دهد که چگونه می توانید پوشه ها را روی NF قرار دهید
هنگام راه اندازی سرور جدید لینوکس ، به روزرسانی سیستم های هسته و سایر بسته ها تا آخرین نسخه پایدار یک روش توصیه شده است. در این مقاله
با استفاده از یک سیستم متفاوت؟ Matomo (سابقا پیویک) یک بستر تحلیلی منبع باز است ، یک جایگزین باز برای Google Analytics. منبع Matomo میزبان o
TeamTalk یک سیستم کنفرانس است که به کاربران امکان می دهد مکالمات صوتی / تصویری با کیفیت بالا ، چت متنی ، انتقال فایل ها و صفحه های به اشتراک بگذارند. من
Vultr یک ویژگی را فراهم می کند که به شما امکان می دهد با ایجاد یک نمونه جدید ، کلیدهای SSH را از قبل نصب کنید. این اجازه می دهد تا به کاربر root دسترسی داشته باشید ، با این حال ، th
با استفاده از یک سیستم متفاوت؟ NodeBB یک نرم افزار انجمن مبتنی بر Node.js است. از سوکت های وب برای تعامل فوری و اعلامیه های زمان واقعی استفاده می کند. NodeB
ZNC یک پیشرانه پیشرفته شبکه IRC است که تمام وقت بهم متصل می شود تا مشتری IRC بتواند بدون از دست دادن جلسه گپ قطع یا وصل شود.
رنجر یک مدیر فایل مبتنی بر خط فرمان است که دارای کلیدهای اتصال VI است. این برنامه یک رابط لعنتی مینیمالیستی و زیبا با نمای سلسله مراتب فهرست ارائه می دهد