virt-ls(1) Virtualization Support virt-ls(1)

virt-ls - فهرست کردن فایل‌ها در یک ماشین مجازی

virt-ls [--options] -d domname directory [directory ...]
virt-ls [--options] -a disk.img [-a disk.img ...] directory [directory ...]

شیوه قدیمی:

 virt-ls [--options] domname directory
 virt-ls [--options] disk.img [disk.img ...] directory
"virt-ls" نام فایل‌ها، اندازه فایل‌ها، مجموع‌های کنترلی (checksums)، ویژگی‌های گسترش‌یافته (extended attributes) و موارد دیگر را از یک ماشین مجازی یا ایمیج دیسک فهرست می‌کند.
می‌توان چندین نام دایرکتوری را مشخص کرد که در این حالت خروجی هر یک به یکدیگر متصل می‌شود.
برای فهرست کردن دایرکتوری‌ها از یک مهمان libvirt از گزینه -d برای تعیین نام مهمان استفاده کنید. برای یک ایمیج دیسک، از گزینه -a استفاده کنید.
"virt-ls" می‌تواند بسیاری از فهرست‌بندی‌های ساده فایل را انجام دهد. برای موارد پیچیده‌تر ممکن است نیاز باشد از guestfish(1) استفاده کنید یا مستقیماً برنامه‌ای برای API guestfs(3) بنویسید.

دریافت فهرستی از تمام فایل‌ها و دایرکتوری‌ها در یک ماشین مجازی:

virt-ls -R -d guest /

فهرست کردن تمام برنامه‌های دارای مجوز setuid یا setgid در یک ماشین مجازی لینوکس:

virt-ls -lR -d guest / | grep '^- [42]'

فهرست کردن تمام دایرکتوری‌های قابل نوشتن همگانی (public-writable) در یک ماشین مجازی لینوکس:

virt-ls -lR -d guest / | grep '^d ...7'

فهرست کردن تمام سوکت‌های دامنه یونیکس (Unix domain sockets) در یک ماشین مجازی لینوکس:

virt-ls -lR -d guest / | grep '^s'

فهرست کردن تمام فایل‌های عادی که نام آن‌ها به ‘.png’ ختم می‌شود:

virt-ls -lR -d guest / | grep -i '^-.*\.png$'

برای نمایش فایل‌های بزرگ‌تر از 10MB در دایرکتوری‌های home:

virt-ls -lR -d guest /home | awk '$3 > 10*1024*1024'

یافتن هر آنچه در 7 روز گذشته تغییر یافته است:

virt-ls -lR -d guest --time-days / | awk '$6 <= 7'

یافتن فایل‌های عادی تغییریافته در 24 ساعت گذشته:

virt-ls -lR -d guest --time-days / | grep '^-' | awk '$6 < 1'

اگرچه می‌توان از virt-ls برای بررسی تفاوت‌ها استفاده کرد، اما از نسخه libguestfs ≥ 1.26 ابزار جدیدی به نام virt-diff(1) در دسترس است.

"virt-ls" دارای چهار حالت خروجی است که با ترکیب‌های مختلف گزینه‌های -l و -R کنترل می‌شوند.

یک فهرست‌بندی ساده شبیه دستور معمول ls(1) است:

 $ virt-ls -d guest /
 bin
 boot
 [etc.]
با گزینهٔ -l (--long)، خروجی مشابه دستور "ls -l"
خواهد بود (به‌طور دقیق‌تر، مانند تابع "guestfs_ll").
$ virt-ls -l -d guest /
total 204
dr-xr-xr-x.   2 root root   4096 2009-08-25 19:06 bin
dr-xr-xr-x.   5 root root   3072 2009-08-25 19:06 boot
[etc.]

توجه داشته باشید هرچند این قابلیت برای نمایش یک دایرکتوری سودمند است، اما سعی نکنید این خروجی را در برنامه‌ای دیگر پردازش کنید. در عوض از «فهرست‌بندی تفصیلی بازگشتی (RECURSIVE LONG LISTING)» استفاده کنید.

با گزینهٔ -R (--recursive)، دستور "virt-ls" نام‌های فایل‌ها و دایرکتوری‌ها را به‌صورت بازگشتی فهرست می‌کند:

$ virt-ls -R -d guest /tmp
foo
foo/bar
[etc.]

برای تولید این خروجی، "virt-ls" تابع "guestfs_find0" را اجرا کرده و نویسه‌های "\0" را به "\n" تبدیل می‌کند.

