virt-ls —
програма
для показу
списку
файлів у
віртуальній
машині
virt-ls [--параметри] -d назва_домену каталог [каталог ...]
virt-ls [--параметри] -a диск.img [-a диск.img ...] каталог [каталог ...]
Старий
стиль:
virt-ls [--параметри] назва_домену каталог
virt-ls [--параметри] диск.img [диск.img ...] каталог
"virt-ls"
виводить
списки
назв
файлів,
розмірів
файлів,
контрольних
сум,
розширених
атрибутів
та інші
дані з
віртуальної
машини або
образу
диска.
Можна
вказати
декілька
назв
каталогів.
У цьому
випадку
виведені
дані для
кожного з
них буде
об'єднано.
Щоб
отримати
список
вмісту
каталогів
з
гостьової
системи libvirt,
скористайтеся
параметром
-d для
задання
назви
гостьової
системи.
Для роботи
з образом
диска
скористайтеся
параметром
-a.
"virt-ls" може
створювати
багато
простих
списків
файлів.
Складніші
списки
можна
створити
за
допомогою
guestfish(1) або
програми,
яка
безпосередньо
використовує
програмний
інтерфейс
guestfs(3).
Отримати
список
всіх
файлів і
каталогів
у
віртуальній
машині:
virt-ls -R -d guest /
Показати
список
всіх
програм з setuid
або setgid у
віртуальній
машині Linux:
virt-ls -lR -d guest / | grep '^- [42]'
Показати
список
всіх
каталогів
з
відкритим
для всіх
доступом
на запис у
віртуальній
машині Linux:
virt-ls -lR -d guest / | grep '^d ...7'
Показати
список
всіх
сокетів
доменів Unix у
віртуальній
машині Linux:
virt-ls -lR -d guest / | grep '^s'
Показати
список
усіх
звичайних
файлів,
назви яких
завершуються
на «.png»:
virt-ls -lR -d guest / | grep -i '^-.*\.png$'
Щоб
переглянути
список
файлів у
домашніх
каталогах,
розмір
яких
перевищує 10
МБ:
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
[тощо]
З
параметром
-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
[тощо]
Зауважте,
що хоча
такий
список
зручний
для
перегляду
вмісту
каталогу,
не варто
обробляти
його за
допомогою
іншої
програми.
Для
обробки
іншими
програмами
слід
скористатися
варіантом
"РЕКУРСИВНИЙ
ДОВГИЙ
СПИСОК".
Із
параметром
-R (
--recursive) "virt-ls"
виводить
список
назв
файлів і
каталогів
рекурсивно:
$ virt-ls -R -d guest /tmp
foo
foo/bar
[тощо]
Для
створення
такого
списку "virt-ls"
викликає
функцію
"guestfs_find0" і
перетворює
символи "\0"
на "\n".
Використання
параметрів
-lR разом
змінює
виведені
дані так, що
вміст
каталогів
показується
рекурсивно,
із даними
щодо
файлів, а
також, якщо
використано
відповідні
параметри,
іншими
даними,
зокрема
контрольними
сумами та
розширеними
атрибутами.
Доступ до
більшості
цікавих
можливостей
"virt-ls" можна
отримати
лише у
режимі
-lR.
Зазвичай,
поля
відокремлюються
пробілами.
До назв
файлів
не
додаються
лапки. Отже,
ви не
зможете
скористатися
виведеними
даними у
іншій
програмі
(оскільки у
назвах
файлів
можуть
міститися
пробіли та
інші
нестандартні
символи).
Якщо до
гостьової
системи
мають
доступ
сторонні
люди і
відомо, що
ви
використовуєте
"virt-ls" для
аналізу
вмісту
гостьової
системи,
зловмисники
можуть
створити
файли зі
спеціально
сконструйованими
назвами та
вбудованими
до назв
символами
розриву
рядка. Щоб
виведені
дані можна
було
безпечно
обробити у
сторонній
програмі,
скористайтеся
параметром
--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
[тощо]
Ці основні
поля буде
показано
завжди:
- тип
- Тип
файла, одне
з таких
значень: "-"
(звичайний
файл), "d"
(каталог), "c"
(символьний
пристрій),
"b"
(блоковий
пристрій),
"p"
(іменований
канал), "l"
(символічне
посилання),
"s" (сокет)
або "u"
(невідомо).
- права
доступу
- Права
доступу Unix,
показані у
форматі
вісімкового
числа із 4
цифр.
- розмір
- Розмір
файла. Його
буде
показано у
байтах,
якщо не
використано
параметр -h
або --human-readable.
Якщо такий
параметр
використано,
дані буде
показано у
зручному
для
читанні
вигляді.
- шлях
- Шлях до
файла або
каталогу
повністю.
- посилання
- Лише для
символічних
посилань,
призначення
посилання.
У режимі
-lR
додаткові
параметри
командного
рядка
уможливлюють
показ
додаткових
полів.
З
прапорцем
--uids ці
додаткові
поля буде
показано
до шляху:
- uid
- gid
- UID та GID
власника
файла (буде
показано у
числовій
формі).
Зауважте,
що ці дані
мають сенс
лише у
контексті
Unix-подібної
гостьової
системи.
Із
прапорцем
--times буде
показано
такі
додаткові
поля:
- atime
- Час
останнього
доступу.
- mtime
- Час
останнього
внесення
змін.
- ctime
- Час
останньої
зміни
стану.
Вміст
полів дат і
часу буде
показано у
форматі
рядків,
якщо не
вказано
одного з
таких
параметрів:
--time-t,
--time-relative або
--time-days.
Із
прапорцем
--extra-stats буде
показано
такі
додаткові
поля:
- пристрій
- Пристрій
на якому
міститься
файл (буде
показано у
форматі
основний:підлеглий).
Запис
пристрою
може не
збігатися
із записом
пристрою,
який
відомий
гостьовій
системі.
- inode
- Номер inode.
- nlink
- Кількість
жорстких
посилань.
- rdev
- Для
блоковий і
символьних
спеціальних
файлів
пристрій
(буде
показано у
форматі
основний:підлеглий).
- блоки
- Кількість
512-байтових
блоків,
виділених
під файл.
Якщо
використано
прапорець
--checksum,
програма
покаже
контрольну
суму
вмісту
файла (лише
для
звичайних
файлів).
Обчислення
контрольної
суми може
бути
доволі
тривалою
дією.
- --help
- Показати
коротку
довідку.
-
-a файл
-
--add файл
- Додати
файл, який
має бути
образом
диска з
віртуальної
машини.
Якщо у
віртуальній
машині
декілька
блокових
пристроїв,
вам слід
вказати їх
усі за
допомогою
окремих
записів
параметра
-a.
Формат
образу
диска
визначається
автоматично.
Щоб
перевизначити
його і
примусово
використати
певний
формат,
скористайтеся
параметром
--format=...
- -a
адреса
- --add
адреса
- Додати
віддалений
диск. Див.
"ДОДАВАННЯ
ВІДДАЛЕНОГО
СХОВИЩА" in
guestfish(1).
- --blocksize=512
- --blocksize=4096
- --blocksize
- This parameter sets the sector size of the disk image. It
affects all explicitly added subsequent disks after this parameter. Using
--blocksize with no argument switches the disk sector size to the
default value which is usually 512 bytes. See also
"guestfs_add_drive_opts" in guestfs(3).
- --checksum
- --checksum=crc|md5|sha1|sha224|sha256|sha384|sha512
- Вивести
контрольну
суму
вмісту
звичайного
файла. Без
аргументу
для
створення
контрольної
суми буде
використано
md5. За
допомогою
аргументу
ви можете
визначити
потрібний
вам тип
контрольної
суми.
Цей
параметр
працюватиме
лише у
режимі
виведення
-lR. Див.
"РЕКУРСИВНИЙ
ДОВГИЙ
СПИСОК"
вище.
-
-c
адреса
-
--connect
адреса
- Якщо
використовується
libvirt,
встановити
з’єднання
з вказаним
URI. Якщо
пропущено,
з’єднання
буде
встановлено
з типовим
гіпервізором
libvirt.
Якщо
вказати
блокові
пристрої
гостьових
систем
безпосередньо
( -a), libvirt не буде
використовуватися
взагалі.
- --csv
- Вивести
результати
до формату
CSV (записів,
відокремлених
комами).
Дані у
цьому
форматі
можна
просто
імпортувати
до баз
даних і
електронних
таблиць.
Втім, варто
ознайомитися
із
розділом
"НОТАТКА
ЩОДО
ФОРМАТУ CSV",
наведеним
нижче.
-
-d гість
-
--domain
гість
- Додати
всі диски з
вказаної
гостьової
системи libvirt. UUID
доменів
можна
використовувати
замість
назв.
- --echo-keys
- Типово,
якщо virt-ls
попросить
вас ввести
ключ або
пароль,
програма
не
відтворюватиме
введені
символи на
екрані.
Якщо ви не
боїтеся
TEMPEST-нападів,
або у вашій
кімнаті
нікого,
окрім вас,
немає, ви
можете
скористатися
цим
прапорцем,
щоб бачити,
які саме
символи ви
вводите.
- --extra-stats
- Показати
додаткові
дані.
Цей
параметр
працюватиме
лише у
режимі
виведення
-lR. Див.
"РЕКУРСИВНИЙ
ДОВГИЙ
СПИСОК"
вище.
- --format=raw|qcow2|..
- --format
- Типовим
значенням
для
параметра
-a є
автоматичне
визначення
формату
образу
диска.
Використання
цього
параметра
примусово
визначає
значення
параметрів
-a формату
диска у
наступному
рядку
команди.
Використання
параметра
--format без
аргументу
перемикає
програму у
режим
автоматичного
визначення
у
наступних
параметрах
-a.
Приклад:
virt-ls --format=raw -a диск.img /каталог
примусове
встановлення
формату
без
обробки
(без
автоматичного
визначення)
для disk.img.
virt-ls --format=raw -a диск.img --format -a інший_диск.img /каталог
примусове
встановлення
формату
без
обробки
(без
автоматичного
визначення)
для diskimg і
повернення
до
автоматичного
визначення
для another.img.
Якщо ви
користуєтеся
ненадійними
образами
гостьових
систем у
необробленому
форматі,
вам слід
скористатися
цим
параметром
для
визначення
формату
диска.
Таким
чином
можна
уникнути
можливих
проблем з
захистом
для
сформованих
зловмисниками
гостьових
систем (CVE-2010-3851).
- -h
- --human-readable
- Показати
розміри
файлів у
зручному
для
читання
форматі.
Цей
параметр
працюватиме
лише у
режимі
виведення
-lR. Див.
"РЕКУРСИВНИЙ
ДОВГИЙ
СПИСОК"
вище.
-
--key SELECTOR
- Specify a key for LUKS, to automatically open a LUKS device
when using the inspection. "ID" can be either the libguestfs
device name, or the UUID of the LUKS device.
-
--key "ID":key:KEY_STRING
- Use the specified "KEY_STRING" as
passphrase.
-
--key "ID":file:FILENAME
- Read the passphrase from FILENAME.
- --keys-from-stdin
- Read key or passphrase parameters from stdin. The default
is to try to read passphrases from the user by opening /dev/tty.
If there are multiple encrypted devices then you may need to supply multiple
keys on stdin, one per line.
-
-m
пристрій[:точка_монтування[:параметри[:тип_файлової_системи]]]
-
--mount
пристрій[:точка_монтування[:параметри[:тип_файлової_системи]]]
- Змонтувати
названий
розділ або
логічний
том до
вказаної
точки
монтування.
Якщо точку
монтування
не вказано,
типовим
значенням
є /.
Визначення
точки
монтування
вимикає
інспектування
гостьової
системи і
призводить
до
монтування
її
кореневої
системи та
усіх її
точок
монтування.
Тому вам
слід
забезпечити
монтування
усіх точок
монтування,
потрібних
для роботи
із файлами,
назви яких
вказано як
аргументи.
Якщо ви не
знаєте, які
саме
файлові
системи
містяться
у образі
диска, ви
можете або
запустити
guestfish без
цього
параметра
і
ознайомитися
зі списком
доступних
розділів,
файлових
систем та
логічних
томів (див.
команди
"list-partitions", "list-filesystems" і
"lvs"), або
скористатися
програмою
virt-filesystems(1).
Третьою (і
нечасто
використовуваною)
частиною
параметра
монтування
є список
параметрів
монтування,
які
використовуються
для того,
щоб
змонтувати
підлеглу
файлову
систему.
Якщо такий
список не
буде
задано,
параметрами
монтування
вважатиметься
або
порожній
рядок, або
"ro" (другий
варіант
використовується,
якщо
використано
прапорець
--ro).
Заданням
параметрів
монтування
ви
перевизначаєте
типовий
варіант.
Ймовірно,
єдиним
випадком,
коли вам
може
знадобитися
це, є
випадок
вмикання
списків
керування
доступом (ACL)
і/або
розширених
атрибутів,
якщо у
файловій
системі
передбачено
їхню
підтримку:
-m /dev/sda1:/:acl,user_xattr
Використання
цього
прапорця є
еквівалентним
до
використання
команди
"mount-options".
Четвертою
частиною
параметра
є назва
драйвера
файлової
системи,
якою слід
скористатися,
зокрема "ext3"
або "ntfs". У
визначенні
цієї
частини
параметра
рідко
виникає
потреба,
але вона
може бути
корисною,
якщо для
файлової
системи
можна
скористатися
декількома
драйверами
(приклад:
"ext2" і "ext3"), або
libguestfs
визначає
файлову
систему
помилково.
- -l
- --long
- -R
- --recursive
- Вибір
режиму.
Якщо не
буде
вказано
жодного з
варіантів,
"virt-ls"
створює
простий
плоский
список
файлів у
вказаному
каталозі.
Див.
"ПРОСТИЙ
СПИСОК".
"virt-ls -l"
створює
«довгий
список», у
якому
більше
подробиць.
Див.
"ДОВГИЙ
СПИСОК".
"virt-ls -R"
створює
рекурсивний
список
файлів,
починаючи
з
вказаного
каталогу.
Див.
"РЕКУРСИВНИЙ
СПИСОК".
"virt-ls -lR"
створює
рекурсивні
довгі
списки, які
простіше
обробляти.
Див.
"РЕКУРСИВНИЙ
ДОВГИЙ
СПИСОК".
- --times
- Показати
поля часу.
Цей
параметр
працюватиме
лише у
режимі
виведення
-lR. Див.
"РЕКУРСИВНИЙ
ДОВГИЙ
СПИСОК"
вище.
- --time-days
- Показувати
поля часу у
форматі
днів до
поточного
(від’ємні
значення
для днів у
майбутньому).
Зауважте,
що 0 у
виведених
даних
означає
«менше 1
одного дня
до
поточного
моменту»
або «вік
файла — від
0 до 86399
секунд».
Цей
параметр
працюватиме
лише у
режимі
виведення
-lR. Див.
"РЕКУРСИВНИЙ
ДОВГИЙ
СПИСОК"
вище.
- --time-relative
- Показувати
поля часу у
форматі
секунд до
поточного
моменту
(від’ємні
значення
для часу у
майбутньому).
Цей
параметр
працюватиме
лише у
режимі
виведення
-lR. Див.
"РЕКУРСИВНИЙ
ДОВГИЙ
СПИСОК"
вище.
- --time-t
- Показувати
поля часу у
форматі
секунд з
моменту
початку
епохи UNIX.
Цей
параметр
працюватиме
лише у
режимі
виведення
-lR. Див.
"РЕКУРСИВНИЙ
ДОВГИЙ
СПИСОК"
вище.
- --uids
- Показати
поля UID і GID.
Цей
параметр
працюватиме
лише у
режимі
виведення
-lR. Див.
"РЕКУРСИВНИЙ
ДОВГИЙ
СПИСОК"
вище.
- -v
- --verbose
- Увімкнути
докладний
показ
повідомлень
з метою
діагностики.
- -V
- --version
- Показати
дані щодо
версії і
завершити
роботу.
- -x
- Увімкнути
трасування
викликів
програмного
інтерфейсу
libguestfs.
У
попередніх
версіях virt-ls
можна було
використовувати
або
virt-ls диск.img [диск.img ...] /каталог
або
virt-ls назва_гостьової_системи /каталог
тоді як у
цій версії
вам слід
скористатися
-a або
-d,
відповідно,
щоб
уникнути
помилок у
випадках,
коли назва
образу
диска може
збігатися
із назвою
гостьової
системи.
З
міркувань
зворотної
сумісності
передбачено
підтримку
запису
параметрів
у
застарілому
форматі.
Формат
значень,
які
відокремлено
комами (CSV), є
оманливо
простим.
Може
здатися,
що його
просто
обробляти,
але
насправді
це зовсім
не так.
Міф:
достатньо
розділити
поля за
комами.
Реальність:
поділ
комами
не
працює у
надійний
спосіб. Ось
приклад із
двома
стовпчиками:
"foo,bar",baz
Міф: слід
читати
файл за
рядками,
один рядок
за одну
операцію
читання.
Реальність:
читання за
рядками
не працює
у надійний
спосіб. Ось
приклад із
одним
рядком:
"foo
bar",baz
Для
скриптів
командної
оболонки
скористайтеся
"csvtool" (
https://github.com/Chris00/ocaml-csv
також є
серед
пакунків
основних
дистрибутивів
Linux).
Для інших
мов
програмування
використовуйте
бібліотеку
для
обробки
даних 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-2020 Red Hat Inc.
To get a list of bugs against libguestfs, use this link:
https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools
To report a new bug against libguestfs, use this link:
https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools
When reporting a bug, please supply:
- •
- The version of libguestfs.
- •
- Where you got libguestfs (eg. which Linux distro, compiled
from source, etc)
- •
- Describe the bug accurately and give a way to reproduce
it.
- •
- Run libguestfs-test-tool(1) and paste the
complete, unedited output into the bug report.