Added 'zero' command to wipe partition tables and superblocks.
[libguestfs.git] / guestfish-actions.pod
1 =head2 add-cdrom | cdrom
2
3  add-cdrom filename
4
5 This function adds a virtual CD-ROM disk image to the guest.
6
7 This is equivalent to the qemu parameter C<-cdrom filename>.
8
9 =head2 add-drive | add
10
11  add-drive filename
12
13 This function adds a virtual machine disk image C<filename> to the
14 guest.  The first time you call this function, the disk appears as IDE
15 disk 0 (C</dev/sda>) in the guest, the second time as C</dev/sdb>, and
16 so on.
17
18 You don't necessarily need to be root when using libguestfs.  However
19 you obviously do need sufficient permissions to access the filename
20 for whatever operations you want to perform (ie. read access if you
21 just want to read the image or write access if you want to modify the
22 image).
23
24 This is equivalent to the qemu parameter C<-drive file=filename>.
25
26 =head2 aug-close
27
28  aug-close
29
30 Close the current Augeas handle and free up any resources
31 used by it.  After calling this, you have to call
32 C<aug-init> again before you can use any other
33 Augeas functions.
34
35 =head2 aug-defnode
36
37  aug-defnode name expr val
38
39 Defines a variable C<name> whose value is the result of
40 evaluating C<expr>.
41
42 If C<expr> evaluates to an empty nodeset, a node is created,
43 equivalent to calling C<aug-set> C<expr>, C<value>.
44 C<name> will be the nodeset containing that single node.
45
46 On success this returns a pair containing the
47 number of nodes in the nodeset, and a boolean flag
48 if a node was created.
49
50 =head2 aug-defvar
51
52  aug-defvar name expr
53
54 Defines an Augeas variable C<name> whose value is the result
55 of evaluating C<expr>.  If C<expr> is NULL, then C<name> is
56 undefined.
57
58 On success this returns the number of nodes in C<expr>, or
59 C<0> if C<expr> evaluates to something which is not a nodeset.
60
61 =head2 aug-get
62
63  aug-get path
64
65 Look up the value associated with C<path>.  If C<path>
66 matches exactly one node, the C<value> is returned.
67
68 =head2 aug-init
69
70  aug-init root flags
71
72 Create a new Augeas handle for editing configuration files.
73 If there was any previous Augeas handle associated with this
74 guestfs session, then it is closed.
75
76 You must call this before using any other C<aug-*>
77 commands.
78
79 C<root> is the filesystem root.  C<root> must not be NULL,
80 use C</> instead.
81
82 The flags are the same as the flags defined in
83 E<lt>augeas.hE<gt>, the logical I<or> of the following
84 integers:
85
86 =over 4
87
88 =item C<AUG_SAVE_BACKUP> = 1
89
90 Keep the original file with a C<.augsave> extension.
91
92 =item C<AUG_SAVE_NEWFILE> = 2
93
94 Save changes into a file with extension C<.augnew>, and
95 do not overwrite original.  Overrides C<AUG_SAVE_BACKUP>.
96
97 =item C<AUG_TYPE_CHECK> = 4
98
99 Typecheck lenses (can be expensive).
100
101 =item C<AUG_NO_STDINC> = 8
102
103 Do not use standard load path for modules.
104
105 =item C<AUG_SAVE_NOOP> = 16
106
107 Make save a no-op, just record what would have been changed.
108
109 =item C<AUG_NO_LOAD> = 32
110
111 Do not load the tree in C<aug-init>.
112
113 =back
114
115 To close the handle, you can call C<aug-close>.
116
117 To find out more about Augeas, see L<http://augeas.net/>.
118
119 =head2 aug-insert
120
121  aug-insert path label true|false
122
123 Create a new sibling C<label> for C<path>, inserting it into
124 the tree before or after C<path> (depending on the boolean
125 flag C<before>).
126
127 C<path> must match exactly one existing node in the tree, and
128 C<label> must be a label, ie. not contain C</>, C<*> or end
129 with a bracketed index C<[N]>.
130
131 =head2 aug-load
132
133  aug-load
134
135 Load files into the tree.
136
137 See C<aug_load> in the Augeas documentation for the full gory
138 details.
139
140 =head2 aug-ls
141
142  aug-ls path
143
144 This is just a shortcut for listing C<aug-match>
145 C<path/*> and sorting the resulting nodes into alphabetical order.
146
147 =head2 aug-match
148
149  aug-match path
150
151 Returns a list of paths which match the path expression C<path>.
152 The returned paths are sufficiently qualified so that they match
153 exactly one node in the current tree.
154
155 =head2 aug-mv
156
157  aug-mv src dest
158
159 Move the node C<src> to C<dest>.  C<src> must match exactly
160 one node.  C<dest> is overwritten if it exists.
161
162 =head2 aug-rm
163
164  aug-rm path
165
166 Remove C<path> and all of its children.
167
168 On success this returns the number of entries which were removed.
169
170 =head2 aug-save
171
172  aug-save
173
174 This writes all pending changes to disk.
175
176 The flags which were passed to C<aug-init> affect exactly
177 how files are saved.
178
179 =head2 aug-set
180
181  aug-set path val
182
183 Set the value associated with C<path> to C<value>.
184
185 =head2 blockdev-flushbufs
186
187  blockdev-flushbufs device
188
189 This tells the kernel to flush internal buffers associated
190 with C<device>.
191
192 This uses the L<blockdev(8)> command.
193
194 =head2 blockdev-getbsz
195
196  blockdev-getbsz device
197
198 This returns the block size of a device.
199
200 (Note this is different from both I<size in blocks> and
201 I<filesystem block size>).
202
203 This uses the L<blockdev(8)> command.
204
205 =head2 blockdev-getro
206
207  blockdev-getro device
208
209 Returns a boolean indicating if the block device is read-only
210 (true if read-only, false if not).
211
212 This uses the L<blockdev(8)> command.
213
214 =head2 blockdev-getsize64
215
216  blockdev-getsize64 device
217
218 This returns the size of the device in bytes.
219
220 See also C<blockdev-getsz>.
221
222 This uses the L<blockdev(8)> command.
223
224 =head2 blockdev-getss
225
226  blockdev-getss device
227
228 This returns the size of sectors on a block device.
229 Usually 512, but can be larger for modern devices.
230
231 (Note, this is not the size in sectors, use C<blockdev-getsz>
232 for that).
233
234 This uses the L<blockdev(8)> command.
235
236 =head2 blockdev-getsz
237
238  blockdev-getsz device
239
240 This returns the size of the device in units of 512-byte sectors
241 (even if the sectorsize isn't 512 bytes ... weird).
242
243 See also C<blockdev-getss> for the real sector size of
244 the device, and C<blockdev-getsize64> for the more
245 useful I<size in bytes>.
246
247 This uses the L<blockdev(8)> command.
248
249 =head2 blockdev-rereadpt
250
251  blockdev-rereadpt device
252
253 Reread the partition table on C<device>.
254
255 This uses the L<blockdev(8)> command.
256
257 =head2 blockdev-setbsz
258
259  blockdev-setbsz device blocksize
260
261 This sets the block size of a device.
262
263 (Note this is different from both I<size in blocks> and
264 I<filesystem block size>).
265
266 This uses the L<blockdev(8)> command.
267
268 =head2 blockdev-setro
269
270  blockdev-setro device
271
272 Sets the block device named C<device> to read-only.
273
274 This uses the L<blockdev(8)> command.
275
276 =head2 blockdev-setrw
277
278  blockdev-setrw device
279
280 Sets the block device named C<device> to read-write.
281
282 This uses the L<blockdev(8)> command.
283
284 =head2 cat
285
286  cat path
287
288 Return the contents of the file named C<path>.
289
290 Note that this function cannot correctly handle binary files
291 (specifically, files containing C<\0> character which is treated
292 as end of string).  For those you need to use the C<download>
293 function which has a more complex interface.
294
295 Because of the message protocol, there is a transfer limit 
296 of somewhere between 2MB and 4MB.  To transfer large files you should use
297 FTP.
298
299 =head2 checksum
300
301  checksum csumtype path
302
303 This call computes the MD5, SHAx or CRC checksum of the
304 file named C<path>.
305
306 The type of checksum to compute is given by the C<csumtype>
307 parameter which must have one of the following values:
308
309 =over 4
310
311 =item C<crc>
312
313 Compute the cyclic redundancy check (CRC) specified by POSIX
314 for the C<cksum> command.
315
316 =item C<md5>
317
318 Compute the MD5 hash (using the C<md5sum> program).
319
320 =item C<sha1>
321
322 Compute the SHA1 hash (using the C<sha1sum> program).
323
324 =item C<sha224>
325
326 Compute the SHA224 hash (using the C<sha224sum> program).
327
328 =item C<sha256>
329
330 Compute the SHA256 hash (using the C<sha256sum> program).
331
332 =item C<sha384>
333
334 Compute the SHA384 hash (using the C<sha384sum> program).
335
336 =item C<sha512>
337
338 Compute the SHA512 hash (using the C<sha512sum> program).
339
340 =back
341
342 The checksum is returned as a printable string.
343
344 =head2 chmod
345
346  chmod mode path
347
348 Change the mode (permissions) of C<path> to C<mode>.  Only
349 numeric modes are supported.
350
351 =head2 chown
352
353  chown owner group path
354
355 Change the file owner to C<owner> and group to C<group>.
356
357 Only numeric uid and gid are supported.  If you want to use
358 names, you will need to locate and parse the password file
359 yourself (Augeas support makes this relatively easy).
360
361 =head2 command
362
363  command 'arguments ...'
364
365 This call runs a command from the guest filesystem.  The
366 filesystem must be mounted, and must contain a compatible
367 operating system (ie. something Linux, with the same
368 or compatible processor architecture).
369
370 The single parameter is an argv-style list of arguments.
371 The first element is the name of the program to run.
372 Subsequent elements are parameters.  The list must be
373 non-empty (ie. must contain a program name).
374
375 The C<$PATH> environment variable will contain at least
376 C</usr/bin> and C</bin>.  If you require a program from
377 another location, you should provide the full path in the
378 first parameter.
379
380 Shared libraries and data files required by the program
381 must be available on filesystems which are mounted in the
382 correct places.  It is the caller's responsibility to ensure
383 all filesystems that are needed are mounted at the right
384 locations.
385
386 =head2 command-lines
387
388  command-lines 'arguments ...'
389
390 This is the same as C<command>, but splits the
391 result into a list of lines.
392
393 =head2 config
394
395  config qemuparam qemuvalue
396
397 This can be used to add arbitrary qemu command line parameters
398 of the form C<-param value>.  Actually it's not quite arbitrary - we
399 prevent you from setting some parameters which would interfere with
400 parameters that we use.
401
402 The first character of C<param> string must be a C<-> (dash).
403
404 C<value> can be NULL.
405
406 =head2 debug
407
408  debug subcmd 'extraargs ...'
409
410 The C<debug> command exposes some internals of
411 C<guestfsd> (the guestfs daemon) that runs inside the
412 qemu subprocess.
413
414 There is no comprehensive help for this command.  You have
415 to look at the file C<daemon/debug.c> in the libguestfs source
416 to find out what you can do.
417
418 =head2 download
419
420  download remotefilename (filename|-)
421
422 Download file C<remotefilename> and save it as C<filename>
423 on the local machine.
424
425 C<filename> can also be a named pipe.
426
427 See also C<upload>, C<cat>.
428
429 Use C<-> instead of a filename to read/write from stdin/stdout.
430
431 =head2 exists
432
433  exists path
434
435 This returns C<true> if and only if there is a file, directory
436 (or anything) with the given C<path> name.
437
438 See also C<is-file>, C<is-dir>, C<stat>.
439
440 =head2 file
441
442  file path
443
444 This call uses the standard L<file(1)> command to determine
445 the type or contents of the file.  This also works on devices,
446 for example to find out whether a partition contains a filesystem.
447
448 The exact command which runs is C<file -bsL path>.  Note in
449 particular that the filename is not prepended to the output
450 (the C<-b> option).
451
452 =head2 fsck
453
454  fsck fstype device
455
456 This runs the filesystem checker (fsck) on C<device> which
457 should have filesystem type C<fstype>.
458
459 The returned integer is the status.  See L<fsck(8)> for the
460 list of status codes from C<fsck>, and note that multiple
461 status codes can be summed together.
462
463 It is entirely equivalent to running C<fsck -a -t fstype device>.
464 Note that checking or repairing NTFS volumes is not supported
465 (by linux-ntfs).
466
467 =head2 get-autosync
468
469  get-autosync
470
471 Get the autosync flag.
472
473 =head2 get-e2label
474
475  get-e2label device
476
477 This returns the ext2/3/4 filesystem label of the filesystem on
478 C<device>.
479
480 =head2 get-e2uuid
481
482  get-e2uuid device
483
484 This returns the ext2/3/4 filesystem UUID of the filesystem on
485 C<device>.
486
487 =head2 get-path
488
489  get-path
490
491 Return the current search path.
492
493 This is always non-NULL.  If it wasn't set already, then this will
494 return the default path.
495
496 =head2 get-qemu
497
498  get-qemu
499
500 Return the current qemu binary.
501
502 This is always non-NULL.  If it wasn't set already, then this will
503 return the default qemu binary name.
504
505 =head2 get-state
506
507  get-state
508
509 This returns the current state as an opaque integer.  This is
510 only useful for printing debug and internal error messages.
511
512 For more information on states, see L<guestfs(3)>.
513
514 =head2 get-verbose
515
516  get-verbose
517
518 This returns the verbose messages flag.
519
520 =head2 is-busy
521
522  is-busy
523
524 This returns true iff this handle is busy processing a command
525 (in the C<BUSY> state).
526
527 For more information on states, see L<guestfs(3)>.
528
529 =head2 is-config
530
531  is-config
532
533 This returns true iff this handle is being configured
534 (in the C<CONFIG> state).
535
536 For more information on states, see L<guestfs(3)>.
537
538 =head2 is-dir
539
540  is-dir path
541
542 This returns C<true> if and only if there is a directory
543 with the given C<path> name.  Note that it returns false for
544 other objects like files.
545
546 See also C<stat>.
547
548 =head2 is-file
549
550  is-file path
551
552 This returns C<true> if and only if there is a file
553 with the given C<path> name.  Note that it returns false for
554 other objects like directories.
555
556 See also C<stat>.
557
558 =head2 is-launching
559
560  is-launching
561
562 This returns true iff this handle is launching the subprocess
563 (in the C<LAUNCHING> state).
564
565 For more information on states, see L<guestfs(3)>.
566
567 =head2 is-ready
568
569  is-ready
570
571 This returns true iff this handle is ready to accept commands
572 (in the C<READY> state).
573
574 For more information on states, see L<guestfs(3)>.
575
576 =head2 kill-subprocess
577
578  kill-subprocess
579
580 This kills the qemu subprocess.  You should never need to call this.
581
582 =head2 launch | run
583
584  launch
585
586 Internally libguestfs is implemented by running a virtual machine
587 using L<qemu(1)>.
588
589 You should call this after configuring the handle
590 (eg. adding drives) but before performing any actions.
591
592 =head2 list-devices
593
594  list-devices
595
596 List all the block devices.
597
598 The full block device names are returned, eg. C</dev/sda>
599
600 =head2 list-partitions
601
602  list-partitions
603
604 List all the partitions detected on all block devices.
605
606 The full partition device names are returned, eg. C</dev/sda1>
607
608 This does not return logical volumes.  For that you will need to
609 call C<lvs>.
610
611 =head2 ll
612
613  ll directory
614
615 List the files in C<directory> (relative to the root directory,
616 there is no cwd) in the format of 'ls -la'.
617
618 This command is mostly useful for interactive sessions.  It
619 is I<not> intended that you try to parse the output string.
620
621 =head2 ls
622
623  ls directory
624
625 List the files in C<directory> (relative to the root directory,
626 there is no cwd).  The '.' and '..' entries are not returned, but
627 hidden files are shown.
628
629 This command is mostly useful for interactive sessions.  Programs
630 should probably use C<readdir> instead.
631
632 =head2 lstat
633
634  lstat path
635
636 Returns file information for the given C<path>.
637
638 This is the same as C<stat> except that if C<path>
639 is a symbolic link, then the link is stat-ed, not the file it
640 refers to.
641
642 This is the same as the C<lstat(2)> system call.
643
644 =head2 lvcreate
645
646  lvcreate logvol volgroup mbytes
647
648 This creates an LVM volume group called C<logvol>
649 on the volume group C<volgroup>, with C<size> megabytes.
650
651 =head2 lvm-remove-all
652
653  lvm-remove-all
654
655 This command removes all LVM logical volumes, volume groups
656 and physical volumes.
657
658 B<This command is dangerous.  Without careful use you
659 can easily destroy all your data>.
660
661 =head2 lvremove
662
663  lvremove device
664
665 Remove an LVM logical volume C<device>, where C<device> is
666 the path to the LV, such as C</dev/VG/LV>.
667
668 You can also remove all LVs in a volume group by specifying
669 the VG name, C</dev/VG>.
670
671 =head2 lvs
672
673  lvs
674
675 List all the logical volumes detected.  This is the equivalent
676 of the L<lvs(8)> command.
677
678 This returns a list of the logical volume device names
679 (eg. C</dev/VolGroup00/LogVol00>).
680
681 See also C<lvs-full>.
682
683 =head2 lvs-full
684
685  lvs-full
686
687 List all the logical volumes detected.  This is the equivalent
688 of the L<lvs(8)> command.  The "full" version includes all fields.
689
690 =head2 mkdir
691
692  mkdir path
693
694 Create a directory named C<path>.
695
696 =head2 mkdir-p
697
698  mkdir-p path
699
700 Create a directory named C<path>, creating any parent directories
701 as necessary.  This is like the C<mkdir -p> shell command.
702
703 =head2 mkfs
704
705  mkfs fstype device
706
707 This creates a filesystem on C<device> (usually a partition
708 of LVM logical volume).  The filesystem type is C<fstype>, for
709 example C<ext3>.
710
711 =head2 mount
712
713  mount device mountpoint
714
715 Mount a guest disk at a position in the filesystem.  Block devices
716 are named C</dev/sda>, C</dev/sdb> and so on, as they were added to
717 the guest.  If those block devices contain partitions, they will have
718 the usual names (eg. C</dev/sda1>).  Also LVM C</dev/VG/LV>-style
719 names can be used.
720
721 The rules are the same as for L<mount(2)>:  A filesystem must
722 first be mounted on C</> before others can be mounted.  Other
723 filesystems can only be mounted on directories which already
724 exist.
725
726 The mounted filesystem is writable, if we have sufficient permissions
727 on the underlying device.
728
729 The filesystem options C<sync> and C<noatime> are set with this
730 call, in order to improve reliability.
731
732 =head2 mount-options
733
734  mount-options options device mountpoint
735
736 This is the same as the C<mount> command, but it
737 allows you to set the mount options as for the
738 L<mount(8)> I<-o> flag.
739
740 =head2 mount-ro
741
742  mount-ro device mountpoint
743
744 This is the same as the C<mount> command, but it
745 mounts the filesystem with the read-only (I<-o ro>) flag.
746
747 =head2 mount-vfs
748
749  mount-vfs options vfstype device mountpoint
750
751 This is the same as the C<mount> command, but it
752 allows you to set both the mount options and the vfstype
753 as for the L<mount(8)> I<-o> and I<-t> flags.
754
755 =head2 mounts
756
757  mounts
758
759 This returns the list of currently mounted filesystems.  It returns
760 the list of devices (eg. C</dev/sda1>, C</dev/VG/LV>).
761
762 Some internal mounts are not shown.
763
764 =head2 pvcreate
765
766  pvcreate device
767
768 This creates an LVM physical volume on the named C<device>,
769 where C<device> should usually be a partition name such
770 as C</dev/sda1>.
771
772 =head2 pvremove
773
774  pvremove device
775
776 This wipes a physical volume C<device> so that LVM will no longer
777 recognise it.
778
779 The implementation uses the C<pvremove> command which refuses to
780 wipe physical volumes that contain any volume groups, so you have
781 to remove those first.
782
783 =head2 pvs
784
785  pvs
786
787 List all the physical volumes detected.  This is the equivalent
788 of the L<pvs(8)> command.
789
790 This returns a list of just the device names that contain
791 PVs (eg. C</dev/sda2>).
792
793 See also C<pvs-full>.
794
795 =head2 pvs-full
796
797  pvs-full
798
799 List all the physical volumes detected.  This is the equivalent
800 of the L<pvs(8)> command.  The "full" version includes all fields.
801
802 =head2 read-lines
803
804  read-lines path
805
806 Return the contents of the file named C<path>.
807
808 The file contents are returned as a list of lines.  Trailing
809 C<LF> and C<CRLF> character sequences are I<not> returned.
810
811 Note that this function cannot correctly handle binary files
812 (specifically, files containing C<\0> character which is treated
813 as end of line).  For those you need to use the C<read-file>
814 function which has a more complex interface.
815
816 =head2 rm
817
818  rm path
819
820 Remove the single file C<path>.
821
822 =head2 rm-rf
823
824  rm-rf path
825
826 Remove the file or directory C<path>, recursively removing the
827 contents if its a directory.  This is like the C<rm -rf> shell
828 command.
829
830 =head2 rmdir
831
832  rmdir path
833
834 Remove the single directory C<path>.
835
836 =head2 set-autosync | autosync
837
838  set-autosync true|false
839
840 If C<autosync> is true, this enables autosync.  Libguestfs will make a
841 best effort attempt to run C<umount-all> followed by
842 C<sync> when the handle is closed
843 (also if the program exits without closing handles).
844
845 This is disabled by default (except in guestfish where it is
846 enabled by default).
847
848 =head2 set-e2label
849
850  set-e2label device label
851
852 This sets the ext2/3/4 filesystem label of the filesystem on
853 C<device> to C<label>.  Filesystem labels are limited to
854 16 characters.
855
856 You can use either C<tune2fs-l> or C<get-e2label>
857 to return the existing label on a filesystem.
858
859 =head2 set-e2uuid
860
861  set-e2uuid device uuid
862
863 This sets the ext2/3/4 filesystem UUID of the filesystem on
864 C<device> to C<uuid>.  The format of the UUID and alternatives
865 such as C<clear>, C<random> and C<time> are described in the
866 L<tune2fs(8)> manpage.
867
868 You can use either C<tune2fs-l> or C<get-e2uuid>
869 to return the existing UUID of a filesystem.
870
871 =head2 set-path | path
872
873  set-path path
874
875 Set the path that libguestfs searches for kernel and initrd.img.
876
877 The default is C<$libdir/guestfs> unless overridden by setting
878 C<LIBGUESTFS_PATH> environment variable.
879
880 The string C<path> is stashed in the libguestfs handle, so the caller
881 must make sure it remains valid for the lifetime of the handle.
882
883 Setting C<path> to C<NULL> restores the default path.
884
885 =head2 set-qemu | qemu
886
887  set-qemu qemu
888
889 Set the qemu binary that we will use.
890
891 The default is chosen when the library was compiled by the
892 configure script.
893
894 You can also override this by setting the C<LIBGUESTFS_QEMU>
895 environment variable.
896
897 The string C<qemu> is stashed in the libguestfs handle, so the caller
898 must make sure it remains valid for the lifetime of the handle.
899
900 Setting C<qemu> to C<NULL> restores the default qemu binary.
901
902 =head2 set-verbose | verbose
903
904  set-verbose true|false
905
906 If C<verbose> is true, this turns on verbose messages (to C<stderr>).
907
908 Verbose messages are disabled unless the environment variable
909 C<LIBGUESTFS_DEBUG> is defined and set to C<1>.
910
911 =head2 sfdisk
912
913  sfdisk device cyls heads sectors 'lines ...'
914
915 This is a direct interface to the L<sfdisk(8)> program for creating
916 partitions on block devices.
917
918 C<device> should be a block device, for example C</dev/sda>.
919
920 C<cyls>, C<heads> and C<sectors> are the number of cylinders, heads
921 and sectors on the device, which are passed directly to sfdisk as
922 the I<-C>, I<-H> and I<-S> parameters.  If you pass C<0> for any
923 of these, then the corresponding parameter is omitted.  Usually for
924 'large' disks, you can just pass C<0> for these, but for small
925 (floppy-sized) disks, sfdisk (or rather, the kernel) cannot work
926 out the right geometry and you will need to tell it.
927
928 C<lines> is a list of lines that we feed to C<sfdisk>.  For more
929 information refer to the L<sfdisk(8)> manpage.
930
931 To create a single partition occupying the whole disk, you would
932 pass C<lines> as a single element list, when the single element being
933 the string C<,> (comma).
934
935 B<This command is dangerous.  Without careful use you
936 can easily destroy all your data>.
937
938 =head2 stat
939
940  stat path
941
942 Returns file information for the given C<path>.
943
944 This is the same as the C<stat(2)> system call.
945
946 =head2 statvfs
947
948  statvfs path
949
950 Returns file system statistics for any mounted file system.
951 C<path> should be a file or directory in the mounted file system
952 (typically it is the mount point itself, but it doesn't need to be).
953
954 This is the same as the C<statvfs(2)> system call.
955
956 =head2 sync
957
958  sync
959
960 This syncs the disk, so that any writes are flushed through to the
961 underlying disk image.
962
963 You should always call this if you have modified a disk image, before
964 closing the handle.
965
966 =head2 tar-in
967
968  tar-in (tarfile|-) directory
969
970 This command uploads and unpacks local file C<tarfile> (an
971 I<uncompressed> tar file) into C<directory>.
972
973 To upload a compressed tarball, use C<tgz-in>.
974
975 Use C<-> instead of a filename to read/write from stdin/stdout.
976
977 =head2 tar-out
978
979  tar-out directory (tarfile|-)
980
981 This command packs the contents of C<directory> and downloads
982 it to local file C<tarfile>.
983
984 To download a compressed tarball, use C<tgz-out>.
985
986 Use C<-> instead of a filename to read/write from stdin/stdout.
987
988 =head2 tgz-in
989
990  tgz-in (tarball|-) directory
991
992 This command uploads and unpacks local file C<tarball> (a
993 I<gzip compressed> tar file) into C<directory>.
994
995 To upload an uncompressed tarball, use C<tar-in>.
996
997 Use C<-> instead of a filename to read/write from stdin/stdout.
998
999 =head2 tgz-out
1000
1001  tgz-out directory (tarball|-)
1002
1003 This command packs the contents of C<directory> and downloads
1004 it to local file C<tarball>.
1005
1006 To download an uncompressed tarball, use C<tar-out>.
1007
1008 Use C<-> instead of a filename to read/write from stdin/stdout.
1009
1010 =head2 touch
1011
1012  touch path
1013
1014 Touch acts like the L<touch(1)> command.  It can be used to
1015 update the timestamps on a file, or, if the file does not exist,
1016 to create a new zero-length file.
1017
1018 =head2 tune2fs-l
1019
1020  tune2fs-l device
1021
1022 This returns the contents of the ext2, ext3 or ext4 filesystem
1023 superblock on C<device>.
1024
1025 It is the same as running C<tune2fs -l device>.  See L<tune2fs(8)>
1026 manpage for more details.  The list of fields returned isn't
1027 clearly defined, and depends on both the version of C<tune2fs>
1028 that libguestfs was built against, and the filesystem itself.
1029
1030 =head2 umount | unmount
1031
1032  umount pathordevice
1033
1034 This unmounts the given filesystem.  The filesystem may be
1035 specified either by its mountpoint (path) or the device which
1036 contains the filesystem.
1037
1038 =head2 umount-all | unmount-all
1039
1040  umount-all
1041
1042 This unmounts all mounted filesystems.
1043
1044 Some internal mounts are not unmounted by this call.
1045
1046 =head2 upload
1047
1048  upload (filename|-) remotefilename
1049
1050 Upload local file C<filename> to C<remotefilename> on the
1051 filesystem.
1052
1053 C<filename> can also be a named pipe.
1054
1055 See also C<download>.
1056
1057 Use C<-> instead of a filename to read/write from stdin/stdout.
1058
1059 =head2 vgcreate
1060
1061  vgcreate volgroup 'physvols ...'
1062
1063 This creates an LVM volume group called C<volgroup>
1064 from the non-empty list of physical volumes C<physvols>.
1065
1066 =head2 vgremove
1067
1068  vgremove vgname
1069
1070 Remove an LVM volume group C<vgname>, (for example C<VG>).
1071
1072 This also forcibly removes all logical volumes in the volume
1073 group (if any).
1074
1075 =head2 vgs
1076
1077  vgs
1078
1079 List all the volumes groups detected.  This is the equivalent
1080 of the L<vgs(8)> command.
1081
1082 This returns a list of just the volume group names that were
1083 detected (eg. C<VolGroup00>).
1084
1085 See also C<vgs-full>.
1086
1087 =head2 vgs-full
1088
1089  vgs-full
1090
1091 List all the volumes groups detected.  This is the equivalent
1092 of the L<vgs(8)> command.  The "full" version includes all fields.
1093
1094 =head2 write-file
1095
1096  write-file path content size
1097
1098 This call creates a file called C<path>.  The contents of the
1099 file is the string C<content> (which can contain any 8 bit data),
1100 with length C<size>.
1101
1102 As a special case, if C<size> is C<0>
1103 then the length is calculated using C<strlen> (so in this case
1104 the content cannot contain embedded ASCII NULs).
1105
1106 Because of the message protocol, there is a transfer limit 
1107 of somewhere between 2MB and 4MB.  To transfer large files you should use
1108 FTP.
1109
1110 =head2 zero
1111
1112  zero device
1113
1114 This command writes zeroes over the first few blocks of C<device>.
1115
1116 How many blocks are zeroed isn't specified (but it's I<not> enough
1117 to securely wipe the device).  It should be sufficient to remove
1118 any partition tables, filesystem superblocks and so on.
1119