استفادهٔ هم‌زمان از گزینه‌های -lR خروجی را به‌گونه‌ای تغییر می‌دهد که دایرکتوری‌ها را به‌طور بازگشتی، همراه با مشخصات آماری فایل‌ها و به‌صورت اختیاری ویژگی‌های دیگری مانند مجموع مقابله‌ای (checksum) و خصیصه‌های گسترش‌یافته (extended attributes) نمایش دهد.

بیشتر ویژگی‌های کاربردی "virt-ls" تنها هنگام استفاده از حالت -lR در دسترس هستند.

فیلدها معمولاً با فاصله از هم جدا می‌شوند. نام‌فایل‌ها درون گیومه قرار نمی‌گیرند، بنابراین نمی‌توانید از خروجی در برنامهٔ دیگری استفاده کنید (زیرا نام‌فایل‌ها می‌توانند حاوی فاصله و دیگر نویسه‌های ناامن باشند). اگر ماشین مهمان غیرقابل‌اعتماد باشد و فردی بداند که شما از "virt-ls" برای تحلیل آن استفاده می‌کنید، می‌تواند با ساختن نام‌فایل‌هایی حاوی نویسه‌های خط جدید (newline)، شما را فریب دهد. برای پردازش امن خروجی در برنامه‌ای دیگر، از گزینهٔ --csv (مقادیر جداشده با کاما) استفاده کنید.

توجه داشته باشید که این قالب خروجی کاملاً با دستور "ls -lR" متفاوت و بی‌ارتباط است.

$ virt-ls -lR -d guest /bin
d 0555       4096 /bin
- 0755        123 /bin/alsaunmute
- 0755      28328 /bin/arch
l 0777          4 /bin/awk -> gawk
- 0755      27216 /bin/basename
- 0755     943360 /bin/bash
[etc.]

این فیلدهای اولیه همواره نمایش داده می‌شوند:

نوع فایل، یکی از موارد زیر: "-" (فایل عادی)، "d" (دایرکتوری)، "c" (دستگاه نویسه‌ای)، "b" (دستگاه بلوکی)، "p" (پایپ نام‌گذاری‌شده)، "l" (پیوند نمادین)، "s" (سوکت) یا "u" (ناشناخته).
مجوزهای Unix، که به‌صورت یک عدد ۴ رقمی در مبنای هشت نمایش داده می‌شوند.
اندازهٔ فایل. این مقدار به بایت نشان داده می‌شود، مگر اینکه گزینهٔ -h یا --human-readable مشخص شده باشد که در آن صورت به‌صورت عددی خوانا برای انسان نمایش داده خواهد شد.
مسیر کامل فایل یا دایرکتوری.
تنها برای پیوندهای نمادین، مقصد پیوند.

در حالت -lR، گزینه‌های اضافی خط فرمان امکان نمایش فیلدهای بیشتری را فراهم می‌کنند.

با پرچم --uids، این فیلدهای اضافی پیش از مسیر نمایش داده می‌شوند:

شناسهٔ UID و GID مالک فایل (به‌صورت عددی نمایش داده می‌شوند). توجه داشته باشید این مقادیر تنها در بستر یک مهمان شبه‌یونیکس معنادار هستند.

با پرچم --times، این فیلدهای اضافی نمایش داده می‌شوند:

زمان آخرین دسترسی.
زمان آخرین تغییر محتوا.
زمان آخرین تغییر وضعیت.

فیلدهای زمانی به‌صورت تاریخ و ساعت رشته‌ای نمایش داده می‌شوند، مگر اینکه یکی از پرچم‌های --time-t، --time-relative یا --time-days داده شده باشد.

با پرچم --extra-stats، این فیلدهای اضافی نمایش داده می‌شوند:

دستگاهی که فایل را در بر دارد (به‌صورت major:minor نمایش می‌یابد). این ممکن است با دستگاه‌هایی که سیستم مهمان می‌شناسد مطابقت نداشته باشد.
شمارهٔ inode.
تعداد پیوندهای سخت (hard links).
برای فایل‌های ویژهٔ بلوکی و نویسه‌ای، دستگاه (به‌صورت major:minor نمایش می‌یابد).
تعداد بلوک‌های ۵۱۲ بایتی تخصیص‌یافته به فایل.

با پرچم --checksum، مجموع مقابله‌ای محتویات فایل نمایش داده می‌شود (تنها برای فایل‌های عادی). محاسبهٔ مجموع مقابله‌ای فایل‌ها می‌تواند زمان قابل‌توجهی ببرد..SH "گزینه‌ها (OPTIONS)"

