You can archive a directory by specifying its directory name as a
file name argument to tar
. The files in the directory will be
archived relative to the working directory, and the directory will be
re-created along with its contents when the archive is extracted.
To archive a directory, first move to its superior directory. If you have followed the previous instructions in this tutorial, you should type:
$ cd .. $
This will put you into the directory which contains `practice', i.e. your home directory. Once in the superior directory, you can specify the subdirectory, `practice', as a file name argument. To store `practice' in the new archive file `music.tar', type:
$ tar --create --verbose --file=music.tar practice
tar
should output:
practice/ practice/blues practice/folk practice/jazz practice/collection.tar
Note that the archive thus created is not in the subdirectory
`practice', but rather in the current working directory--the
directory from which tar
was invoked. Before trying to archive a
directory from its superior directory, you should make sure you have
write access to the superior directory itself, not only the directory
you are trying archive with tar
. For example, you will probably
not be able to store your home directory in an archive by invoking
tar
from the root directory; See section Absolute File Names. (Note
also that `collection.tar', the original archive file, has itself
been archived. tar
will accept any file as a file to be
archived, regardless of its content. When `music.tar' is
extracted, the archive file `collection.tar' will be re-written
into the file system).
If you give tar
a command such as
$ tar --create --file=foo.tar .
tar
will report `tar: foo.tar is the archive; not dumped'.
This happens because tar
creates the archive `foo.tar' in
the current directory before putting any files into it. Then, when
tar
attempts to add all the files in the directory `.' to
the archive, it notices that the file `foo.tar' is the same as the
archive, and skips it. (It makes no sense to put an archive into
itself.) GNU tar
will continue in this case, and create the
archive normally, except for the exclusion of that one file.
(Please note: Other versions of tar
are not so clever;
they will enter an infinite loop when this happens, so you should not
depend on this behavior unless you are certain you are running GNU
tar
. @FIXME{bob doesn't like this sentence, since he does it
all the time, and we've been doing it in the editing passes for this
manual: In general, make sure that the archive is not inside a
directory being dumped.})
Go to the first, previous, next, last section, table of contents.