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.