Support upcasing and downcasing in multi-byte locales. * gnulib.modules: Add c32rtomb, c32tolower, c32toupper, mbrtoc32-regular. * src/transform.c: Do not include ctype.h. Include mcel.h. (stk, stk_init): Move up. (run_case_conv): Return void, not char *. Append result to stk directly; this avoids the need for a separate allocation. All callers changed. Do not assume a single-byte locale. * tests/xform04.at: New test. * tests/Makefile.am (TESTSUITE_AT): * tests/testsuite.at: Add it.
1850 lines
67 KiB
Plaintext
1850 lines
67 KiB
Plaintext
GNU tar NEWS - User visible changes. 2023-09-12
|
||
Please send GNU tar bug reports to <bug-tar@gnu.org>
|
||
|
||
version TBD
|
||
|
||
* New manual section "Reproducibility", for reproducible tarballs.
|
||
|
||
* New options: --set-mtime-command and --set-mtime-format
|
||
|
||
Both options are valid when archiving files.
|
||
|
||
** --set-mtime-command=COMMAND
|
||
|
||
For each FILE being archived, run "COMMAND FILE", parse its
|
||
output as time string and set mtime value of the archive member
|
||
from the result.
|
||
|
||
Unless --set-mtime-format is also used, the output is parsed
|
||
as argument to --mtime option (see GNU tar manual, chapter 4
|
||
"Date input formats".
|
||
|
||
** --set-mtime-format=FMT
|
||
|
||
Defines output format for the COMMAND set by the above option. If
|
||
used, command output will be parsed using strptime(3).
|
||
|
||
* Bug fixes
|
||
|
||
** Fixed O(n^2) time complexity bug for large numbers of directories when
|
||
extracting with --delay-directory-restore or reading incremental archives.
|
||
|
||
** tar no longer uses alloca, fixing an unlikely stack overflow.
|
||
|
||
** When diagnosing invalid extended headers tar now quotes control characters.
|
||
|
||
** Transformations that change case (e.g., --transform='s/.*/\L&/')
|
||
now work correctly with multi-byte characters.
|
||
|
||
|
||
version 1.35 - Sergey Poznyakoff, 2023-07-18
|
||
|
||
* Fail when building GNU tar, if the platform supports 64-bit time_t
|
||
but the build uses only 32-bit time_t.
|
||
|
||
* Leave the devmajor and devminor fields empty (rather than zero) for
|
||
non-special files, as this is more compatible with traditional tar.
|
||
|
||
* Bug fixes
|
||
|
||
** Fix interaction of --update with --wildcards.
|
||
|
||
** When extracting archives into an empty directory, do not create
|
||
hard links to files outside that directory.
|
||
|
||
** Handle partial reads from regular files.
|
||
|
||
** Warn "file changed as we read it" less often.
|
||
Formerly, tar warned if the file's size or ctime changed.
|
||
However, this generated a false positive if tar read a file
|
||
while another process hard-linked to it, changing its ctime.
|
||
Now, tar warns if the file's size, mtime, user ID, group ID,
|
||
or mode changes. Although neither heuristic is perfect,
|
||
the new one should work better in practice.
|
||
|
||
** Fix --ignore-failed-read to ignore file-changed read errors
|
||
as far as exit status is concerned. You can now suppress file-changed
|
||
issues entirely with --ignore-failed-read --warning=no-file-changed.
|
||
|
||
** Fix --remove-files to not remove a file that changed while we read it.
|
||
|
||
** Fix --atime-preserve=replace to not fail if there was no need to replace,
|
||
either because we did not read the file, or the atime did not change.
|
||
|
||
** Fix race when creating a parent directory while another process is
|
||
also doing so.
|
||
|
||
** Fix handling of prefix keywords not followed by "." in pax headers.
|
||
|
||
** Fix handling of out-of-range sparse entries in pax headers.
|
||
|
||
** Fix handling of --transform='s/s/@/2'.
|
||
|
||
** Fix treatment of options ending in / in files-from list.
|
||
|
||
** Fix crash on 'tar --checkpoint-action exec=\"'.
|
||
|
||
** Fix low-memory crash when reading incremental dumps.
|
||
|
||
** Fix --exclude-vcs-ignores memory allocation misuse.
|
||
|
||
|
||
version 1.34 - Sergey Poznyakoff, 2021-02-13
|
||
|
||
* Fix extraction over pipe (savannah bug #60002)
|
||
|
||
* Fix memory leak in read_header (savannah bug #59897)
|
||
|
||
* Fix extraction when . and .. are unreadable
|
||
|
||
See https://lists.gnu.org/archive/html/bug-tar/2021-01/msg00012.html
|
||
|
||
* Gracefully handle duplicate symlinks when extracting
|
||
|
||
See https://lists.gnu.org/archive/html/bug-tar/2021-01/msg00026.html
|
||
|
||
* Re-initialize supplementary groups when switching to user privileges
|
||
|
||
version 1.33 - Sergey Poznyakoff, 2021-01-07
|
||
|
||
* POSIX extended format headers do not include PID by default
|
||
|
||
The intent is to make binary-equivalent PAX archives easy to create. If
|
||
POSIXLY_CORRECT is set, the POSIX standard default is used, which embeds
|
||
the pid.
|
||
|
||
* --delay-directory-restore works for archives with reversed member ordering
|
||
|
||
* Fix extraction of a symbolic link hardlinked to another symbolic link
|
||
|
||
* Wildcards in exclude-vcs-ignore mode don't match slash
|
||
|
||
* Fix the --no-overwrite-dir option
|
||
|
||
Given this option, previous versions of tar failed to preserve
|
||
permissions of empty directories and to create files under directories
|
||
owned by the current user that did not have the S_IWUSR bit set.
|
||
|
||
* Fix handling of chained renames in incremental backups
|
||
|
||
* Link counting works for file names supplied with -T
|
||
|
||
* Accept only position-sensitive (file-selection) options in file list files.
|
||
|
||
Using such options as -f, -z, etc. is senseless in a file list file and
|
||
bypasses option consistency checks in decode_options. Therefore,
|
||
only options related to file selection (a.k.a position-sensitive options)
|
||
are allowed in file list files.
|
||
|
||
|
||
version 1.32 - Sergey Poznyakoff, 2019-02-23
|
||
|
||
* Fix the use of --checkpoint without explicit --checkpoint-action
|
||
|
||
* Fix extraction with the -U option
|
||
|
||
See http://lists.gnu.org/archive/html/bug-tar/2019-01/msg00015.html,
|
||
for details
|
||
|
||
* Fix iconv usage on BSD-based systems
|
||
|
||
* Fix possible NULL dereference (savannah bug #55369)
|
||
|
||
* Improve the testsuite
|
||
|
||
|
||
version 1.31 - Sergey Poznyakoff, 2019-01-02
|
||
|
||
* Fix heap-buffer-overrun with --one-top-level.
|
||
Bug introduced with the addition of that option in 1.28.
|
||
|
||
* Support for zstd compression
|
||
|
||
New option '--zstd' instructs tar to use zstd as compression program.
|
||
When listing, extractng and comparing, zstd compressed archives are
|
||
recognized automatically.
|
||
When '-a' option is in effect, zstd compression is selected if the
|
||
destination archive name ends in '.zst' or '.tzst'.
|
||
|
||
* The -K option interacts properly with member names given in the command line
|
||
|
||
Names of members to extract can be specified along with the "-K NAME"
|
||
option. In this case, tar will extract NAME and those of named members
|
||
that appear in the archive after it, which is consistent with the
|
||
semantics of the option.
|
||
|
||
Previous versions of tar extracted NAME, those of named members that
|
||
appeared before it, and everything after it.
|
||
|
||
* Fix CVE-2018-20482
|
||
|
||
When creating archives with the --sparse option, previous versions of
|
||
tar would loop endlessly if a sparse file had been truncated while
|
||
being archived.
|
||
|
||
|
||
version 1.30 - Sergey Poznyakoff, 2017-12-17
|
||
|
||
* Member names containing '..' components are now skipped when extracting.
|
||
|
||
This fixes tar's behavior to match its documentation, and is a bit
|
||
safer when extracting untrusted archives over old files (an unsafe
|
||
practice that the tar manual has long recommended against).
|
||
|
||
* Report erroneous use of position-sensitive options.
|
||
|
||
During archive creation or update, tar keeps track of positional
|
||
options (see the manual, subsection 3.4.4 "Position-Sensitive
|
||
Options"), and reports those that had no effect. For example, when
|
||
invoked as
|
||
|
||
tar -cf a.tar . --exclude '*.o'
|
||
|
||
tar will create the archive, but will exit with status 2, having
|
||
issued the following error message
|
||
|
||
tar: The following options were used after non-optional
|
||
arguments in archive create or update mode. These options are
|
||
positional and affect only arguments that follow them. Please,
|
||
rearrange them properly.
|
||
tar: --exclude '*.o' has no effect
|
||
tar: Exiting with failure status due to previous errors
|
||
|
||
* --numeric-owner now affects private headers too.
|
||
|
||
This helps the output of 'tar' to be more deterministic.
|
||
|
||
* Fixed the --delay-directory-restore option
|
||
|
||
In some cases tar would restore the directory permissions too early,
|
||
causing subsequent link extractions in that directory to fail.
|
||
|
||
* The --warnings=failed-read option
|
||
|
||
This new warning control option suppresses warning messages about
|
||
unreadable files and directories. It has effect only if used together
|
||
with the --ignore-failed-read option.
|
||
|
||
* The --warnings=none option now suppresses all warnings
|
||
|
||
This includes warnings about unreadable files produced when
|
||
--ignore-failed-read is in effect. To output these, use
|
||
--warnings=none --warnings=no-failed-read.
|
||
|
||
* Fix reporting of hardlink mismatches during compare
|
||
|
||
Tar reported incorrect target file name in the 'Not linked to'
|
||
diagnostic message.
|
||
|
||
|
||
version 1.29 - Sergey Poznyakoff, 2016-05-16
|
||
|
||
* New options: --verbatim-files-from, --no-verbatim-files-from
|
||
|
||
The --verbatim-files-from option instructs tar to treat each line read
|
||
from a file list as a file name, even if it starts with a dash.
|
||
|
||
File lists are supplied with the --files-from (-T) option. By
|
||
default, each line read from a file list is first stripped off the
|
||
leading and trailing whitespace and, if the result begins with a dash,
|
||
it is treated as tar command line option.
|
||
|
||
Use the --verbatim-files-from option to disable this special handling.
|
||
This facilitates the use of tar with file lists created automatically
|
||
(e.g. by find(1) command).
|
||
|
||
This option affects all --files-from options that occur after it in
|
||
the command line. Its effect is reverted by the
|
||
--no-verbatim-files-from option.
|
||
|
||
* --null option reads file names verbatim
|
||
|
||
The --null option implies --verbatim-files-from. I.e. each line
|
||
read from null-delimited file lists is treated as a file name.
|
||
|
||
This restores the documented behavior, which was broken in version
|
||
1.27.
|
||
|
||
* New options: --owner-map=FILE and --group-map=FILE
|
||
|
||
These two options provide fine-grained control over what user/group
|
||
names (or IDs) should be mapped when adding files to archive.
|
||
|
||
For both options, FILE is a plain text file with user or group
|
||
mappings. Empty lines are ignored. Comments are introduced with
|
||
# sign (unless quoted) and extend to the end of the corresponding
|
||
line. Each non-empty line defines translation for a single UID (GID).
|
||
It must consist of two fields, delimited by any amount of whitespace:
|
||
|
||
OLDNAME NEWNAME[:NEWID]
|
||
|
||
OLDNAME is either a valid user (group) name or a ID prefixed with +. Unless
|
||
NEWID is supplied, NEWNAME must also be either a valid name or a
|
||
+ID. Otherwise, both NEWNAME and NEWID need not be listed in the
|
||
system user database.
|
||
|
||
* New option --clamp-mtime
|
||
|
||
The new --clamp-mtime option changes the behavior of --mtime to only
|
||
use the time specified if the file mtime is newer than the given time.
|
||
The --clamp-mtime option can only be used together with --mtime.
|
||
|
||
Typical use case is to make builds reproducible: to loose less
|
||
information, it's better to keep the original date of an archive,
|
||
except for files modified during the build process. In that case, using
|
||
reference (and thus reproducible) timestamps for the latter is good
|
||
enough.
|
||
|
||
See <https://wiki.debian.org/ReproducibleBuilds> for more information.
|
||
|
||
* Deprecated --preserve option removed
|
||
|
||
* Sparse file detection
|
||
|
||
Tar now uses SEEK_DATA/SEEK_HOLE on systems that support it. This
|
||
allows for considerable speed-up in sparse-file detection.
|
||
|
||
New option --hole-detection is provided, that allows the user to
|
||
select the algorithm used for hole detection. Available arguments
|
||
are:
|
||
|
||
--hole-detection=seek
|
||
Use lseek(2) SEEK_DATA and SEEK_HOLE "whence" parameters.
|
||
|
||
--hole-detection=raw
|
||
Scan entire file before storing it to determine where holes
|
||
are located.
|
||
|
||
The default is to use "seek" whenever possible, and fall back to
|
||
"raw" otherwise.
|
||
|
||
|
||
version 1.28, 2014-07-28
|
||
|
||
* New checkpoint action: totals
|
||
|
||
The --checkpoint-action=totals option instructs tar to output the
|
||
total number of bytes transferred at each checkpoint.
|
||
|
||
* Extended checkpoint format specification.
|
||
|
||
New conversion specifiers are implemented. Some of them take
|
||
optional arguments, supplied in curly braces between the percent
|
||
sign and the specifier letter.
|
||
|
||
%d - Number of seconds since tar started.
|
||
%{r,w,d}T - I/O totals; optional arguments supply prefixes
|
||
to be used before number of bytes read, written and
|
||
deleted, correspondingly.
|
||
%{FMT}t - Current local time using FMT as strftime(3) format.
|
||
If {FMT} is omitted, use %c.
|
||
%{N}* - Pad output with spaces to the Nth column, or to the
|
||
current screen width, if {N} is not given.
|
||
%c - A shortcut for "%{%Y-%m-%d %H:%M:%S}t: %ds, %{read,wrote}T%*\r"
|
||
|
||
* New option --one-top-level
|
||
|
||
The option --one-top-level tells tar to extract all files into a
|
||
subdirectory named by the base name of the archive (minus standard
|
||
compression suffixes recognizable by --auto-compress). When used with
|
||
an argument, as in --one-top-level=DIR, the files are extracted into the
|
||
supplied DIRectory. This ensures that no archive members are
|
||
extracted outside of the specified directory, even if the archive is
|
||
crafted so as to put them elsewhere.
|
||
|
||
* New option --sort
|
||
|
||
The --sort=ORDER option instructs tar to sort directory entries
|
||
according to ORDER. It takes effect when creating archives.
|
||
Available ORDERs are: none (the default), name and inode. The
|
||
latter may be absent, if the underlying system does not provide
|
||
the necessary information.
|
||
|
||
Using --sort=name ensures the member ordering in the created archive
|
||
is uniform and reproducible. Using --sort=inode reduces the number
|
||
of disk seeks made when creating the archive and thus can considerably
|
||
speed up archivation.
|
||
|
||
* New exclusion options
|
||
|
||
--exclude-ignore=FILE Before dumping a directory check if it
|
||
contains FILE, and if so read exclude
|
||
patterns for this directory from FILE.
|
||
--exclude-ignore-recursive=FILE
|
||
Same as above, but the exclusion patterns
|
||
read from FILE remain in effect for any
|
||
subdirectory, recursively.
|
||
--exclude-vcs-ignores Read exclude tags from VCS ignore files,
|
||
where such files exist. Supported VCS's
|
||
are: CVS, Git, Bazaar, Mercurial.
|
||
|
||
|
||
* Tar refuses to read input from and write output to a tty device.
|
||
|
||
* Manpages
|
||
|
||
This release includes official tar(1) and rmt(8) manpages.
|
||
Distribution maintainers are kindly asked to use these instead of the
|
||
home-made pages they have been providing so far.
|
||
|
||
|
||
version 1.27.1 - Sergey Poznyakoff, 2013-11-17
|
||
|
||
* Bug fixes
|
||
|
||
* Fix unquoting of file names obtained via the -T option.
|
||
|
||
* Fix GNU long link header timestamp (backward compatibility).
|
||
|
||
* Fix extracting sparse members from star archives.
|
||
|
||
|
||
version 1.27 - Sergey Poznyakoff, 2013-10-05
|
||
|
||
* Bug fixes
|
||
|
||
** Sparse files with large data
|
||
|
||
When creating a PAX-format archive, tar no longer arbitrarily restricts
|
||
the size of the representation of a sparse file to be less than 8 GiB.
|
||
|
||
* Quoting
|
||
|
||
In the default C locale, diagnostics and output of 'tar' have been
|
||
adjusted to quote 'like this' (with apostrophes) instead of `like this'
|
||
(with an accent grave character and an apostrophe). This tracks
|
||
recent changes to the GNU coding standards.
|
||
|
||
* --owner and --group names and numbers
|
||
|
||
The --owner and --group options now accept operands of the form
|
||
NAME:NUM, so that you can specify both symbolic name and numeric ID
|
||
for owner and group. In these options, NAME no longer needs to be
|
||
present in the current host's user and group databases.
|
||
|
||
* The --keep-old-files and --skip-old-files options.
|
||
|
||
This release restores the traditional functionality of the
|
||
--keep-old-files. This option causes tar to avoid replacing
|
||
existing files while extracting and to treat such files as errors.
|
||
Tar will emit a prominent error message upon encountering such files
|
||
and will exit with code 2 when finished extracting the archive.
|
||
|
||
A new option --skip-old-files is introduced, which acts exactly as
|
||
--keep-old-files, except that it does not treat existing files as
|
||
errors. Instead it just silently skips them. An additional level of
|
||
verbosity can be obtained by using the option --warning=existing-file
|
||
together with this option.
|
||
|
||
* Support for POSIX ACLs, extended attributes and SELinux context.
|
||
|
||
Starting with this version tar is able to store, extract and list
|
||
extended file attributes, POSIX.1e ACLs and SELinux context. This is
|
||
controlled by the command line options --xattrs, --acls and --selinux,
|
||
correspondingly. Each of these options has a `--no-' counterpart
|
||
(e.g. --no-xattrs), which disables the corresponding feature.
|
||
Additionally, the options --xattrs-include and --xattrs-exclude allow
|
||
you to selectively control for which files to store (or extract) the
|
||
extended attributes.
|
||
|
||
* Passing command line arguments to external commands.
|
||
|
||
Any option taking a command name as its argument now accepts a full
|
||
command line as well. Thus, it is now possible to pass additional
|
||
arguments to invoked programs. The affected options are:
|
||
|
||
--checkpoint-action=exec
|
||
-I, --use-compress-program
|
||
-F, --info-script
|
||
--to-command
|
||
|
||
Furthermore, if any additional information is supplied to such a
|
||
command via environment variables, these variables can now be used in
|
||
the command line itself. Care should be taken to escape them, to
|
||
prevent from being expanded too early, for example:
|
||
|
||
tar -x -f a.tar --info-script='changevol $TAR_ARCHIVE $TAR_VOLUME'
|
||
|
||
* New configure option --enable-gcc-warnings, intended for debugging.
|
||
|
||
* New warning control option --warning=[no-]record-size
|
||
|
||
On extraction, this option controls whether to display actual record
|
||
size, if it differs from the default.
|
||
|
||
* New command line option --keep-directory-symlink
|
||
|
||
By default, if trying to extract a directory from the archive,
|
||
tar discovers that the corresponding file name already exists and is a
|
||
symbolic link, it first unlinks the entry, and then extracts the directory.
|
||
|
||
This option disables this behavior and instructs tar to follow
|
||
symlinks to directories when extracting from the archive.
|
||
|
||
It is mainly intended to provide compatibility with the Slackware
|
||
installation scripts.
|
||
|
||
|
||
version 1.26 - Sergey Poznyakoff, 2011-03-12
|
||
|
||
* Bugfixes
|
||
|
||
** Fix the --verify option, which broke in version 1.24.
|
||
|
||
** Fix storing long sparse file names in PAX archives.
|
||
|
||
** Fix correctness of --atime-preserve=replace
|
||
|
||
tar --atime-preserve=replace no longer tries to restore atime of
|
||
zero-sized files.
|
||
|
||
** Work around POSIX incompatibilities on FreeBSD, NetBSD and Tru64
|
||
|
||
** Fix bug with --one-file-system --listed-incremental
|
||
|
||
When invoked with these two options, tar 1.25 would add only the
|
||
top-level directory to the archive, but not its contents.
|
||
|
||
|
||
version 1.25 - Sergey Poznyakoff, 2010-11-07
|
||
|
||
* Fix extraction of empty directories with the -C option in effect.
|
||
* Fix extraction of device nodes.
|
||
* Make sure name matching occurs before eventual name transformation.
|
||
|
||
Tar 1.24 changed the ordering of name matching and name transformation
|
||
so that the former saw already transformed file names. This made it
|
||
impossible to match file names in certain cases. It is fixed now.
|
||
|
||
* Fix the behavior of tar -x --overwrite on hosts lacking O_NOFOLLOW.
|
||
|
||
* Improve the testsuite.
|
||
|
||
* Alternative decompression programs.
|
||
|
||
If extraction from a compressed archive fails because the corresponding
|
||
compression program is not installed and the following two conditions
|
||
are met, tar retries extraction using an alternative decompressor:
|
||
|
||
1. Another compression program supported by tar is able to handle this
|
||
compression format.
|
||
2. The compression program was not explicitly requested in the command
|
||
line by the use of such options as -z, -j, etc.
|
||
|
||
For example, if 'compress' is not available, tar will try 'gzip'.
|
||
|
||
|
||
version 1.24 - Sergey Poznyakoff, 2010-10-24
|
||
|
||
* The --full-time option.
|
||
|
||
New command line option '--full-time' instructs tar to output file
|
||
time stamps to the full resolution.
|
||
|
||
* Bugfixes.
|
||
|
||
** More reliable directory traversal when creating archives
|
||
|
||
Tar now checks for inconsistencies caused when a file system is
|
||
modified while tar is creating an archive. In the new approach, tar
|
||
maintains a cache of file descriptors to directories, so it uses more
|
||
file descriptors than before, but it adjusts to system limits on
|
||
the number of file descriptors. Tar also takes more care when
|
||
a file system is modified while tar is extracting from an archive.
|
||
|
||
The new checks are implemented via the openat and related calls
|
||
standardized by POSIX.1-2008. On an older system where these calls do
|
||
not exist or do not return useful results, tar emulates the calls at
|
||
some cost in efficiency and reliability.
|
||
|
||
** Symbolic link attributes
|
||
|
||
When extracting symbolic links, tar now restores attributes such as
|
||
last-modified time and link permissions, if the operating system
|
||
supports this. For example, recent versions of the Linux kernel
|
||
support setting times on symlinks, and some BSD kernels also support
|
||
symlink permissions.
|
||
|
||
** --dereference consistency
|
||
|
||
The --dereference (-h) option now applies to files that are copied
|
||
into or out of archives, independently of other options. For example,
|
||
if F is a symbolic link and archive.tar contains a regular-file member
|
||
also named F, "tar --overwrite -x -f archive.tar F" now overwrites F
|
||
itself, rather than the file that F points to. (To overwrite the file
|
||
that F points to, add the --dereference (-h) option.) Formerly,
|
||
--dereference was intended to apply only when using the -c option, but
|
||
the implementation was not consistent.
|
||
|
||
Also, the --dereference option no longer affects accesses to other
|
||
files, such as archives and time stamp files. Symbolic links to these
|
||
files are always followed. Previously, the links were usually but not
|
||
always followed.
|
||
|
||
** Spurious error diagnostics on broken pipe.
|
||
|
||
When receiving SIGPIPE, tar would exit with error status and
|
||
"write error" diagnostics. In particular, this occurred if
|
||
invoked as in the example below:
|
||
|
||
tar tf archive.tar | head -n 1
|
||
|
||
** --remove-files
|
||
|
||
'tar --remove-files' failed to remove a directory which contained
|
||
symlinks to another files within that directory.
|
||
|
||
** --test-label behavior
|
||
|
||
In case of a mismatch, 'tar --test-label LABEL' exits with code 1,
|
||
not 2 as it did in previous versions.
|
||
|
||
The '--verbose' option used with '--test-label' provides additional
|
||
diagnostics.
|
||
|
||
Several volume labels may be specified in a command line, e.g.:
|
||
|
||
tar --test-label -f archive 'My volume' 'New volume' 'Test volume'
|
||
|
||
In this case, tar exits with code 0 if any one of the arguments
|
||
matches the actual volume label.
|
||
|
||
** --label used with --update
|
||
|
||
The '--label' option can be used with '--update' to prevent accidental
|
||
update of an archive:
|
||
|
||
tar -rf archive --label 'My volume' .
|
||
|
||
This did not work in previous versions, in spite of what the docs said.
|
||
|
||
** --record-size and --tape-length (-L) options
|
||
|
||
Usual size suffixes are allowed for these options. For example,
|
||
-L10k stands for a 10 kilobyte tape length.
|
||
|
||
** Fix dead loop on extracting existing symlinks with the -k option.
|
||
|
||
|
||
version 1.23 - Sergey Poznyakoff, 2010-03-10
|
||
|
||
* Record size autodetection
|
||
|
||
When listing or extracting archives, the actual record size is
|
||
reported only if the archive is read from a device (as opposed
|
||
to regular files and pipes).
|
||
|
||
* Seekable archives
|
||
|
||
When a read-only operation (e.g. --list or --extract) is requested
|
||
on a regular file, tar attemtps to speed up accesses by using lseek.
|
||
|
||
* New command line option '--warning'
|
||
|
||
The '--warning' command line option allows to suppress or enable
|
||
particular warning messages during 'tar' run. It takes a single
|
||
argument (a 'keyword'), identifying the class of warning messages
|
||
to affect. If the argument is prefixed with 'no-', such warning
|
||
messages are suppressed. For example,
|
||
|
||
tar --warning=no-alone-zero-block -x -f archive
|
||
|
||
suppresses the output of "A lone zero block" diagnostics, which is
|
||
normally issued if 'archive' ends with a single block of zeros.
|
||
|
||
See Tar Manual, section 3.9 "Controlling Warning Messages", for a
|
||
detailed discussion.
|
||
|
||
* New command line option '--level'
|
||
|
||
The '--level=N' option sets the incremental dump level N. It
|
||
is valid when used in conjunction with the -c and --listed-incremental
|
||
options. So far the only meaningful value for N is 0. The
|
||
'--level=0' option forces creating the level 0 dump, by truncating
|
||
the snapshot file if it exists.
|
||
|
||
* Files removed during incremental dumps
|
||
|
||
If a file or directory is removed while incremental dump is
|
||
in progress, tar exact actions depend on whether this file
|
||
was explicitly listed in the command line, or was found
|
||
during file system scan.
|
||
|
||
If the file was explicitly listed in the command line, tar
|
||
issues error message and exits with the code 2, meaning
|
||
fatal error.
|
||
|
||
Otherwise, if the file was found during the file system scan,
|
||
tar issues a warning, saying "File removed before we read it",
|
||
and sets exit code to 1, which means "some files differ".
|
||
If the --warning=no-file-removed option is given, no warning
|
||
is issued and exit code remains 0.
|
||
|
||
* Modification times of PAX extended headers.
|
||
|
||
Modification times in ustar header blocks of extended headers
|
||
are set to mtimes of the corresponding archive members. This
|
||
can be overridden by the
|
||
|
||
--pax-option='exthdr.mtime=STRING'
|
||
|
||
command line option. The STRING is either number of seconds since
|
||
the Epoch or a "Time reference" (see below).
|
||
|
||
Modification times in ustar header blocks of global extended
|
||
headers are set to the time when tar was invoked.
|
||
|
||
This can be overridden by the
|
||
|
||
--pax-option='globexthdr.mtime=STRING'
|
||
|
||
command line option. The STRING is either number of seconds since
|
||
the Epoch or a "Time reference" (see below).
|
||
|
||
* Time references in --pax-option argument.
|
||
|
||
Any value from the --pax-option argument that is enclosed in a pair
|
||
of curly braces represents a time reference. The string between the
|
||
braces is understood either as a textual time representation, as described in
|
||
chapter 7, "Date input formats", of the Tar manual, or as a name of
|
||
an existing file, starting with '/' or '.'. In the latter
|
||
case, it is replaced with the modification time of that file.
|
||
|
||
* Environment of --to-command script.
|
||
|
||
The environment passed to the --to-command script is extended with
|
||
the following variables:
|
||
|
||
TAR_VERSION GNU tar version number
|
||
TAR_ARCHIVE The name of the archive
|
||
TAR_VOLUME Ordinal number of the volume
|
||
TAR_FORMAT Format of the archive
|
||
TAR_BLOCKING_FACTOR Current blocking factor
|
||
|
||
* Bugfixes
|
||
** Fix handling of hard link targets by -c --transform.
|
||
** Fix hard links recognition with -c --remove-files.
|
||
** Fix restoring files from backup (debian bug #508199).
|
||
** Correctly restore modes and permissions on existing directories.
|
||
** The --remove-files option removes files only if they were
|
||
succesfully stored in the archive.
|
||
** Fix storing and listing of the volume labels in POSIX format.
|
||
** Improve algorithm for splitting long file names (ustar
|
||
format).
|
||
** Fix possible memory overflow in the rmt client code (CVE-2010-0624).
|
||
|
||
|
||
version 1.22 - Sergey Poznyakoff, 2009-03-05
|
||
|
||
* Support for xz compression
|
||
|
||
Tar uses xz for compression if one of the following conditions is met:
|
||
|
||
1. The option --xz or -J (see below) is used.
|
||
2. The xz binary is set as compressor using --use-compress-program option.
|
||
3. The file name of the archive being created ends in '.xz' and
|
||
auto-compress option (-a) is used.
|
||
|
||
Xz is used for decompression if one of the following conditions is met:
|
||
|
||
1. The option --xz or -J is used.
|
||
2. The xz binary is set as compressor using --use-compress-program option.
|
||
3. The file is recognized as xz compressed stream data.
|
||
|
||
* Short option -J reassigned as a short equivalent of --xz
|
||
|
||
* New option -I
|
||
|
||
The -I option is assigned as a short equivalent for
|
||
--use-compress-program.
|
||
|
||
* The --no-recursive option works in incremental mode.
|
||
|
||
|
||
version 1.21 - Sergey Poznyakoff, 2008-12-27
|
||
|
||
* New short option -J
|
||
|
||
A shortcut for --lzma.
|
||
|
||
* New option --lzop
|
||
|
||
* New option --no-auto-compress
|
||
|
||
Cancels the effect of previous --auto-compress (-a) option.
|
||
|
||
* New option --no-null
|
||
|
||
Cancels the effect of previous --null option.
|
||
|
||
* Compressed format recognition
|
||
|
||
If tar is unable to determine archive compression format, it falls
|
||
back to using archive suffix to determine it.
|
||
|
||
* VCS support.
|
||
|
||
Using --exclude-vcs handles also files used internally by Bazaar,
|
||
Mercurial and Darcs.
|
||
|
||
* Transformation scope flags
|
||
|
||
Name transformation expressions understand additional flags that
|
||
control type of archive members affected by them. The flags are:
|
||
|
||
- r
|
||
Apply transformation to regular archive members.
|
||
|
||
- s
|
||
Apply transformation to symbolic link targets.
|
||
|
||
- h
|
||
Apply transformation to hard link targets.
|
||
|
||
Corresponding upper-case letters negate the meaning, so that
|
||
'H' means "do not apply transformation to hard link targets".
|
||
|
||
The scope flags are listed in the third part of an 's' expression,
|
||
e.g.:
|
||
|
||
tar --transform 's|^|/usr/local/|S'
|
||
|
||
Default is 'rsh', which means that transformations are applied to
|
||
both regular archive members and to the targets of symbolic and hard
|
||
links. If several transform expressions are used, the default flags
|
||
can be changed using 'flags=' statement before the expressions, e.g.:
|
||
|
||
tar --transform 'flags=S;s|^|/usr/local/|S'
|
||
|
||
* Bugfixes
|
||
|
||
** The --null option disabled handling of tar options in list files. This
|
||
is fixed.
|
||
** Fixed record size autodetection. If the detected record size differs from
|
||
the expected value (either default one, or the one set from the
|
||
command line), tar always prints a warning if verbosity level is set
|
||
to 1 or greater, i.e. if either -t or -v option is given.
|
||
|
||
|
||
|
||
version 1.20 - Sergey Poznyakoff, 2008-04-14
|
||
|
||
* New option --auto-compress (-a)
|
||
|
||
With --create, selects compression algorithm basing on the suffix
|
||
of the archive file name.
|
||
|
||
* New option --lzma
|
||
|
||
Selects LZMA compression algorithm
|
||
|
||
* New option --hard-dereference
|
||
|
||
During archive creation, dereferences hard links and stores the files
|
||
they refer to, instead of creating usual hard link members (type '1').
|
||
|
||
* New option --checkpoint-action
|
||
|
||
This action allows to specify an action to be executed upon hitting a
|
||
checkpoint. Recognized actions are: dot, echo (the default),
|
||
echo=string, ttyout=string, exec=cmdline, and sleep=value. Any number
|
||
of '--checkpoint-action' options can be specified, the actions will be
|
||
executed in order of their appearance in the command line. See
|
||
chapter 3.8 "Checkpoints" for a complete description.
|
||
|
||
* New options --no-check-device, --check-device.
|
||
|
||
The '--no-check-device' option disables comparing device numbers during
|
||
preparatory stage of an incremental dump. This allows to avoid
|
||
creating full dumps if the device numbers change (e.g. when using an
|
||
LVM snapshot).
|
||
|
||
The '--check-device' option enables comparing device numbers. This is
|
||
the default. This option is provided to undo the effect of the previous
|
||
'--no-check-device' option, e.g. if it was set in TAR_OPTIONS
|
||
environment variable.
|
||
|
||
* The --transform option.
|
||
|
||
Any number of '--transform' options can be given in the command line.
|
||
The specified transformations will be applied in turn.
|
||
|
||
The argument to '--transform' option can be a list of replace
|
||
expressions, separated by a semicolon (as in 'sed').
|
||
|
||
Filename transformations are applied to symbolic link targets
|
||
during both creation and extraction. Tar 1.19 used them only
|
||
during extraction.
|
||
|
||
For a detailed description, see chapter 6.7 "Modifying File and Member
|
||
Names".
|
||
|
||
* Info (end-of-volume) scripts
|
||
|
||
The value of the blocking factor is made available to info and
|
||
checkpoint scripts via environment variable TAR_BLOCKING_FACTOR.
|
||
|
||
* Incremental archives
|
||
|
||
Improved (sped up) extracting from incremental archives.
|
||
|
||
* Bugfixes.
|
||
** Fix bug introduced in version 1.19: tar refused to update non-existing
|
||
archives.
|
||
|
||
|
||
version 1.19 - Sergey Poznyakoff, 2007-10-10
|
||
|
||
* New option --exclude-vcs
|
||
|
||
Excludes directories and files, created by several widely used version
|
||
control systems, e.g. "CVS/", ".svn/", etc.
|
||
|
||
* --exclude-tag and --exclude-cache options
|
||
|
||
The following options now work with incremental archives as well:
|
||
|
||
--exclude-caches
|
||
--exclude-caches-all
|
||
--exclude-tag
|
||
--exclude-tag-all
|
||
--exclude-tag-under
|
||
|
||
* Fix handling of renamed files in listed incremental archives.
|
||
|
||
Previous versions always stored absolute file names in rename
|
||
records, even if -P was not used. This is fixed: rename records
|
||
contain file names processed in accordance with the command line
|
||
settings.
|
||
|
||
* Fix --version output.
|
||
|
||
* Recognition of broken archives.
|
||
|
||
When supplied an archive smaller than 512 bytes in reading mode (-x,
|
||
-t), the previous version of tar silently ignored it, exiting with
|
||
code 0. It is fixed. Tar now issues the following diagnostic message:
|
||
'This does not look like a tar archive', and exits with code 2.
|
||
|
||
* Fix double-dot recognition in archive member names in case of duplicate '/.'.
|
||
|
||
* Fix file padding in case of truncation of the input file to zero size.
|
||
|
||
|
||
version 1.18 - Sergey Poznyakoff, 2007-06-29
|
||
|
||
* Licensed under the GPLv3
|
||
|
||
* Fixed several bugs in the testsuite
|
||
|
||
|
||
version 1.17 - Sergey Poznyakoff, 2007-06-08
|
||
|
||
* Fix archivation of sparse files in posix mode. Previous versions padded
|
||
sparse members with spurious zero blocks.
|
||
|
||
* Fix operation of --verify --listed-incremental. Version 1.16.1 produced
|
||
a full dump when both options were given.
|
||
|
||
* Fix --occurrence. In previous versions it continued scanning the archive
|
||
even though all requested members has already been extracted.
|
||
|
||
* Scope of --transform and --strip-components options.
|
||
|
||
In addition to affecting regular archive members, the --transform
|
||
option affects hard and soft link targets and the --strip-components
|
||
option affects hard link targets as well.
|
||
|
||
* End-of-volume script can send the new volume name to tar by writing
|
||
it to the file descriptor stored in the environment variable TAR_FD.
|
||
|
||
|
||
version 1.16.1 - Sergey Poznyakoff, 2006-12-09
|
||
|
||
* New option --exclude-tag allows to specify "exclusion tag files", i.e.
|
||
files whose presence in a directory means that the directory should not
|
||
be archived.
|
||
|
||
* The --exclude-cache option excludes directories that contain the
|
||
CACHEDIR.TAG file from being archived. Previous versions excluded
|
||
directory contents only, while the directories themselves were
|
||
still added to the archive.
|
||
|
||
* Support for reading ustar type 'N' header logical records has been removed.
|
||
This GNU extension was generated only by very old versions of GNU 'tar'.
|
||
Unfortunately its implementation had security holes; see
|
||
<http://archives.neohapsis.com/archives/fulldisclosure/2006-11/0344.html>.
|
||
We don't expect that any tar archives in practical use have type 'N'
|
||
records, but if you have one and you trust its contents, you can
|
||
decode it with GNU tar 1.16 or earlier.
|
||
|
||
* Race conditions have been fixed that in some cases briefly allowed
|
||
files extracted by 'tar -x --same-owner' (or plain 'tar -x', when
|
||
running as root) to be accessed by users that they shouldn't have been.
|
||
|
||
|
||
version 1.16 - Sergey Poznyakoff, 2006-10-21
|
||
|
||
* After creating an archive, tar exits with code 1 if some files were
|
||
changed while being read. Previous versions exited with code 2 (fatal
|
||
error), and only if some files were truncated while being archived.
|
||
|
||
* New option --mtime allows to set modification times for all archive
|
||
members during creation.
|
||
|
||
* Bug fixes
|
||
** Avoid running off file descriptors when using multiple -C options.
|
||
** tar --index-file=FILE --file=- sent the archive to FILE, and
|
||
the listing to stderr.
|
||
|
||
|
||
version 1.15.91 - Sergey Poznyakoff, 2006-06-16
|
||
|
||
* Incompatible changes
|
||
|
||
** Globbing
|
||
|
||
Previous versions of GNU tar assumed shell-style globbing when
|
||
extracting from or listing an archive. For example:
|
||
|
||
tar xf foo.tar '*.c'
|
||
|
||
would extract all files whose names end in '.c'. This behavior
|
||
was not documented and was incompatible with traditional tar
|
||
implementations. Therefore, starting from this version, GNU tar
|
||
no longer uses globbing by default. For example, the above invocation
|
||
is now interpreted as a request to extract from the archive the file
|
||
named '*.c'.
|
||
|
||
To treat member names as globbing patterns, use --wildcards option.
|
||
If you wish tar to mimic the behavior of versions up to 1.15.90,
|
||
add --wildcards to the value of the environment variable TAR_OPTIONS.
|
||
|
||
The exact way in which tar interprets member names is controlled by the
|
||
following command line options:
|
||
|
||
--wildcards use wildcards
|
||
--anchored patterns match file name start
|
||
--ignore-case ignore case
|
||
--wildcards-match-slash wildcards match '/'
|
||
|
||
Each of these options has a '--no-' counterpart that disables its
|
||
effect (e.g. --no-wildcards).
|
||
|
||
These options affect both the interpretation of member names from
|
||
command line and that of the exclusion patterns (given with --exclude
|
||
and --exclude-from options). The defaults are:
|
||
|
||
1. For member names: --no-wildcards --anchored
|
||
2. For exclusion patterns: --wildcards --no-anchored --wildcards-match-slash
|
||
|
||
The options can appear multiple times in the command line, thereby
|
||
changing the way command line arguments are interpreted. For example,
|
||
to use case-insensitive matching in exclude patterns and to revert to
|
||
case-sensitive matching for the rest of command line, one could write:
|
||
|
||
tar xf foo.tar --ignore-case --exclude-from=FILE --no-ignore-case file.name
|
||
|
||
** Short option -l is now an alias of --check-links option, which complies
|
||
with UNIX98. This ends the transition period started with version 1.14.
|
||
|
||
* New features
|
||
|
||
** New option --transform allows to transform file names before storing them
|
||
in the archive or member names before extracting. The option takes a
|
||
sed replace expression as its argument. For example,
|
||
|
||
tar cf foo.tar --transform 's,^,prefix/,'
|
||
|
||
will add 'prefix/' to all file names stored in foo.tar.
|
||
|
||
** --strip-components option works when deleting and comparing. In previous
|
||
versions it worked only with --extract.
|
||
|
||
** New option --show-transformed-names enables display of transformed file
|
||
or archive. It generalizes --show-stored-names option, introduced in
|
||
1.15.90. In particular, when creating an archive in verbose mode, it lists
|
||
member names as stored in the archive, i.e., with any eventual prefixes
|
||
removed and file name transformations applied. The option is useful,
|
||
for example, while comparing 'tar cv' and 'tar tv' outputs.
|
||
|
||
** New incremental snapshot file format keeps information about file names
|
||
as well as that about directories.
|
||
|
||
** The --checkpoint option takes an optional argument specifying the number
|
||
of records between the two successive checkpoints. Optional dot
|
||
starting the argument intructs tar to print dots instead of textual
|
||
checkpoints.
|
||
|
||
** The --totals option can be used with any tar operation (previous versions
|
||
understood it only with --create). If an argument to this option is
|
||
given, it specifies the signal upon delivery of which the statistics
|
||
is to be printed. Both forms of this option (with and without
|
||
argument) can be given to in a single invocation of tar.
|
||
|
||
* Bug fixes
|
||
** Detect attempts to update compressed archives.
|
||
|
||
|
||
version 1.15.90 - Sergey Poznyakoff, 2006-02-19
|
||
|
||
* New features
|
||
|
||
** Any number of -T (--files-from) options may be used in the command line.
|
||
The file specified with -T may include any valid 'tar' options,
|
||
including another -T option.
|
||
Compatibility note: older versions of tar would only recognize -C
|
||
as an option name within the file list file. Now any file whose name
|
||
starts with - is handled as an option. To insert file names starting with
|
||
dash, use the --add-file option.
|
||
|
||
** List files containing null-separated file names are detected and processed
|
||
automatically. It is no longer necessary to give the --null option.
|
||
|
||
** New option --no-unquote disables the unquoting of input file names.
|
||
This is useful for processing output from 'find dir -print0'.
|
||
An orthogonal option --unquote is provided as well.
|
||
|
||
** New option --test-label tests the archive volume label.
|
||
If an argument is specified, the label is compared against its value.
|
||
Tar exits with code 0 if the two strings match, and with code 2 if
|
||
they do not.
|
||
|
||
If no argument is given, the --verbose option is implied. In this case,
|
||
tar prints the label name if present and exits with code 0.
|
||
|
||
** New option --show-stored-names. When creating an archive in verbose mode,
|
||
it lists member names as stored in the archive, i.e., with any eventual
|
||
prefixes removed. The option is useful, for example, while comparing
|
||
'tar cv' and 'tar tv' outputs.
|
||
|
||
** New option --to-command pipes the contents of archive members to the
|
||
specified command.
|
||
|
||
** New option --atime-preserve=system, which uses the O_NOATIME feature
|
||
of recent Linux kernels to avoid some problems when preserving file
|
||
access times.
|
||
|
||
** New option --delay-directory-restore delays restoring modification times
|
||
and permissions of extracted directories until the end of extraction.
|
||
This is necessary for restoring from archives with unusual member
|
||
ordering (in particular, those created with --no-recursion option).
|
||
This option is implied when restoring from incremental archives.
|
||
|
||
** New option --restrict prohibits use of some potentially harmful tar
|
||
options. Currently it disables '!' escape in multi-volume name menu.
|
||
|
||
** New options --quoting-style and --quote-chars control the way tar
|
||
quotes member names on output. The --quoting-style takes an argument
|
||
specifying the quoting style to use (literal, shell, shell-always,
|
||
c, escape, locale, clocale). The argument to --quote-chars is a string
|
||
specifying characters to quote, even if the selected quoting style
|
||
would not quote them otherwise. The option --no-quote-chars is
|
||
provided to disable quoting certain characters.
|
||
|
||
** The end-of-volume script (introduced with --info-script option) can
|
||
get current archive name from the environment variable TAR_ARCHIVE and
|
||
the volume number from the variable TAR_VOLUME. It can alter the
|
||
archive name by writing new name to the file descriptor 3.
|
||
|
||
** Better support for full-resolution time stamps. Tar cannot restore
|
||
time stamps to full nanosecond resolution, though, until the kernel
|
||
guys get their act together and give us a system call to set file time
|
||
stamps to nanosecond resolution.
|
||
|
||
** The -v option now prints time stamps only to 1-minute resolution,
|
||
not full resolution, to avoid using up too many output columns.
|
||
Nanosecond resolution is now supported, but that would be too much.
|
||
|
||
* Bug fixes
|
||
|
||
** Allow non-option arguments to be interspersed with options.
|
||
** When extracting or listing archives in old GNU format, tar
|
||
used to read an extra block of data after a long name header
|
||
if length of the member name was divisible by block size (512).
|
||
Consequently, the file pointer was set off and the next member
|
||
was not processed correctly.
|
||
** Previous version created invalid archives when files shrink
|
||
during reading.
|
||
** Compare mode (tar d) hung when trying to compare file contents.
|
||
** Previous versions in certain cases failed to restore directory
|
||
modification times.
|
||
** When creating an archive, do not attempt to store files whose
|
||
meta-data cannot be stored in the header due to format limitations
|
||
(for ustar and v7 formats).
|
||
** The --version option now also outputs information about copyright,
|
||
license, and credits. This reverts to the behavior of tar 1.14 and
|
||
earlier, and conforms to the GNU coding standards. The --license (-L)
|
||
option introduced in tar 1.15 has been removed, since it's no longer
|
||
needed.
|
||
|
||
|
||
version 1.15.1 - Sergey Poznyakoff, 2004-12-21
|
||
|
||
This version fixes a bug introduced in 1.15 which caused
|
||
tar to refuse to extract files from standard input.
|
||
|
||
|
||
version 1.15 - Sergey Poznyakoff, 2004-12-20
|
||
|
||
* Compressed archives are recognised automatically, it is no longer
|
||
necessary to specify -Z, -z, or -j options to read them. Thus, you can
|
||
now run 'tar tf archive.tar.gz'.
|
||
|
||
* When restoring incremental dumps, --one-file-system option
|
||
prevents directory hierarchies residing on different devices
|
||
from being purged.
|
||
|
||
With the previous versions of tar it was dangerous to create
|
||
incremental dumps with --one-file-system option, since they
|
||
would recursively remove mount points when restoring from the
|
||
back up. This change fixes the bug.
|
||
|
||
* Renamed --strip-path to --strip-components for consistency with
|
||
the GNU convention.
|
||
|
||
* Skipping archive members is sped up if the archive media supports
|
||
seeks.
|
||
|
||
* Restore script starts restoring only if it is given --all (-a) option,
|
||
or some patterns. This is to prevent accidental restores.
|
||
|
||
* 'tar --verify' prints a warning if during archive creation some of
|
||
the file names had their prefixes stripped off.
|
||
|
||
* New option --exclude-caches instructs tar to exclude cache directories
|
||
automatically on archive creation. Cache directories are those
|
||
containing a standardized tag file, as specified at:
|
||
|
||
http://www.brynosaurus.com/cachedir/spec.html
|
||
|
||
* New configure option --with-rmt allows to specify full path name to
|
||
the 'rmt' utility. This supersedes DEFAULT_RMT_COMMAND variable
|
||
introduced in version 1.14
|
||
|
||
* New configure variable DEFAULT_RMT_DIR allows to specify the directory
|
||
where to install 'rmt' utility. This is necessary since modifying
|
||
--libexecdir as was suggested for version 1.14 produced a side effect: it
|
||
also modified installation prefix for backup scripts (if
|
||
--enable-backup-scripts was given).
|
||
|
||
* Bug fixes:
|
||
** Fixed flow in recognizing files to be included in incremental dumps.
|
||
** Correctly recognize sparse archive members when used with -T option.
|
||
** GNU multivolume headers cannot store filenames longer than 100 characters.
|
||
Do not allow multivolume archives to begin with such filenames.
|
||
** If a member with link count > 2 was stored in the archive twice,
|
||
previous versions of tar were not able to extract it, since they
|
||
were trying to link the file to itself, which always failed and
|
||
lead to removing the already extracted copy. Preserve the first
|
||
extracted copy in such cases.
|
||
** Restore script was passing improper argument to tar --listed option (which
|
||
didn't affect the functionality, but was logically incorrect).
|
||
** Fixed verification of created archives.
|
||
** Fixed unquoting of file names containing backslash escapes (previous
|
||
versions failed to recognize \a and \v).
|
||
** When attempting to delete a non-existing member from the archive, previous
|
||
versions of tar used to overwrite last archive block with zeroes.
|
||
|
||
|
||
version 1.14 - Sergey Poznyakoff, 2004-05-11
|
||
|
||
* Added support for POSIX.1-2001 and ustar archive formats.
|
||
* New option --format allows to select the output archive format
|
||
* The default output format can be selected at configuration time
|
||
by presetting the environment variable DEFAULT_ARCHIVE_FORMAT.
|
||
Allowed values are GNU, V7, OLDGNU and POSIX.
|
||
* New option --strip-path allows to cut off a given number of
|
||
path elements from the name of the file being extracted.
|
||
|
||
* New options --index-file, --no-overwrite-dir. The --overwrite-dir
|
||
option is now the default; use --no-overwrite-dir if you prefer
|
||
the previous default behavior.
|
||
|
||
* The semantics of -o option is changed. When extracting, it
|
||
does the same as --no-same-owner GNU tar option. This is compatible
|
||
with UNIX98 tar. Otherwise, its effect is the same as that of
|
||
--old-archive option. This latter is deprecated and will be removed
|
||
in future.
|
||
|
||
* New option --check-links prints a message if not all links are dumped
|
||
for a file being archived. This corresponds to the UNIX98 -l option.
|
||
The current semantics of the -l option is retained for compatibility
|
||
with previous releases, however such usage is strongly deprecated as
|
||
the option will change to its UNIX98 semantics in the future releases.
|
||
|
||
* New option --occurrence[=N] can be used in conjunction with one of
|
||
the subcommands --delete, --diff, --extract or --list when a list of
|
||
files is given either on the command line or via -T option. This
|
||
option instructs tar to process only the Nth occurrence of each named
|
||
file. N defaults to 1, so 'tar -x -f archive --occurrence filename'
|
||
extracts the first occurrence of 'filename' from 'archive'
|
||
and terminates without scanning to the end of the archive.
|
||
|
||
* New option --pax-option allows to control the handling of POSIX
|
||
keywords in 'pax' extended headers. It is equivalent to 'pax'
|
||
-o option.
|
||
|
||
* --incremental and --listed-incremental options work correctly on
|
||
individual files, as well as on directories.
|
||
|
||
* New scripts: backup (replaces old level-0 and level-1) and restore.
|
||
The scripts are compiled and installed if --enable-backup-scripts
|
||
option is given to configure.
|
||
|
||
* By default tar searches "rmt" utility in "$prefix/libexec/rmt",
|
||
which is consistent with the location where the version of "rmt"
|
||
included in the package is installed. Previous versions of tar
|
||
used "/etc/rmt". To install "rmt" to its traditional location,
|
||
run configure with option --libexecdir=/etc. Otherwise, if you
|
||
already have rmt installed and wish to use it, instead of the
|
||
shipped in version, set the variable DEFAULT_RMT_COMMAND to
|
||
the full path name of the utility, e.g., ./configure
|
||
DEFAULT_RMT_COMMAND=/etc/rmt.
|
||
|
||
Notice also that the full path name of the "rmt" utility to
|
||
use can be set at runtime, by giving option --rmt-command to
|
||
tar.
|
||
|
||
* Removed obsolete command line options:
|
||
** --absolute-paths superseded by --absolute-names
|
||
** --block-compress is not needed any longer
|
||
** --block-size superseded by --blocking-factor
|
||
** --modification-time superseded by --touch
|
||
** --read-full-blocks superseded by --read-full-records
|
||
** --record-number superseded by --block-number
|
||
** --version-control superseded by --backup
|
||
|
||
* New message translations fi (Finnish), gl (Galician), hr (Croatian),
|
||
hu (Hungarian), ms (Malaysian), nb (Norwegian), ro (Romanian), sk
|
||
(Slovak), zh_CN (Chinese simplified), zh_TW (Chinese traditional).
|
||
The code 'no' for Norwegian (Bokmål) has been withdrawn; use 'nb' instead.
|
||
|
||
* Bug fixes.
|
||
|
||
|
||
version 1.13.25 - Paul Eggert, 2001-09-26
|
||
|
||
* Bug fixes.
|
||
|
||
|
||
version 1.13.24 - Paul Eggert, 2001-09-22
|
||
|
||
* New option --overwrite-dir.
|
||
* Fixes for buffer overrun, porting, and copyright notice problems.
|
||
* The message translations for Korean are available again.
|
||
|
||
|
||
version 1.13.23 - Paul Eggert, 2001-09-13
|
||
|
||
* Bug, porting, and copyright notice fixes.
|
||
|
||
|
||
version 1.13.22 - Paul Eggert, 2001-08-29
|
||
|
||
* Bug fixes.
|
||
|
||
|
||
version 1.13.21 - Paul Eggert, 2001-08-28
|
||
|
||
* Porting and copyright notice fixes.
|
||
|
||
|
||
version 1.13.20 - Paul Eggert, 2001-08-27
|
||
|
||
* Some bugs were fixed:
|
||
- security problems
|
||
- hard links to symbolic links
|
||
|
||
* New option --recursion (the default) that is the inverse of --no-recursion.
|
||
|
||
* New options --anchored, --ignore-case, --wildcards,
|
||
--wildcards-match-slash, and their negations (e.g., --no-anchored).
|
||
Along with --recursion and --no-recursion, these options control how
|
||
exclude patterns are interpreted.
|
||
|
||
* The default interpretation of exclude patterns is now --no-anchored
|
||
--no-ignore-case --recursion --wildcards --wildcards-match-slash.
|
||
This is a quiet change to the semantics of --exclude. The previous
|
||
semantics were a failed attempt at backward compatibility but it
|
||
became clear that the semantics were puzzling and did not satisfy
|
||
everybody. Rather than continue to try to revive that dead horse we
|
||
thought it better to substitute cleaner semantics, with options so
|
||
that you can change the behavior more to your liking.
|
||
|
||
* New message translations for Indonesian and Turkish.
|
||
The translation for Korean has been withdrawn due to encoding errors.
|
||
It will be reissued once those are fixed.
|
||
|
||
|
||
version 1.13.19 - Paul Eggert, 2001-01-13
|
||
|
||
* The -I option has been withdrawn, as it was buggy and confusing.
|
||
Eventually it is planned to be reintroduced, with the same meaning as -T.
|
||
|
||
* With an option like -N DATE, if DATE starts with "/" or ".", it is taken
|
||
to be a file name; the last-modified time of that file is used as the date.
|
||
|
||
|
||
version 1.13.18 - Paul Eggert, 2000-10-29
|
||
|
||
* Some security problems have been fixed. 'tar -x' now modifies only
|
||
files under the working directory, unless you also specify an unsafe
|
||
option like --absolute-names or --overwrite.
|
||
|
||
* The short name of the --bzip option has been changed to -j,
|
||
and -I is now an alias for -T, for compatibility with Solaris tar.
|
||
|
||
* The manual is now distributed under the GNU Free Documentation License.
|
||
|
||
* The new environment variable TAR_OPTIONS holds default command-line options.
|
||
|
||
* The --no-recursion option now affects extraction too.
|
||
|
||
* The wording in some diagnostics has been changed slightly.
|
||
|
||
* Snapshot files now record whether each file was accessed via NFS.
|
||
The new file format is upward- and downward-compatible with the old.
|
||
|
||
* New language supported: da.
|
||
|
||
* Compilation by traditional (K&R) C compilers is no longer supported.
|
||
If you still use such a compiler, please use GCC instead.
|
||
|
||
* This version of tar works best with GNU gzip test version 1.3 or later.
|
||
Please see <ftp://alpha.gnu.org/gnu/gzip/>.
|
||
|
||
* 'tar --delete -f -' now works again.
|
||
|
||
|
||
version 1.13.17 - Paul Eggert, 2000-01-07.
|
||
|
||
* 'tar --delete -f -' is no longer allowed; it was too buggy.
|
||
* Diagnostic messages have been made more regular and consistent.
|
||
|
||
|
||
version 1.13.16 - Paul Eggert, 1999-12-13.
|
||
|
||
* By default, tar now refuses to overwrite an existing file when
|
||
extracting files from an archive; instead, it removes the file
|
||
before extracting it. If the existing file is a symbolic link, the
|
||
link is removed and not the pointed-to file. There is one
|
||
exception: existing nonempty directories are not removed, nor are
|
||
their ownerships or permissions extracted. This fixes some
|
||
longstanding security problems.
|
||
|
||
The new --overwrite option enables the old default behavior.
|
||
|
||
For regular files, tar implements this change by using the O_EXCL
|
||
option of 'open' to ensure that it creates the file; if this fails, it
|
||
removes the file and tries again. This is similar to the behavior of
|
||
the --unlink-first option, but it is faster in the common case of
|
||
extracting a new directory.
|
||
|
||
* By default, tar now ignores file names containing a component of '..'
|
||
when extracting, and warns about such file names when creating an archive.
|
||
To enable the old behavior, use the -P or --absolute-names option.
|
||
|
||
* Tar now handles file names with multibyte encodings (e.g., UTF-8, Shift-JIS)
|
||
correctly. It relies on the mbrtowc function to handle multibyte characters.
|
||
|
||
* The file generated by -g or --listed-incremental now uses a format
|
||
that is independent of locale, so that users need not worry about
|
||
locale when restoring a backup. This is needed for proper support
|
||
of multibyte characters. Old-format files can still be read, and
|
||
older versions of GNU tar can read new-format files, unless member
|
||
names have multibyte chars.
|
||
|
||
* Many diagnostics have been changed slightly, so that file names are
|
||
now output unambiguously. File names in diagnostics now are either
|
||
`quoted like this' (in the default C locale) or are followed by
|
||
colon, newline, or space, depending on context. Unprintable
|
||
characters are escaped with a C-like backslash conventions.
|
||
Terminating characters (e.g., close-quote, colon, newline)
|
||
are also escaped as needed.
|
||
|
||
* tar now ignores socket files when creating an archive.
|
||
Previously tar archived sockets as fifos, which caused problems.
|
||
|
||
|
||
version 1.13.15 - Paul Eggert, 1999-12-03.
|
||
|
||
* If a file's ctime changes when being archived, report an error.
|
||
Previously tar looked at mtime, which missed some errors.
|
||
|
||
|
||
version 1.13.14 - Paul Eggert, 1999-11-07.
|
||
|
||
* New translations ja, pt_BR.
|
||
* New options --help and --version for rmt.
|
||
* Ignore Solaris door files when creating an archive.
|
||
|
||
|
||
version 1.13.13 - Paul Eggert, 1999-10-11.
|
||
|
||
* Invalid headers in tar files now elicit errors, not just warnings.
|
||
* 'tar --version' output conforms to the latest GNU coding standards.
|
||
* If you specify an invalid date, 'tar' now substitutes (time_t) -1.
|
||
* 'configure --with-dmalloc' is no longer available.
|
||
|
||
|
||
version 1.13.12 - Paul Eggert, 1999-09-24.
|
||
|
||
* 'tar' now supports hard links to symbolic links.
|
||
|
||
* New options --no-same-owner, --no-same-permissions.
|
||
|
||
* --total now also outputs a human-readable size, and a throughput value.
|
||
|
||
* 'tar' now uses two's-complement base-256 when outputting header
|
||
values that are out of the range of the standard unsigned base-8
|
||
format. This affects archive members with negative or huge time
|
||
stamps or uids, and archive members 8 GB or larger. The new tar
|
||
archives cannot be read by traditional tar, or by older versions of
|
||
GNU tar. Use the --old-archive option to revert to the old
|
||
behavior, which uses unportable representations for negative values,
|
||
and which rejects large files.
|
||
|
||
* On 32-bit hosts, 'tar' now assumes that an incoming time stamp T in
|
||
the range 2**31 <= T < 2**32 represents the negative time (T -
|
||
2**32). This behavior is nonstandard and is not portable to 64-bit
|
||
time_t hosts, so 'tar' issues a warning.
|
||
|
||
* 'tar' no longer gives up extracting immediately upon discovering
|
||
that an archive contains garbage at the end. It attempts to extract
|
||
as many files as possible from the good data before the garbage.
|
||
|
||
* A read error now causes a nonzero exit status, not just a warning.
|
||
|
||
* Some diagnostics have been reworded for consistency.
|
||
|
||
|
||
version 1.13.11 - Paul Eggert, 1999-08-23.
|
||
|
||
* The short name of the --bzip option has been changed to -I,
|
||
for compatibility with paxutils.
|
||
|
||
* -T /dev/null now matches nothing; previously, it matched anything
|
||
if no explicit operands were given.
|
||
|
||
* The '--' option now works the same as with other GNU utilities;
|
||
it causes later operands to be interpreted as file names, not options,
|
||
even if they begin with '-'.
|
||
|
||
* For the --newer and --after-date options, the table of time zone
|
||
abbreviations like 'EST' has been updated to match current practice.
|
||
Also, local time abbreviations are now recognized, even if they are
|
||
not in tar's hardwired table. Remember, though, that you should use
|
||
numeric UTC offsets like '-0500' instead of abbreviations like
|
||
'EST', as abbreviations are not standardized and are ambiguous.
|
||
|
||
|
||
version 1.13.10 - Paul Eggert, 1999-08-20.
|
||
|
||
* 'tar' now uses signed base-64 when outputting header values that are
|
||
out of the range of the standard unsigned base-8 format. [This
|
||
change was superseded in 1.13.12, described above.]
|
||
|
||
|
||
version 1.13.9 - Paul Eggert, 1999-08-18.
|
||
|
||
* 'tar' now writes two zero blocks at end-of-archive instead of just one.
|
||
POSIX.1 requires this, and some other 'tar' implementations check for it.
|
||
|
||
* 'tar' no longer silently accepts a block containing nonzero checksum bytes
|
||
as a zero block.
|
||
|
||
* 'tar' now reads buggy tar files that have a null byte at the start of a
|
||
numeric header field.
|
||
|
||
|
||
version 1.13.8 - Paul Eggert, 1999-08-16.
|
||
|
||
* For compatibility with traditional 'tar', intermediate directories
|
||
created automatically by root are no longer given the uid and gid of
|
||
the original file or directory.
|
||
|
||
|
||
version 1.13.7 - Paul Eggert, 1999-08-14.
|
||
|
||
* --listed-incremental and --newer are now incompatible options.
|
||
|
||
* When creating an archive, leading './' is no longer stripped,
|
||
to match traditional tar's behavior (and simplify the documentation).
|
||
|
||
* --diff without --absolute-names no longer falls back on absolute names.
|
||
|
||
|
||
version 1.13.6 - Paul Eggert, 1999-08-11.
|
||
|
||
* An --exclude pattern containing / now excludes a file only if it matches an
|
||
initial prefix of the file name; a pattern without / continues to
|
||
exclude a file if it matches any file name component.
|
||
|
||
* The protocol for talking to rmt has been extended slightly.
|
||
Open flags are now communicated in symbolic format as well as numeric.
|
||
The symbolic format (e.g., "O_WRONLY|O_CREAT|O_TRUNC") is for portability
|
||
when rmt is operating on a different operating system from tar.
|
||
The numeric format is retained, and rmt uses it if symbolic format is absent,
|
||
for backward compatibility with older versions of tar and rmt.
|
||
|
||
* When writing GNU tar format headers, tar now uses signed base-64
|
||
for values that cannot be represented in unsigned octal.
|
||
This supports larger files (2**66 - 1 bytes instead of 2**33 - 1 bytes),
|
||
larger uids, negative time stamps, etc.
|
||
|
||
* When extracting files with unknown ownership, tar now looks up the
|
||
uid and gid "nobody" on hosts whose headers do not define UID_NOBODY
|
||
and GID_NOBODY, and falls back on uid/gid -2 if there is no "nobody".
|
||
|
||
* tar -t --numeric-owner now prints numeric uids and gids, not symbolic.
|
||
|
||
* New option -y or --bzip2 for bzip2 compression, by popular request.
|
||
|
||
|
||
version 1.13.5 - Paul Eggert, 1999-07-20.
|
||
|
||
* Do the delayed updates of file metadata even after a fatal error.
|
||
|
||
|
||
version 1.13.4 - Paul Eggert, 1999-07-20.
|
||
|
||
* Do not chmod unless we are root or the -p option was given;
|
||
this matches historical practice.
|
||
|
||
|
||
version 1.13.3 - Paul Eggert, 1999-07-16.
|
||
|
||
* A path name is excluded if any of its file name components matches an
|
||
excluded pattern, even if the path name was specified on the command line.
|
||
Also see 1.13.6 for later changes in this area.
|
||
|
||
|
||
version 1.13.2 - Paul Eggert, 1999-07-14.
|
||
|
||
* Bug reporting address changed to <bug-tar@gnu.org>.
|
||
|
||
|
||
version 1.13.1 - Paul Eggert, 1999-07-12.
|
||
|
||
* Bug fixes only.
|
||
|
||
version 1.13 - Paul Eggert, 1999-07-08.
|
||
|
||
* Support for large files, e.g., files larger than 2 GB on many 32-bit hosts.
|
||
Also, support for larger uids, device ids, etc.
|
||
* Many bug fixes and porting fixes.
|
||
* This release is only for fixes. A more ambitious test release,
|
||
with new features, is available as part of the paxutils. Please see:
|
||
ftp://alpha.gnu.org/gnu/paxutils/
|
||
The fixes in this release are intended to be merged with paxutils
|
||
at some point, but they haven't been merged yet.
|
||
* An interim GNU tar alpha had new --bzip2 and --ending-file options,
|
||
but they have been removed to maintain compatibility with paxutils.
|
||
Please try --use=bzip2 instead of --bzip2.
|
||
|
||
Version 1.12 - François Pinard, 1997-04.
|
||
|
||
Sensitive matters
|
||
* Use shell globbing patterns for --label, instead of regular expressions.
|
||
* Do not quote anymore internally over the quoting done by the shell.
|
||
|
||
Output for humans
|
||
* Offer internationalization capabilities of most recent GNU gettext.
|
||
* Messages available in many more languages, thanks to all translators!
|
||
* Usage of ISO 8601 dates in listings, instead of local American dates.
|
||
* More normalization and cleanup in error messages.
|
||
|
||
Creation
|
||
* For helping using tar with find, offer a --no-recursion option.
|
||
* Implement --numeric-owner for ignoring symbolic names at create time.
|
||
* New --owner, --group --mode options, still preliminary.
|
||
* Recognize creating an archive on /dev/null, so Amanda works faster.
|
||
* Object to the creation of an empty archive (like in 'tar cf FILE').
|
||
* Barely start implementing --posix and POSIXLY_CORRECT.
|
||
|
||
Extraction
|
||
* Make a better job at restoring file and directory attributes.
|
||
* Automatically attempt deleting existing files when in the way.
|
||
* Option --unlink-first (-U) removes most files prior to extraction.
|
||
* Option --recursive-unlink removes non-empty directories when in the way.
|
||
* Option --numeric-owner ignores owner/group names, it uses UID/GID instead.
|
||
* Use global umask when creating missing intermediate directories.
|
||
* When symlinks are not available, extract symbolic links as hard links.
|
||
* Diagnose extraction of contiguous files as regular files.
|
||
* New --backup, --suffix and --version-control options.
|
||
|
||
Various changes
|
||
* Better support of huge archives with --tape-length and --totals.
|
||
* Rename option --read-full-blocks (-B) to --read-full-records (-B).
|
||
* Rename option --block-size (-b) to --blocking-factor (-b).
|
||
* Rename option --record-number (-R) to --block-number (-R).
|
||
* With --block-number (-R), report null blocks and end of file.
|
||
* Implement --record-size for introducing a size in bytes.
|
||
* Delete --block-compress option and rather decide it automatically.
|
||
* Rename option --modification-time to --touch.
|
||
|
||
Many bugs are squashed, while others still run free.
|
||
|
||
Version 1.11.8 - François Pinard, 1995-06.
|
||
|
||
* Messages available in French, German, Portuguese and Swedish.
|
||
* The distribution provides a rudimentary Texinfo manual.
|
||
* The device defaults to stdin/stdout, unless overridden by the installer.
|
||
* Option --sparse (-S) should work on more systems.
|
||
* Option --rsh-command may select an alternative remote shell program.
|
||
|
||
Most changes are internal, and should yield better portability.
|
||
|
||
Version 1.11.2 - Michael Bushnell, 1993-03.
|
||
|
||
* Changes in backup scripts: cleaned up considerably; notices error
|
||
conditions better over rsh; DUMP_REMIND_SCRIPT is now an option in
|
||
backup-specs; new file dump-remind is an example of a
|
||
DUMP_REMIND_SCRIPT.
|
||
|
||
* Superfluous "Reading dirname" was a bug; fixed.
|
||
|
||
* Incompatibility problems with a bug on Solaris are fixed.
|
||
|
||
* New option --gzip (aliases are --ungzip and -z); calls gzip instead
|
||
of compress. Also, --use-compress-program lets you specify any
|
||
compress program. --compress-block is renamed --block-compress and
|
||
now requires one of the three compression options to be specified.
|
||
|
||
* Several error messages are cleaned up.
|
||
|
||
* Directory owners are now set properly when running as root.
|
||
|
||
* Provide DUMP_REMIND_SCRIPT in backup-specs as a possible option
|
||
for --info-script.
|
||
|
||
* Behave better with broken rmt servers.
|
||
|
||
* Dump scripts no longer use --atime-preserve; this causes a nasty probem.
|
||
|
||
* Several Makefile cleanups.
|
||
|
||
Version 1.11.1 - Michael Bushnell, 1992-09.
|
||
|
||
* Many bug fixes.
|
||
|
||
Version 1.11 - Michael Bushnell, 1992-09.
|
||
Version 1.10.16 - 1992-07.
|
||
Version 1.10.15 - 1992-06.
|
||
Version 1.10.14 - 1992-05.
|
||
Version 1.10.13 - 1992-01.
|
||
|
||
* Many bug fixes.
|
||
|
||
* Now uses GNU standard configure, generated by Autoconf.
|
||
|
||
* Long options now use '--'; use of '+' is deprecated and support
|
||
for it will eventually be removed.
|
||
|
||
* New option --null causes filenames read by -T to be
|
||
null-terminated, and causes -C to be ignored.
|
||
|
||
* New option --remove-files deletes files (but not directories)
|
||
after they are added to the archive.
|
||
|
||
* New option --ignore-failed-read prevents read-errors from affecting
|
||
the exit status.
|
||
|
||
* New option --checkpoint prints occasional messages as the tape
|
||
is being read or written.
|
||
|
||
* New option --show-omitted-dirs prints the names of directories
|
||
omitted from the archive.
|
||
|
||
* Some tape drives which use a non-standard method of indicating
|
||
end-of-tape now work correctly with multi-tape archives.
|
||
|
||
* --volno-file: Read the volume number used in prompting the user
|
||
(but not in recording volume ID's on the archive) from a file.
|
||
|
||
* When using --multi-volume, you can now give multiple -f arguments;
|
||
the various tape drives will get used in sequence and then wrap
|
||
around to the beginning.
|
||
|
||
* Remote archive names no longer have to be in /dev: any file with a
|
||
':' is interpreted as remote. If new option --force-local is given,
|
||
then even archive files with a ':' are considered local.
|
||
|
||
* New option --atime-preserve restores (if possible) atimes to
|
||
their original values after dumping the file.
|
||
|
||
* No longer does tar confusingly dump "." when you don't tell it
|
||
what to dump.
|
||
|
||
* When extracting directories, tar now correctly restores their
|
||
modification and access times.
|
||
|
||
* Longnames support is redone differently--long name info directly
|
||
precedes the long-named file or link in the archive, so you no
|
||
longer have to wait for the extract to hit the end of the tape for
|
||
long names to work.
|
||
|
||
Version 1.10 - Michael Bushnell, 1991-07.
|
||
|
||
* Filename to -G is optional. -C works right. Names +newer and
|
||
+newer-mtime work right.
|
||
|
||
* -g is now +incremental, -G is now +listed-incremental.
|
||
|
||
* Sparse files now work correctly.
|
||
|
||
* +volume is now called +label.
|
||
|
||
* +exclude now takes a filename argument, and +exclude-from does
|
||
what +exclude used to do.
|
||
|
||
* Exit status is now correct.
|
||
|
||
* +totals keeps track of total I/O and prints it when tar exits.
|
||
|
||
* When using +label with +extract, the label is now a regexp.
|
||
|
||
* New option +tape-length (-L) does multi-volume handling like BSD
|
||
dump: you tell tar how big the tape is and it will prompt at that
|
||
point instead of waiting for a write error.
|
||
|
||
* New backup scripts level-0 and level-1 which might be useful
|
||
to people. They use a file "backup-specs" for information, and
|
||
shouldn't need local modification. These are what we use to do
|
||
all our backups at the FSF.
|
||
|
||
Version 1.09 - Jay Fenlason, 1990-10.
|
||
Version 1.08 - Jay Fenlason, 1990-01.
|
||
Versions 1.07 back to 1.00 by Jay Fenlason.
|
||
|
||
* See ChangeLog for more details.
|
||
|
||
|
||
|
||
Copyright 1994-2023 Free Software Foundation, Inc.
|
||
|
||
This file is part of GNU tar.
|
||
|
||
GNU tar is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
the Free Software Foundation; either version 3 of the License, or
|
||
(at your option) any later version.
|
||
|
||
GNU tar is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||
|
||
Local variables:
|
||
mode: outline
|
||
paragraph-separate: "[ ]*$"
|
||
eval: (add-hook 'write-file-functions #'time-stamp nil t)
|
||
time-stamp-start: "changes. "
|
||
time-stamp-format: "%:y-%02m-%02d"
|
||
time-stamp-end: "\n"
|
||
end:
|