نمایش راهنمای کوتاه.
افزودن file که باید یک تصویر دیسک از یک ماشین مجازی باشد. اگر ماشین مجازی دارای چندین دستگاه بلوکی است، باید همهٔ آن‌ها را با گزینه‌های -a جداگانه مشخص کنید.

قالب تصویر دیسک به‌طور خودکار تشخیص داده می‌شود. برای لغو این رفتار و تحمیل قالبی خاص، از گزینهٔ --format=.. استفاده کنید.

افزودن یک دیسک دوردست. بخش «ADDING REMOTE STORAGE» را در guestfish(1) ببینید.
این پارامتر اندازهٔ سکتور تصویر دیسک را تعیین می‌کند. این مقدار بر تمامی دیسک‌های بعدی که پس از این پارامتر به‌طور صریح اضافه می‌شوند، تأثیر می‌گذارد. استفاده از --blocksize بدون آرگومان، اندازهٔ سکتور دیسک را به مقدار پیش‌فرض که معمولاً ۵۱۲ بایت است بازمی‌گرداند. همچنین بخش «guestfs_add_drive_opts» را در guestfs(3) ببینید.
نمایش چِک‌سام روی محتویات فایل برای فایل‌های عادی. بدون آرگومان، پیش‌فرض استفاده از md5 است. با ارائهٔ یک آرگومان، می‌توانید نوع چک‌سام مورد استفاده را انتخاب کنید.

این گزینه تنها در حالت خروجی -lR اثر دارد. بخش «RECURSIVE LONG LISTING» را در بالا ببینید.

در صورت استفاده از libvirt، به URI ارائه‌شده متصل می‌شود. در صورت عدم ذکر، اتصال به هایپروایزر پیش‌فرض libvirt برقرار می‌شود.

اگر دستگاه‌های بلوکی مهمان را مستقیماً مشخص کنید (-a)، آن‌گاه libvirt اصلاً استفاده نخواهد شد.

نوشتن نتایج در قالب CSV (مقادیر جداشده با کاما). این قالب می‌تواند به‌راحتی در پایگاه‌های داده و صفحات گسترده وارد شود، اما بخش «NOTE ABOUT CSV FORMAT» را در ادامه بخوانید.
افزودن تمام دیسک‌ها از مهمان libvirt نام‌برده‌شده. می‌توان به‌جای نام‌ها از UUID دامنه استفاده کرد.
هنگام درخواست کلیدها و عبارات عبور، virt-ls معمولاً بازتاب ورودی را غیرفعال می‌کند تا نتوانید آنچه تایپ می‌کنید را ببینید. اگر نگران حملات Tempest نیستید و کس دیگری در اتاق نیست، می‌توانید این پرچم را تعیین کنید تا آنچه تایپ می‌کنید را ببینید.
نمایش آمارهای اضافی.

این گزینه تنها در حالت خروجی -lR اثر دارد. بخش «RECURSIVE LONG LISTING» را در بالا ببینید.

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

برای مثال:

virt-ls --format=raw -a disk.img /dir

قالب raw (بدون تشخیص خودکار) را برای disk.img تحمیل می‌کند.

virt-ls --format=raw -a disk.img --format -a another.img /dir

قالب raw (بدون تشخیص خودکار) را برای disk.img تحمیل کرده و برای another.img به حالت تشخیص خودکار بازمی‌گردد.

اگر تصاویر دیسک مهمانِ غیرقابل‌اعتمادی با قالب raw دارید، باید از این گزینه برای تعیین صریح قالب دیسک استفاده کنید. این کار از یک مشکل امنیتی احتمالی مرتبط با مهمان‌های مخرب جلوگیری می‌کند (CVE-2010-3851).

نمایش اندازهٔ فایل‌ها در قالبی خوانا برای انسان.

این گزینه تنها در حالت خروجی -lR اثر دارد. بخش «RECURSIVE LONG LISTING» را در بالا ببینید.

تعیین کلید برای LUKS، جهت بازگشایی خودکار دستگاه LUKS هنگام استفاده از بازرسی (inspection).
"NAME" نام دستگاه در libguestfs است (مانند "/dev/sda1"). عبارت "UUID" شناسهٔ یکتای دستگاه است. مقدار "all" به معنای امتحان کردن کلید روی تمامی دستگاه‌های رمزگذاری‌شده است.

از "KEY_STRING" ارائه‌شده به عنوان عبارت عبور استفاده می‌کند.

خواندن عبارت عبور از FILENAME.
تلاش برای قفل‌گشایی بدون عبارت عبور برای دستگاه از طریق شبکه به‌وسیلهٔ Clevis. لطفاً برای اطلاعات بیشتر دربارهٔ رمزگذاری دیسک وابسته به شبکه (NBDE) به بخش «ENCRYPTED DISKS» در guestfs(3) مراجعه کنید.

