1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849 |
- GNU tar NEWS - User visible changes. 2023-09-12
- Please send GNU tar bug reports to <[email protected]>
- 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 <[email protected]>.
- 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:
|