mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-22 07:03:38 +00:00
Only in end-user messages and documentation. This change was done mostly mechanically using the Perl script attached below. I also changed don't -> don’t etc and made some other simple fixes. See also: https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html ---------- #!/usr/bin/perl -w use strict; use Locale::PO; my $re = qr{'([-\w%.,=?*/]+)'}; my %files = (); foreach my $filename ("po/libguestfs.pot", "po-docs/libguestfs-docs.pot") { my $poref = Locale::PO->load_file_asarray($filename); foreach my $po (@$poref) { if ($po->msgid =~ $re) { my @refs = split /\s+/, $po->reference; foreach my $ref (@refs) { my ($file, $lineno) = split /:/, $ref, 2; $file =~ s{^\.\./}{}; if (exists $files{$file}) { push @{$files{$file}}, $lineno; } else { $files{$file} = [$lineno]; } } } } } foreach my $file (sort keys %files) { unless (-w $file) { warn "warning: $file is probably generated\n"; # have to edit generator next; } my @lines = sort { $a <=> $b } @{$files{$file}}; #print "editing $file at lines ", join (", ", @lines), " ...\n"; open FILE, "<$file" or die "$file: $!"; my @all = (); push @all, $_ while <FILE>; close FILE; my $ext = $file; $ext =~ s/^.*\.//; foreach (@lines) { # Don't mess with verbatim sections in POD files. next if $ext eq "pod" && $all[$_-1] =~ m/^ /; unless ($all[$_-1] =~ $re) { # this can happen for multi-line strings, have to edit it # by hand warn "warning: $file:$_ does not contain expected content\n"; next; } $all[$_-1] =~ s/$re/‘$1’/g; } rename "$file", "$file.bak"; open FILE, ">$file" or die "$file: $!"; print FILE $_ for @all; close FILE; my $mode = (stat ("$file.bak"))[2]; chmod ($mode & 0777, "$file"); }
404 lines
10 KiB
Plaintext
404 lines
10 KiB
Plaintext
=head1 NAME
|
||
|
||
virt-filesystems - List filesystems, partitions, block devices, LVM in a virtual machine or disk image
|
||
|
||
=head1 SYNOPSIS
|
||
|
||
virt-filesystems [--options] -d domname
|
||
|
||
virt-filesystems [--options] -a disk.img [-a disk.img ...]
|
||
|
||
=head1 DESCRIPTION
|
||
|
||
This tool allows you to discover filesystems, partitions, logical
|
||
volumes, and their sizes in a disk image or virtual machine. It is a
|
||
replacement for L<virt-list-filesystems(1)> and
|
||
L<virt-list-partitions(1)>.
|
||
|
||
One use for this tool is from shell scripts to iterate over all
|
||
filesystems from a disk image:
|
||
|
||
for fs in $(virt-filesystems -a disk.img); do
|
||
# ...
|
||
done
|
||
|
||
Another use is to list partitions before using another tool to modify
|
||
those partitions (such as L<virt-resize(1)>). If you are curious
|
||
about what an unknown disk image contains, use this tool along with
|
||
L<virt-inspector(1)>.
|
||
|
||
Various command line options control what this program displays. You
|
||
need to give either I<-a> or I<-d> options to specify the disk image
|
||
or libvirt guest respectively. If you just specify that then the
|
||
program shows filesystems found, one per line, like this:
|
||
|
||
$ virt-filesystems -a disk.img
|
||
/dev/sda1
|
||
/dev/vg_guest/lv_root
|
||
|
||
If you add I<-l> or I<--long> then the output includes extra
|
||
information:
|
||
|
||
$ virt-filesystems -a disk.img -l
|
||
Name Type VFS Label Size
|
||
/dev/sda1 filesystem ext4 boot 524288000
|
||
/dev/vg_guest/lv_root filesystem ext4 root 10212081664
|
||
|
||
If you add I<--extra> then non-mountable (swap, unknown) filesystems
|
||
are shown as well:
|
||
|
||
$ virt-filesystems -a disk.img --extra
|
||
/dev/sda1
|
||
/dev/vg_guest/lv_root
|
||
/dev/vg_guest/lv_swap
|
||
/dev/vg_guest/lv_data
|
||
|
||
If you add I<--partitions> then partitions are shown instead of filesystems:
|
||
|
||
$ virt-filesystems -a disk.img --partitions
|
||
/dev/sda1
|
||
/dev/sda2
|
||
|
||
Similarly you can use I<--logical-volumes>, I<--volume-groups>,
|
||
I<--physical-volumes>, I<--block-devices> to list those items.
|
||
|
||
You can use these options in combination as well (if you want a
|
||
combination including filesystems, you have to add I<--filesystems>).
|
||
Notice that some items fall into several categories (eg. F</dev/sda1>
|
||
might be both a partition and a filesystem). These items are listed
|
||
several times. To get a list which includes absolutely everything
|
||
that virt-filesystems knows about, use the I<--all> option.
|
||
|
||
UUIDs (because they are quite long) are not shown by default. Add the
|
||
I<--uuid> option to display device and filesystem UUIDs in the long
|
||
output.
|
||
|
||
I<--all --long --uuid> is a useful combination to display all possible
|
||
information about everything.
|
||
|
||
$ virt-filesystems -a win.img --all --long --uuid -h
|
||
Name Type VFS Label Size Parent UUID
|
||
/dev/sda1 filesystem ntfs System Reserved 100M - F81C92571C92112C
|
||
/dev/sda2 filesystem ntfs - 20G - F2E8996AE8992E3B
|
||
/dev/sda1 partition - - 100M /dev/sda -
|
||
/dev/sda2 partition - - 20G /dev/sda -
|
||
/dev/sda device - - 20G - -
|
||
|
||
For machine-readable output, use I<--csv> to get Comma-Separated Values.
|
||
|
||
=head1 OPTIONS
|
||
|
||
=over 4
|
||
|
||
=item B<--help>
|
||
|
||
Display brief help.
|
||
|
||
=item B<-a> file
|
||
|
||
=item B<--add> file
|
||
|
||
Add I<file> which should be a disk image from a virtual machine. If
|
||
the virtual machine has multiple block devices, you must supply all of
|
||
them with separate I<-a> options.
|
||
|
||
The format of the disk image is auto-detected. To override this and
|
||
force a particular format use the I<--format=..> option.
|
||
|
||
=item B<-a URI>
|
||
|
||
=item B<--add URI>
|
||
|
||
Add a remote disk. See L<guestfish(1)/ADDING REMOTE STORAGE>.
|
||
|
||
=item B<--all>
|
||
|
||
Display everything. This is currently the same as specifying these
|
||
options: I<--filesystems>, I<--extra>, I<--partitions>,
|
||
I<--block-devices>, I<--logical-volumes>, I<--volume-groups>,
|
||
I<--physical-volumes>. (More may be added to this list in future).
|
||
|
||
See also I<--long>.
|
||
|
||
=item B<--blkdevs>
|
||
|
||
=item B<--block-devices>
|
||
|
||
Display block devices.
|
||
|
||
=item B<-c> URI
|
||
|
||
=item B<--connect> URI
|
||
|
||
If using libvirt, connect to the given I<URI>. If omitted, then we
|
||
connect to the default libvirt hypervisor.
|
||
|
||
If you specify guest block devices directly (I<-a>), then libvirt is
|
||
not used at all.
|
||
|
||
=item B<--csv>
|
||
|
||
Write out the results in CSV format (comma-separated values). This
|
||
format can be imported easily into databases and spreadsheets, but
|
||
read L</NOTE ABOUT CSV FORMAT> below.
|
||
|
||
=item B<-d> guest
|
||
|
||
=item B<--domain> guest
|
||
|
||
Add all the disks from the named libvirt guest. Domain UUIDs can be
|
||
used instead of names.
|
||
|
||
=item B<--echo-keys>
|
||
|
||
When prompting for keys and passphrases, virt-filesystems normally
|
||
turns echoing off so you cannot see what you are typing. If you are
|
||
not worried about Tempest attacks and there is no one else in the room
|
||
you can specify this flag to see what you are typing.
|
||
|
||
=item B<--extra>
|
||
|
||
This causes filesystems that are not ordinary, mountable filesystems
|
||
to be displayed. This category includes swapspace, and filesystems
|
||
that are empty or contain unknown data.
|
||
|
||
This option implies I<--filesystems>.
|
||
|
||
=item B<--filesystems>
|
||
|
||
Display mountable filesystems. If no display option was selected then
|
||
this option is implied.
|
||
|
||
With I<--extra>, non-mountable filesystems are shown too.
|
||
|
||
=item B<--format=raw|qcow2|..>
|
||
|
||
=item B<--format>
|
||
|
||
The default for the I<-a> option is to auto-detect the format of the
|
||
disk image. Using this forces the disk format for I<-a> options which
|
||
follow on the command line. Using I<--format> with no argument
|
||
switches back to auto-detection for subsequent I<-a> options.
|
||
|
||
For example:
|
||
|
||
virt-filesystems --format=raw -a disk.img
|
||
|
||
forces raw format (no auto-detection) for F<disk.img>.
|
||
|
||
virt-filesystems --format=raw -a disk.img --format -a another.img
|
||
|
||
forces raw format (no auto-detection) for F<disk.img> and reverts to
|
||
auto-detection for F<another.img>.
|
||
|
||
If you have untrusted raw-format guest disk images, you should use
|
||
this option to specify the disk format. This avoids a possible
|
||
security problem with malicious guests (CVE-2010-3851).
|
||
|
||
=item B<-h>
|
||
|
||
=item B<--human-readable>
|
||
|
||
In I<--long> mode, display sizes in human-readable format.
|
||
|
||
=item B<--keys-from-stdin>
|
||
|
||
Read key or passphrase parameters from stdin. The default is
|
||
to try to read passphrases from the user by opening F</dev/tty>.
|
||
|
||
=item B<-l>
|
||
|
||
=item B<--long>
|
||
|
||
Display extra columns of data ("long format").
|
||
|
||
A title row is added unless you also specify I<--no-title>.
|
||
|
||
The extra columns displayed depend on what output you select, and the
|
||
ordering of columns may change in future versions. Use the title row,
|
||
I<--csv> output and/or L<csvtool(1)> to match columns to data in
|
||
external programs.
|
||
|
||
Use I<-h> if you want sizes to be displayed in human-readable format.
|
||
The default is to show raw numbers of I<bytes>.
|
||
|
||
Use I<--uuid> to display UUIDs too.
|
||
|
||
=item B<--lvs>
|
||
|
||
=item B<--logvols>
|
||
|
||
=item B<--logical-volumes>
|
||
|
||
Display LVM logical volumes. In this mode, these are displayed
|
||
irrespective of whether the LVs contain filesystems.
|
||
|
||
=item B<--no-title>
|
||
|
||
In I<--long> mode, don’t add a title row.
|
||
|
||
Note that the order of the columns is not fixed, and may change in
|
||
future versions of virt-filesystems, so using this option may give you
|
||
unexpected surprises.
|
||
|
||
=item B<--parts>
|
||
|
||
=item B<--partitions>
|
||
|
||
Display partitions. In this mode, these are displayed
|
||
irrespective of whether the partitions contain filesystems.
|
||
|
||
=item B<--pvs>
|
||
|
||
=item B<--physvols>
|
||
|
||
=item B<--physical-volumes>
|
||
|
||
Display LVM physical volumes.
|
||
|
||
=item B<--uuid>
|
||
|
||
=item B<--uuids>
|
||
|
||
In I<--long> mode, display UUIDs as well.
|
||
|
||
=item B<-v>
|
||
|
||
=item B<--verbose>
|
||
|
||
Enable verbose messages for debugging.
|
||
|
||
=item B<-V>
|
||
|
||
=item B<--version>
|
||
|
||
Display version number and exit.
|
||
|
||
=item B<--vgs>
|
||
|
||
=item B<--volgroups>
|
||
|
||
=item B<--volume-groups>
|
||
|
||
Display LVM volume groups.
|
||
|
||
=item B<-x>
|
||
|
||
Enable tracing of libguestfs API calls.
|
||
|
||
=back
|
||
|
||
=head1 COLUMNS
|
||
|
||
Note that columns in the output are subject to reordering and change
|
||
in future versions of this tool.
|
||
|
||
=over 4
|
||
|
||
=item B<Name>
|
||
|
||
The filesystem, partition, block device or LVM name.
|
||
|
||
For device and partition names these are displayed as canonical
|
||
libguestfs names, so that for example F</dev/sda2> is the second
|
||
partition on the first device.
|
||
|
||
If the I<--long> option is B<not> specified, then only the name column
|
||
is shown in the output.
|
||
|
||
=item B<Type>
|
||
|
||
The object type, for example C<filesystem>, C<lv>, C<device> etc.
|
||
|
||
=item B<VFS>
|
||
|
||
If there is a filesystem, then this column displays the filesystem
|
||
type if one could be detected, eg. C<ext4>.
|
||
|
||
=item B<Label>
|
||
|
||
If the object has a label (used for identifying and mounting
|
||
filesystems) then this column contains the label.
|
||
|
||
=item B<MBR>
|
||
|
||
The partition type byte, displayed as a two digit hexadecimal number.
|
||
A comprehensive list of partition types can be found here:
|
||
L<http://www.win.tue.nl/~aeb/partitions/partition_types-1.html>
|
||
|
||
This is only applicable for DOS (MBR) partitions.
|
||
|
||
=item B<Size>
|
||
|
||
The size of the object in bytes. If the I<--human> option is used
|
||
then the size is displayed in a human-readable form.
|
||
|
||
=item B<Parent>
|
||
|
||
The parent column records the parent relationship between objects.
|
||
|
||
For example, if the object is a partition, then this column contains
|
||
the name of the containing device. If the object is a logical volume,
|
||
then this column is the name of the volume group.
|
||
|
||
If there is more than one parent, then this column is (internal to the
|
||
column) a comma-separated list, eg. C</dev/sda,/dev/sdb>.
|
||
|
||
=item B<UUID>
|
||
|
||
If the object has a UUID (used for identifying and mounting
|
||
filesystems and block devices) then this column contains the UUID as a
|
||
string.
|
||
|
||
The UUID is only displayed if the I<--uuid> option is given.
|
||
|
||
=back
|
||
|
||
=head1 NOTE ABOUT CSV FORMAT
|
||
|
||
Comma-separated values (CSV) is a deceptive format. It I<seems> like
|
||
it should be easy to parse, but it is definitely not easy to parse.
|
||
|
||
Myth: Just split fields at commas. Reality: This does I<not> work
|
||
reliably. This example has two columns:
|
||
|
||
"foo,bar",baz
|
||
|
||
Myth: Read the file one line at a time. Reality: This does I<not>
|
||
work reliably. This example has one row:
|
||
|
||
"foo
|
||
bar",baz
|
||
|
||
For shell scripts, use C<csvtool> (L<https://github.com/Chris00/ocaml-csv>
|
||
also packaged in major Linux distributions).
|
||
|
||
For other languages, use a CSV processing library (eg. C<Text::CSV>
|
||
for Perl or Python’s built-in csv library).
|
||
|
||
Most spreadsheets and databases can import CSV directly.
|
||
|
||
=head1 EXIT STATUS
|
||
|
||
This program returns 0 if successful, or non-zero if there was an
|
||
error.
|
||
|
||
=head1 SEE ALSO
|
||
|
||
L<guestfs(3)>,
|
||
L<guestfish(1)>,
|
||
L<virt-cat(1)>,
|
||
L<virt-df(1)>,
|
||
L<virt-list-filesystems(1)>,
|
||
L<virt-list-partitions(1)>,
|
||
L<csvtool(1)>,
|
||
L<http://libguestfs.org/>.
|
||
|
||
=head1 AUTHOR
|
||
|
||
Richard W.M. Jones L<http://people.redhat.com/~rjones/>
|
||
|
||
=head1 COPYRIGHT
|
||
|
||
Copyright (C) 2010-2012 Red Hat Inc.
|