توجه داشته باشید که اگر چنین گزینه‌ای در خط فرمان داده شود، شبکهٔ کاربری QEMU به‌طور خودکار برای محیط libguestfs فعال خواهد شد.

خواندن پارامترهای کلید یا عبارت عبور از stdin. حالت پیش‌فرض تلاش برای خواندن عبارت عبور از کاربر با باز کردن /dev/tty است.

اگر چندین دستگاه رمزگذاری‌شده وجود دارد، ممکن است لازم باشد چندین کلید را از طریق stdin وارد کنید، هر کدام در یک خط مجزا.

پارتیشن یا حجم منطقیِ (logical volume) نام‌برده را روی نقطهٔ اتصال (mountpoint) داده‌شده سوار (mount) می‌کند.

اگر نقطهٔ اتصال ذکر نشود، مقدار پیش‌فرض / خواهد بود.

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

اگر نمی‌دانید یک ایمیج دیسک شامل چه سیستم‌های فایلی است، می‌توانید guestfish را بدون این گزینه اجرا کرده و پارتیشن‌ها، سیستم‌های فایل و LVهای موجود را فهرست کنید (دستورهای "list-partitions"، "list-filesystems" و "lvs" را ببینید)، یا از برنامهٔ virt-filesystems(1) استفاده نمایید.

بخش سوم (و به‌ندرت استفاده‌شده) از پارامتر mount، فهرستی از گزینه‌های اتصال است که برای سوار کردن سیستم فایل زیربنایی به کار می‌رود. اگر این بخش داده نشود، گزینه‌های اتصال یا یک رشتهٔ خالی و یا "ro" خواهند بود (دومی در صورتی است که پرچم --ro استفاده شده باشد). با تعیین گزینه‌های اتصال، این انتخاب پیش‌فرض لغو و بازنویسی می‌شود. احتمالاً تنها زمانی از این قابلیت استفاده می‌کنید که بخواهید در صورت پشتیبانی سیستم فایل، ACLها و/یا صفت‌های گسترش‌یافته (extended attributes) را فعال کنید:

-m /dev/sda1:/:acl,user_xattr

استفاده از این پرچم معادل استفاده از دستور "mount-options" است.

بخش چهارم پارامتر، درایور سیستم فایل مورد استفاده مانند "ext3" یا "ntfs" است. این بخش به‌ندرت نیاز می‌شود، اما در صورتی که چندین درایور برای یک سیستم فایل معتبر باشند (برای نمونه: "ext2" و "ext3")، یا اگر libguestfs نوع سیستم فایل را اشتباه شناسایی کند، می‌تواند مفید باشد.

انتخاب حالت. بدون هیچ‌یک از این گزینه‌ها، "virt-ls" یک فهرست ساده و تخت از فایل‌های موجود در دایرکتوری نام‌برده تولید می‌کند. بخش "SIMPLE LISTING" را ببینید.

دستور "virt-ls -l" یک «فهرست‌بندی بلند» تولید می‌کند که جزئیات بیشتری را نشان می‌دهد. بخش "LONG LISTING" را ببینید.

دستور "virt-ls -R" یک فهرست بازگشتی از فایل‌ها را با شروع از دایرکتوری نام‌برده تولید می‌کند. بخش "RECURSIVE LISTING" را ببینید.

دستور "virt-ls -lR" یک فهرست‌بندی بلندِ بازگشتی تولید می‌کند که تجزیه (parse) کردن آن ساده‌تر است. بخش "RECURSIVE LONG LISTING" را ببینید.

نمایش فیلدهای زمان.

این گزینه تنها در حالت خروجی -lR تأثیر دارد. بخش "RECURSIVE LONG LISTING" در بالا را ببینید.

نمایش فیلدهای زمان به صورت روزهای پیش از اکنون (اگر در آینده باشد، منفی است).

توجه داشته باشید که 0 در خروجی به معنای «حداکثر ۱ روز پیش از اکنون» است، یا اینکه عمر فایل بین ۰ تا ۸۶۳۹۹ ثانیه است.

این گزینه تنها در حالت خروجی -lR تأثیر دارد. بخش "RECURSIVE LONG LISTING" در بالا را ببینید.

نمایش فیلدهای زمان به صورت ثانیه‌های پیش از اکنون (اگر در آینده باشد، منفی است).

این گزینه تنها در حالت خروجی -lR تأثیر دارد. بخش "RECURSIVE LONG LISTING" در بالا را ببینید.

