To extract specific archive members, give their exact member names as arguments, as printed by --list (-t). If you had mistakenly deleted one of the files you had placed in the archive `collection.tar' earlier (say, `blues'), you can extract it from the archive without changing the archive's structure. It will be identical to the original file `blues' that you deleted. @FIXME{check this; will the times, permissions, owner, etc be the same, also?}
First, make sure you are in the `practice' directory, and list the files in the directory. Now, delete the file, `blues', and list the files in the directory again.
You can now extract the member `blues' from the archive file `collection.tar' like this:
$ tar --extract --file=collection.tar blues
If you list the files in the directory again, you will see that the file
`blues' has been restored, with its original permissions, creation
times, and owner. @FIXME{This is only accidentally true, but not in
general. In most cases, one has to be root for restoring the owner, and
use a special option for restoring permissions. Here, it just happens
that the restoring user is also the owner of the archived members, and
that the current umask
is compatible with original permissions.}
(These parameters will be identical to those which
the file had when you originally placed it in the archive; any changes
you may have made before deleting the file from the file system,
however, will not have been made to the archive member.) The
archive file, `collection.tar', is the same as it was before you
extracted `blues'. You can confirm this by running tar
with
--list (-t).
@FIXME{we hope this will change:}Remember that as with other operations, specifying the exact member name is important. tar --extract --file=bfiles.tar birds will fail, because there is no member named `birds'. To extract the member named `./birds', you must specify tar --extract --file=bfiles.tar ./birds. To find the exact member names of the members of an archive, use --list (-t) (see section How to List Archives).
If you give the --verbose (-v) option, then --extract (--get, -x) will print the names of the archive members as it extracts them.
Go to the first, previous, next, last section, table of contents.