(tar)Compare bis


Next: Using Compare from the Superior Directory bis Prev: Creating an Archive of a Subdirectory bis Up: How to Create Archives

Comparing Files in an Archive with Files in the File System
-----------------------------------------------------------

     *(This message will disappear, once this node revised.)*

   While the `--list' (`-t') operation with the `--verbose' (`-v')
option specified is useful in keeping files in the archive current with
files in the file system (by allowing the user to compare size and
modification dates), it is simpler to have `tar' itself compare file
attributes and report back on file differences.  To do so, use the
`--compare' (`-d') or `--diff' operation.

   The `--compare' (`-d') operation, as its name implies, causes `tar'
to compare files and directories in the archive with their counterparts
(files of the same name) in the file system, and report back
differences in file size, mode, owner and modification date.  When
performing the `--compare' (`-d') operation, `tar' acts only on files
actually in the archive--it will ignore files in the active file system
that do not exist in the archive.  If `tar' with `--compare' (`-d')
specified is given, as a file name argument, the name of a file that
does not exist in the archive, it will return an error message.

   To compare the files in the practice directory with their
counterparts in the archive file `records', in the same directory, you
would, while in the `practice' directory:

   * Invoke `tar' and specify the operation to compare files in the
     archive with their counterparts in the file system--`--compare'
     (`-d') or `--diff'.

   * Specify the name of the archive where the files to be compared are
     stored--`--file=ARCHIVE-NAME' (`-f ARCHIVE-NAME').

   * Specify the names of the files or directories to be compared, as
     file name arguments (in this case, you are comparing all the files
     in the archive, so nothing need be specified).

     % tar --compare --file=records
     %

While it looks like nothing has happened, `tar' has, in fact, done the
comparison--and found nothing to report.  The same example with the
`--verbose' (`-v') option specified would list the files in the archive
as they are being compared with their counterparts of the same name:

     % tar --compare --verbose --file=records
     blues
     folk
     jazz
     %

   If `tar' had had anything to report, it would have done so as it was
comparing each file.  If you remove the file `jazz' from the file
system (`rm jazz'), and modify the file `blues' (for instance, by
adding text to it with a text editor), the above example would look
like:

     % tar --compare --verbose --file=records
     blues
     blues: mod time differs
     blues: size differs
     folk
     jazz
     jazz: does not exist
     %

   You should note again that while `--compare' (`-d') does cause `tar'
to report back on files in the archive that do not exist in the file
system, `tar' will ignore files in the active file system that do not
exist in the archive.  To demonstrate this, create a file in the
`practice' directory called `rock' (using any text editor).  If you
generate a directory listing the new file will appear.

     % ls
     blues	 folk	  records  rock

If you run the `--compare' (`-d') example again you will obtain the
following:

     % tar --compare --verbose --file=records
     blues
     blues: mod time differs
     blues: size differs
     folk
     jazz
     jazz: does not exist
     %

   `tar' ignores the file `rock' because `tar' is comparing files in
the archive to files in the file system, not vice versa.  If `rock' had
been passed to `tar' explicitly (as a file name argument), `tar' would
have returned an error message, as follows:

     % tar --compare --verbose --file=records rock
     tar: rock not found in archive
     %

   To compare the attributes of archive members with the attributes of
their counterparts in the file system, use the `--compare' (`-d') or
`--diff'operation.  While you could use `--list --verbose' (`-tv') to
manually compare some file attributes, it is simpler to have `tar'
itself compare file attributes and report back on file differences.
FIXME: "manually"?  suggestions?

   The `--compare' (`-d') operation, as its name implies, compares
archive members with files of the same name in the file system, and
reports back differences in file size, mode, owner and modification
date. `tar +compare' acts only on archive members-it ignores files in
the file system that are not stored in the archive.  If you give with
`--compare' (`-d') a NAME argument that does not correspond to the name
of an archive member, `tar' responds with an error message.

   To compare archive members in the archive file `records' with files
in the `~/practice' directory, first change into the `practice'
directory.  Then:

   * Invoke `tar' and specify the `--compare' (`-d')
     operation--`--compare' (`-d') or `--diff'.

   * Specify the archive where the files to be compared are
     stored--`--file=ARCHIVE-NAME' (`-f ARCHIVE-NAME').

   * Specify the archive members to be compared.  (In this example you
     are comparing all the archive members in the archive.  Since this
     is the default, you don't need to use any file name arguments).

     % tar --compare --file=records
     %

   While it looks like nothing has happened, `tar' has, in fact, done
the comparison--and found nothing to report.

   Use the `--verbose' (`-v') option to list the names of archive
members as they are being compared with their counterparts of the same
name in the file system:

     % tar --compare --verbose --file=records
     blues
     folk
     jazz
     %

   If `tar' had had anything to report, it would have done so as it was
comparing each file.

   If you remove the file `jazz' from the file system (`rm jazz'), and
modify the file `blues' (for instance, by adding text to it with an
editor such as Emacs), the above example would look like:

     % tar --compare --verbose --file=records
     blues
     blues: mod time differs
     blues: size differs
     folk
     jazz
     jazz: does not exist
     %

   Note again that while `--compare' (`-d') reports the names of archive
members that do not have counterparts in the file system, `--compare'
(`-d') ignores files in the file system that do not have counterparts
in the archive.  To demonstrate this, create a file in the `practice'
directory called `rock' (using any text editor).  The new file appears
when you list the directory's contents:

FIXME: Given an example


automatically generated by info2www version 1.2