نمایش فیلدهای زمان به صورت ثانیه‌های سپری‌شده از مبدأ یونیکس (Unix epoch).

این گزینه تنها در حالت خروجی -lR تأثیر دارد. بخش "RECURSIVE LONG LISTING" در بالا را ببینید.

نمایش فیلدهای UID و GID.

این گزینه تنها در حالت خروجی -lR تأثیر دارد. بخش "RECURSIVE LONG LISTING" در بالا را ببینید.

فعال‌سازی پیام‌های پرگو (verbose) برای اشکال‌زدایی.
نمایش شمارهٔ نسخه و خروج.
فعال‌سازی ردگیری (tracing) فراخوانی‌های API مربوط به libguestfs..SH "آرگومان‌های خط فرمان به سبک قدیمی (OLD-STYLE COMMAND LINE ARGUMENTS)" نسخه‌های پیشین virt-ls به شما اجازه می‌دادند که بنویسید یا:
virt-ls disk.img [disk.img ...] /dir

یا

virt-ls guestname /dir

در حالی که در این نسخه باید به ترتیب از -a یا -d استفاده کنید تا از حالت گیج‌کننده‌ای که در آن ممکن است یک تصویر دیسک هم‌نام با یک ماشین مهمان باشد، جلوگیری شود.

جهت سازگاری، سبک قدیمی همچنان پشتیبانی می‌شود.

مقادیر جداشده با کاما (CSV) قالبی فریبنده است. به نظر می‌رسد که تجزیه آن باید آسان باشد، اما مسلماً تجزیه آن آسان نیست.

باور غلط: فقط فیلدها را در محل کاماها جدا کنید. واقعیت: این روش به طور مطمئن کار نمی‌کند. این مثال دارای دو ستون است:

"foo,bar",baz

باور غلط: فایل را خط به خط بخوانید. واقعیت: این روش به طور مطمئن کار نمی‌کند. این مثال دارای یک سطر است:

"foo
bar",baz

برای اسکریپت‌های پوسته، از "csvtool" استفاده کنید (https://github.com/Chris00/ocaml-csv که در توزیع‌های اصلی لینوکس نیز بسته‌بندی شده است).

برای زبان‌های دیگر، از یک کتابخانه پردازش CSV استفاده کنید (مانند "Text::CSV" برای Perl یا کتابخانه توکار csv در Python).

اکثر نرم‌افزارهای صفحه‌گسترده و پایگاه‌های داده می‌توانند CSV را مستقیماً درون‌ریزی کنند.

این برنامه در صورت موفقیت 0، و در صورت بروز خطا مقداری غیر صفر برمی‌گرداند.

guestfs(3), guestfish(1), virt-cat(1), virt-copy-out(1), virt-diff(1), virt-tar-out(1), http://libguestfs.org.

Richard W.M. Jones http://people.redhat.com/~rjones

Copyright (C) 2009-2025 Red Hat Inc.

این برنامه یک نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت شرایط «مجوز عمومی همگانی گنو» (GNU General Public License) همان‌طور که توسط بنیاد نرم‌افزارهای آزاد منتشر شده است، بازتوزیع کرده یا تغییر دهید؛ چه نسخه ۲ مجوز یا (به انتخاب خودتان) هر نسخه بعدی آن.

این برنامه به این امید توزیع شده است که مفید واقع شود، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابل فروش بودن یا مناسب بودن برای یک هدف خاص. برای جزئیات بیشتر به مجوز عمومی همگانی گنو مراجعه کنید.

شما باید به همراه این برنامه نسخه‌ای از مجوز عمومی همگانی گنو را دریافت کرده باشید؛ در غیر این صورت، به نشانی زیر مکاتبه کنید: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA..SH "گزارش باگ‌ها (BUGS)" برای دریافت فهرستی از باگ‌های مربوط به libguestfs، از این پیوند استفاده کنید: https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools

برای گزارش یک باگ جدید در libguestfs، از این پیوند استفاده کنید: https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools

هنگام گزارش باگ، لطفاً موارد زیر را ارائه دهید:

  • نسخهٔ libguestfs.
  • محل دریافت libguestfs (مثلاً از کدام توزیع لینوکس، کامپایل‌شده از کد منبع و غیره).
  • باگ را به‌دقت شرح دهید و روشی برای بازتولید آن ارائه دهید.
  • دستور libguestfs-test-tool(1) را اجرا کرده و خروجی کامل و ویرایش‌نشدهٔ آن را در گزارش باگ قرار دهید.
2026-07-11 guestfs-tools-1.56.0