summaryrefslogtreecommitdiff
path: root/archivers/libarchive/files/doc/wiki/ManPageBsdtar1.wiki
diff options
context:
space:
mode:
Diffstat (limited to 'archivers/libarchive/files/doc/wiki/ManPageBsdtar1.wiki')
-rw-r--r--archivers/libarchive/files/doc/wiki/ManPageBsdtar1.wiki941
1 files changed, 941 insertions, 0 deletions
diff --git a/archivers/libarchive/files/doc/wiki/ManPageBsdtar1.wiki b/archivers/libarchive/files/doc/wiki/ManPageBsdtar1.wiki
new file mode 100644
index 00000000000..c1fedb14e1e
--- /dev/null
+++ b/archivers/libarchive/files/doc/wiki/ManPageBsdtar1.wiki
@@ -0,0 +1,941 @@
+#summary BSDTAR 1 manual page
+== NAME ==
+*tar*
+- manipulate tape archives
+== SYNOPSIS ==
+<br>
+*tar*
+`[`_bundled-flags_ `<`args`>``]`
+`[``<`_file_`>` | `<`_pattern_`>` ...`]`
+<br>
+*tar*
+{*-c*}
+`[`_options_`]`
+`[`_files_ | _directories_`]`
+<br>
+*tar*
+{*-r* | *-u*}
+*-f* _archive-file_
+`[`_options_`]`
+`[`_files_ | _directories_`]`
+<br>
+*tar*
+{*-t* | *-x*}
+`[`_options_`]`
+`[`_patterns_`]`
+== DESCRIPTION ==
+*tar*
+creates and manipulates streaming archive files.
+This implementation can extract from tar, pax, cpio, zip, jar, ar,
+and ISO 9660 cdrom images and can create tar, pax, cpio, ar,
+and shar archives.
+
+The first synopsis form shows a
+"bundled"
+option word.
+This usage is provided for compatibility with historical implementations.
+See COMPATIBILITY below for details.
+
+The other synopsis forms show the preferred usage.
+The first option to
+*tar*
+is a mode indicator from the following list:
+<dl>
+<dt>*-c*</dt><dd>
+Create a new archive containing the specified items.
+</dd><dt>*-r*</dt><dd>
+Like
+*-c*,
+but new entries are appended to the archive.
+Note that this only works on uncompressed archives stored in regular files.
+The
+*-f*
+option is required.
+</dd><dt>*-t*</dt><dd>
+List archive contents to stdout.
+</dd><dt>*-u*</dt><dd>
+Like
+*-r*,
+but new entries are added only if they have a modification date
+newer than the corresponding entry in the archive.
+Note that this only works on uncompressed archives stored in regular files.
+The
+*-f*
+option is required.
+</dd><dt>*-x*</dt><dd>
+Extract to disk from the archive.
+If a file with the same name appears more than once in the archive,
+each copy will be extracted, with later copies overwriting (replacing)
+earlier copies.
+</dd></dl>
+
+In
+*-c*,
+*-r*,
+or
+*-u*
+mode, each specified file or directory is added to the
+archive in the order specified on the command line.
+By default, the contents of each directory are also archived.
+
+In extract or list mode, the entire command line
+is read and parsed before the archive is opened.
+The pathnames or patterns on the command line indicate
+which items in the archive should be processed.
+Patterns are shell-style globbing patterns as
+documented in
+*tcsh*(1).
+== OPTIONS ==
+Unless specifically stated otherwise, options are applicable in
+all operating modes.
+<dl>
+<dt>*@*_archive_</dt><dd>
+(c and r mode only)
+The specified archive is opened and the entries
+in it will be appended to the current archive.
+As a simple example,
+{{{
+tar -c -f - newfile @original.tar
+}}}
+writes a new archive to standard output containing a file
+_newfile_
+and all of the entries from
+_original.tar_.
+In contrast,
+{{{
+tar -c -f - newfile original.tar
+}}}
+creates a new archive with only two entries.
+Similarly,
+{{{
+tar -czf - --format pax @-
+}}}
+reads an archive from standard input (whose format will be determined
+automatically) and converts it into a gzip-compressed
+pax-format archive on stdout.
+In this way,
+*tar*
+can be used to convert archives from one format to another.
+</dd><dt>*-b* _blocksize_</dt><dd>
+Specify the block size, in 512-byte records, for tape drive I/O.
+As a rule, this argument is only needed when reading from or writing
+to tape drives, and usually not even then as the default block size of
+20 records (10240 bytes) is very common.
+</dd><dt>*-C* _directory_</dt><dd>
+In c and r mode, this changes the directory before adding
+the following files.
+In x mode, change directories after opening the archive
+but before extracting entries from the archive.
+</dd><dt>*--check-links*</dt><dd>
+(c and r modes only)
+Issue a warning message unless all links to each file are archived.
+</dd><dt>*--chroot*</dt><dd>
+(x mode only)
+*chroot*()
+to the current directory after processing any
+*-C*
+options and before extracting any files.
+</dd><dt>*--exclude* _pattern_</dt><dd>
+Do not process files or directories that match the
+specified pattern.
+Note that exclusions take precedence over patterns or filenames
+specified on the command line.
+</dd><dt>*--format* _format_</dt><dd>
+(c, r, u mode only)
+Use the specified format for the created archive.
+Supported formats include
+"cpio",
+"pax",
+"shar",
+and
+"ustar".
+Other formats may also be supported; see
+*libarchive-formats*(5)
+for more information about currently-supported formats.
+In r and u modes, when extending an existing archive, the format specified
+here must be compatible with the format of the existing archive on disk.
+</dd><dt>*-f* _file_</dt><dd>
+Read the archive from or write the archive to the specified file.
+The filename can be
+_-_
+for standard input or standard output.
+If not specified, the default tape device will be used.
+(On
+FreeBSD,
+the default tape device is
+_/dev/sa0_.)
+</dd><dt>*-H*</dt><dd>
+(c and r mode only)
+Symbolic links named on the command line will be followed; the
+target of the link will be archived, not the link itself.
+</dd><dt>*-h*</dt><dd>
+(c and r mode only)
+Synonym for
+*-L*.
+</dd><dt>*-I*</dt><dd>
+Synonym for
+*-T*.
+</dd><dt>*--include* _pattern_</dt><dd>
+Process only files or directories that match the specified pattern.
+Note that exclusions specified with
+*--exclude*
+take precedence over inclusions.
+If no inclusions are explicitly specified, all entries are processed by
+default.
+The
+*--include*
+option is especially useful when filtering archives.
+For example, the command
+{{{
+tar -c -f new.tar --include='*foo*' @old.tgz
+}}}
+creates a new archive
+_new.tar_
+containing only the entries from
+_old.tgz_
+containing the string
+Sq foo.
+</dd><dt>*-j*</dt><dd>
+(c mode only)
+Compress the resulting archive with
+*bzip2*(1).
+In extract or list modes, this option is ignored.
+Note that, unlike other
+*tar*
+implementations, this implementation recognizes bzip2 compression
+automatically when reading archives.
+</dd><dt>*-k*</dt><dd>
+(x mode only)
+Do not overwrite existing files.
+In particular, if a file appears more than once in an archive,
+later copies will not overwrite earlier copies.
+</dd><dt>*--keep-newer-files*</dt><dd>
+(x mode only)
+Do not overwrite existing files that are newer than the
+versions appearing in the archive being extracted.
+</dd><dt>*-L*</dt><dd>
+(c and r mode only)
+All symbolic links will be followed.
+Normally, symbolic links are archived as such.
+With this option, the target of the link will be archived instead.
+</dd><dt>*-l*</dt><dd>
+This is a synonym for the
+*--check-links*
+option.
+</dd><dt>*-m*</dt><dd>
+(x mode only)
+Do not extract modification time.
+By default, the modification time is set to the time stored in the archive.
+</dd><dt>*-n*</dt><dd>
+(c, r, u modes only)
+Do not recursively archive the contents of directories.
+</dd><dt>*--newer* _date_</dt><dd>
+(c, r, u modes only)
+Only include files and directories newer than the specified date.
+This compares ctime entries.
+</dd><dt>*--newer-mtime* _date_</dt><dd>
+(c, r, u modes only)
+Like
+*--newer*,
+except it compares mtime entries instead of ctime entries.
+</dd><dt>*--newer-than* _file_</dt><dd>
+(c, r, u modes only)
+Only include files and directories newer than the specified file.
+This compares ctime entries.
+</dd><dt>*--newer-mtime-than* _file_</dt><dd>
+(c, r, u modes only)
+Like
+*--newer-than*,
+except it compares mtime entries instead of ctime entries.
+</dd><dt>*--nodump*</dt><dd>
+(c and r modes only)
+Honor the nodump file flag by skipping this file.
+</dd><dt>*--null*</dt><dd>
+(use with
+*-I*,
+*-T*,
+or
+*-X*)
+Filenames or patterns are separated by null characters,
+not by newlines.
+This is often used to read filenames output by the
+*-print0*
+option to
+*find*(1).
+</dd><dt>*--numeric-owner*</dt><dd>
+(x mode only)
+Ignore symbolic user and group names when restoring archives to disk,
+only numeric uid and gid values will be obeyed.
+</dd><dt>*-O*</dt><dd>
+(x, t modes only)
+In extract (-x) mode, files will be written to standard out rather than
+being extracted to disk.
+In list (-t) mode, the file listing will be written to stderr rather than
+the usual stdout.
+</dd><dt>*-o*</dt><dd>
+(x mode)
+Use the user and group of the user running the program rather
+than those specified in the archive.
+Note that this has no significance unless
+*-p*
+is specified, and the program is being run by the root user.
+In this case, the file modes and flags from
+the archive will be restored, but ACLs or owner information in
+the archive will be discarded.
+</dd><dt>*-o*</dt><dd>
+(c, r, u mode)
+A synonym for
+*--format* _ustar_
+</dd><dt>*--one-file-system*</dt><dd>
+(c, r, and u modes)
+Do not cross mount points.
+</dd><dt>*--options* _options_</dt><dd>
+Select optional behaviors for particular modules.
+The argument is a text string containing comma-separated
+keywords and values.
+These are passed to the modules that handle particular
+formats to control how those formats will behave.
+Each option has one of the following forms:
+<dl>
+<dt>_key=value_</dt><dd>
+The key will be set to the specified value in every module that supports it.
+Modules that do not support this key will ignore it.
+</dd><dt>_key_</dt><dd>
+The key will be enabled in every module that supports it.
+This is equivalent to
+_key_*=1*.
+</dd><dt>_!key_</dt><dd>
+The key will be disabled in every module that supports it.
+</dd><dt>_module:key=value_, _module:key_, _module:!key_</dt><dd>
+As above, but the corresponding key and value will be provided
+only to modules whose name matches
+_module_.
+</dd></dl>
+The currently supported modules and keys are:
+<dl>
+<dt>*iso9660:joliet*</dt><dd>
+Support Joliet extensions.
+This is enabled by default, use
+*!joliet*
+or
+*iso9660:!joliet*
+to disable.
+</dd><dt>*iso9660:rockridge*</dt><dd>
+Support Rock Ridge extensions.
+This is enabled by default, use
+*!rockridge*
+or
+*iso9660:!rockridge*
+to disable.
+</dd><dt>*gzip:compression-level*</dt><dd>
+A decimal integer from 0 to 9 specifying the gzip compression level.
+</dd><dt>*xz:compression-level*</dt><dd>
+A decimal integer from 0 to 9 specifying the xz compression level.
+</dd><dt>*mtree:*_keyword_</dt><dd>
+The mtree writer module allows you to specify which mtree keywords
+will be included in the output.
+Supported keywords include:
+*cksum*, *device*, *flags*, *gid*, *gname*, *indent*,
+*link*, *md5*, *mode*, *nlink*, *rmd160*, *sha1*, *sha256*,
+*sha384*, *sha512*, *size*, *time*, *uid*, *uname*.
+The default is equivalent to:
+"device, flags, gid, gname, link, mode, nlink, size, time, type, uid, uname".
+</dd><dt>*mtree:all*</dt><dd>
+Enables all of the above keywords.
+You can also use
+*mtree:!all*
+to disable all keywords.
+</dd><dt>*mtree:use-set*</dt><dd>
+Enable generation of
+*/set*
+lines in the output.
+</dd><dt>*mtree:indent*</dt><dd>
+Produce human-readable output by indenting options and splitting lines
+to fit into 80 columns.
+</dd><dt>*zip:compression*=_type_</dt><dd>
+Use
+_type_
+as compression method.
+Supported values are store (uncompressed) and deflate (gzip algorithm).
+</dd></dl>
+If a provided option is not supported by any module, that
+is a fatal error.
+</dd><dt>*-P*</dt><dd>
+Preserve pathnames.
+By default, absolute pathnames (those that begin with a /
+character) have the leading slash removed both when creating archives
+and extracting from them.
+Also,
+*tar*
+will refuse to extract archive entries whose pathnames contain
+_.._
+or whose target directory would be altered by a symlink.
+This option suppresses these behaviors.
+</dd><dt>*-p*</dt><dd>
+(x mode only)
+Preserve file permissions.
+Attempt to restore the full permissions, including owner, file modes, file
+flags and ACLs, if available, for each item extracted from the archive.
+By default, newly-created files are owned by the user running
+*tar*,
+the file mode is restored for newly-created regular files, and
+all other types of entries receive default permissions.
+If
+*tar*
+is being run by root, the default is to restore the owner unless the
+*-o*
+option is also specified.
+</dd><dt>*-q* (*--fast-read*)</dt><dd>
+(x and t mode only)
+Extract or list only the first archive entry that matches each pattern
+or filename operand.
+Exit as soon as each specified pattern or filename has been matched.
+By default, the archive is always read to the very end, since
+there can be multiple entries with the same name and, by convention,
+later entries overwrite earlier entries.
+This option is provided as a performance optimization.
+</dd><dt>*-S*</dt><dd>
+(x mode only)
+Extract files as sparse files.
+For every block on disk, check first if it contains only NULL bytes and seek
+over it otherwise.
+This works similiar to the conv=sparse option of dd.
+</dd><dt>*--strip-components* _count_</dt><dd>
+(x mode only)
+Remove the specified number of leading path elements.
+Pathnames with fewer elements will be silently skipped.
+Note that the pathname is edited after checking inclusion/exclusion patterns
+but before security checks.
+</dd><dt>*-s* _pattern_</dt><dd>
+Modify file or archive member names according to
+_pattern_.
+The pattern has the format
+_/old/new/_`[`gps`]`
+where
+_old_
+is a basic regular expression,
+_new_
+is the replacement string of the matched part,
+and the optional trailing letters modify
+how the replacement is handled.
+If
+_old_
+is not matched, the pattern is skipped.
+Within
+_new_,
+~ is substituted with the match, \1 to \9 with the content of
+the corresponding captured group.
+The optional trailing g specifies that matching should continue
+after the matched part and stopped on the first unmatched pattern.
+The optional trailing s specifies that the pattern applies to the value
+of symbolic links.
+The optional trailing p specifies that after a successful substitution
+the original path name and the new path name should be printed to
+standard error.
+</dd><dt>*-T* _filename_</dt><dd>
+In x or t mode,
+*tar*
+will read the list of names to be extracted from
+_filename_.
+In c mode,
+*tar*
+will read names to be archived from
+_filename_.
+The special name
+"-C"
+on a line by itself will cause the current directory to be changed to
+the directory specified on the following line.
+Names are terminated by newlines unless
+*--null*
+is specified.
+Note that
+*--null*
+also disables the special handling of lines containing
+"-C".
+</dd><dt>*-U*</dt><dd>
+(x mode only)
+Unlink files before creating them.
+Without this option,
+*tar*
+overwrites existing files, which preserves existing hardlinks.
+With this option, existing hardlinks will be broken, as will any
+symlink that would affect the location of an extracted file.
+</dd><dt>*--use-compress-program* _program_</dt><dd>
+Pipe the input (in x or t mode) or the output (in c mode) through
+_program_
+instead of using the builtin compression support.
+</dd><dt>*-v*</dt><dd>
+Produce verbose output.
+In create and extract modes,
+*tar*
+will list each file name as it is read from or written to
+the archive.
+In list mode,
+*tar*
+will produce output similar to that of
+*ls*(1).
+Additional
+*-v*
+options will provide additional detail.
+</dd><dt>*--version*</dt><dd>
+Print version of
+*tar*
+and
+*libarchive*,
+and exit.
+</dd><dt>*-w*</dt><dd>
+Ask for confirmation for every action.
+</dd><dt>*-X* _filename_</dt><dd>
+Read a list of exclusion patterns from the specified file.
+See
+*--exclude*
+for more information about the handling of exclusions.
+</dd><dt>*-y*</dt><dd>
+(c mode only)
+Compress the resulting archive with
+*bzip2*(1).
+In extract or list modes, this option is ignored.
+Note that, unlike other
+*tar*
+implementations, this implementation recognizes bzip2 compression
+automatically when reading archives.
+</dd><dt>*-z*</dt><dd>
+(c mode only)
+Compress the resulting archive with
+*gzip*(1).
+In extract or list modes, this option is ignored.
+Note that, unlike other
+*tar*
+implementations, this implementation recognizes gzip compression
+automatically when reading archives.
+</dd><dt>*-Z*</dt><dd>
+(c mode only)
+Compress the resulting archive with
+*compress*(1).
+In extract or list modes, this option is ignored.
+Note that, unlike other
+*tar*
+implementations, this implementation recognizes compress compression
+automatically when reading archives.
+</dd></dl>
+== ENVIRONMENT ==
+The following environment variables affect the execution of
+*tar*:
+<dl>
+<dt>*LANG*
+The locale to use.
+See
+*environ*(7)
+for more information.
+</dt><dt>*TAPE*
+The default tape device.
+The
+*-f*
+option overrides this.
+</dt><dt>*TZ*
+The timezone to use when displaying dates.
+See
+*environ*(7)
+for more information.
+</dt></dl>
+== FILES ==
+<dl>
+<dt>*/dev/sa0*
+The default tape device, if not overridden by the
+.IR TAPE
+environment variable or the
+*-f*
+option.
+</dt></dl>
+== EXIT STATUS ==
+The *tar* utility exits 0 on success, and >0 if an error occurs.
+== EXAMPLES ==
+The following creates a new archive
+called
+_file.tar.gz_
+that contains two files
+_source.c_
+and
+_source.h_:
+{{{
+tar -czf file.tar.gz source.c source.h
+}}}
+
+To view a detailed table of contents for this
+archive:
+{{{
+tar -tvf file.tar.gz
+}}}
+
+To extract all entries from the archive on
+the default tape drive:
+{{{
+tar -x
+}}}
+
+To examine the contents of an ISO 9660 cdrom image:
+{{{
+tar -tf image.iso
+}}}
+
+To move file hierarchies, invoke
+*tar*
+as
+{{{
+tar -cf - -C srcdir\. | tar -xpf - -C destdir
+}}}
+or more traditionally
+{{{
+cd srcdir ; tar -cf -\. | (cd destdir ; tar -xpf -)
+}}}
+
+In create mode, the list of files and directories to be archived
+can also include directory change instructions of the form
+*-C*_foo/baz_
+and archive inclusions of the form
+*@*_archive-file_.
+For example, the command line
+{{{
+tar -c -f new.tar foo1 @old.tgz -C/tmp foo2
+}}}
+will create a new archive
+_new.tar_.
+*tar*
+will read the file
+_foo1_
+from the current directory and add it to the output archive.
+It will then read each entry from
+_old.tgz_
+and add those entries to the output archive.
+Finally, it will switch to the
+_/tmp_
+directory and add
+_foo2_
+to the output archive.
+
+An input file in
+*mtree*(5)
+format can be used to create an output archive with arbitrary ownership,
+permissions, or names that differ from existing data on disk:
+
+{{{
+$ cat input.mtree
+}}}
+{{{
+#mtree
+}}}
+{{{
+usr/bin uid=0 gid=0 mode=0755 type=dir
+}}}
+{{{
+usr/bin/ls uid=0 gid=0 mode=0755 type=file content=myls
+}}}
+{{{
+$ tar -cvf output.tar @input.mtree
+}}}
+
+The
+*--newer*
+and
+*--newer-mtime*
+switches accept a variety of common date and time specifications, including
+"12 Mar 2005 7:14:29pm",
+"2005-03-12 19:14",
+"5 minutes ago",
+and
+"19:14 PST May 1".
+
+The
+*--options*
+argument can be used to control various details of archive generation
+or reading.
+For example, you can generate mtree output which only contains
+*type*, *time*,
+and
+*uid*
+keywords:
+{{{
+tar -cf file.tar --format=mtree --options='!all,type,time,uid' dir
+}}}
+or you can set the compression level used by gzip or xz compression:
+{{{
+tar -czf file.tar --options='compression-level=9'.
+}}}
+For more details, see the explanation of the
+*archive_read_set_options*()
+and
+*archive_write_set_options*()
+API calls that are described in
+*archive_read*(3)
+and
+*archive_write*(3).
+== COMPATIBILITY ==
+The bundled-arguments format is supported for compatibility
+with historic implementations.
+It consists of an initial word (with no leading - character) in which
+each character indicates an option.
+Arguments follow as separate words.
+The order of the arguments must match the order
+of the corresponding characters in the bundled command word.
+For example,
+{{{
+tar tbf 32 file.tar
+}}}
+specifies three flags
+*t*,
+*b*,
+and
+*f*.
+The
+*b*
+and
+*f*
+flags both require arguments,
+so there must be two additional items
+on the command line.
+The
+_32_
+is the argument to the
+*b*
+flag, and
+_file.tar_
+is the argument to the
+*f*
+flag.
+
+The mode options c, r, t, u, and x and the options
+b, f, l, m, o, v, and w comply with SUSv2.
+
+For maximum portability, scripts that invoke
+*tar*
+should use the bundled-argument format above, should limit
+themselves to the
+*c*,
+*t*,
+and
+*x*
+modes, and the
+*b*,
+*f*,
+*m*,
+*v*,
+and
+*w*
+options.
+
+Additional long options are provided to improve compatibility with other
+tar implementations.
+== SECURITY ==
+Certain security issues are common to many archiving programs, including
+*tar*.
+In particular, carefully-crafted archives can request that
+*tar*
+extract files to locations outside of the target directory.
+This can potentially be used to cause unwitting users to overwrite
+files they did not intend to overwrite.
+If the archive is being extracted by the superuser, any file
+on the system can potentially be overwritten.
+There are three ways this can happen.
+Although
+*tar*
+has mechanisms to protect against each one,
+savvy users should be aware of the implications:
+<ul>
+<li>
+Archive entries can have absolute pathnames.
+By default,
+*tar*
+removes the leading
+_/_
+character from filenames before restoring them to guard against this problem.
+</li><li>
+Archive entries can have pathnames that include
+_.._
+components.
+By default,
+*tar*
+will not extract files containing
+_.._
+components in their pathname.
+</li><li>
+Archive entries can exploit symbolic links to restore
+files to other directories.
+An archive can restore a symbolic link to another directory,
+then use that link to restore a file into that directory.
+To guard against this,
+*tar*
+checks each extracted path for symlinks.
+If the final path element is a symlink, it will be removed
+and replaced with the archive entry.
+If
+*-U*
+is specified, any intermediate symlink will also be unconditionally removed.
+If neither
+*-U*
+nor
+*-P*
+is specified,
+*tar*
+will refuse to extract the entry.
+</li></ul>
+To protect yourself, you should be wary of any archives that
+come from untrusted sources.
+You should examine the contents of an archive with
+{{{
+tar -tf filename
+}}}
+before extraction.
+You should use the
+*-k*
+option to ensure that
+*tar*
+will not overwrite any existing files or the
+*-U*
+option to remove any pre-existing files.
+You should generally not extract archives while running with super-user
+privileges.
+Note that the
+*-P*
+option to
+*tar*
+disables the security checks above and allows you to extract
+an archive while preserving any absolute pathnames,
+_.._
+components, or symlinks to other directories.
+== SEE ALSO ==
+*bzip2*(1),
+*compress*(1),
+*cpio*(1),
+*gzip*(1),
+*mt*(1),
+*pax*(1),
+*shar*(1),
+*libarchive*(3),
+*libarchive-formats*(5),
+*tar*(5)
+== STANDARDS ==
+There is no current POSIX standard for the tar command; it appeared
+in
+ISO/IEC 9945-1:1996 (``POSIX.1'')
+but was dropped from
+IEEE Std 1003.1-2001 (``POSIX.1'').
+The options used by this implementation were developed by surveying a
+number of existing tar implementations as well as the old POSIX specification
+for tar and the current POSIX specification for pax.
+
+The ustar and pax interchange file formats are defined by
+IEEE Std 1003.1-2001 (``POSIX.1'')
+for the pax command.
+== HISTORY ==
+A
+*tar*
+command appeared in Seventh Edition Unix, which was released in January, 1979.
+There have been numerous other implementations,
+many of which extended the file format.
+John Gilmore's
+*pdtar*
+public-domain implementation (circa November, 1987)
+was quite influential, and formed the basis of GNU tar.
+GNU tar was included as the standard system tar
+in
+FreeBSD
+beginning with
+FreeBSD 1.0.
+
+This is a complete re-implementation based on the
+*libarchive*(3)
+library.
+== BUGS ==
+This program follows
+ISO/IEC 9945-1:1996 (``POSIX.1'')
+for the definition of the
+*-l*
+option.
+Note that GNU tar prior to version 1.15 treated
+*-l*
+as a synonym for the
+*--one-file-system*
+option.
+
+The
+*-C* _dir_
+option may differ from historic implementations.
+
+All archive output is written in correctly-sized blocks, even
+if the output is being compressed.
+Whether or not the last output block is padded to a full
+block size varies depending on the format and the
+output device.
+For tar and cpio formats, the last block of output is padded
+to a full block size if the output is being
+written to standard output or to a character or block device such as
+a tape drive.
+If the output is being written to a regular file, the last block
+will not be padded.
+Many compressors, including
+*gzip*(1)
+and
+*bzip2*(1),
+complain about the null padding when decompressing an archive created by
+*tar*,
+although they still extract it correctly.
+
+The compression and decompression is implemented internally, so
+there may be insignificant differences between the compressed output
+generated by
+{{{
+tar -czf - file
+}}}
+and that generated by
+{{{
+tar -cf - file | gzip
+}}}
+
+The default should be to read and write archives to the standard I/O paths,
+but tradition (and POSIX) dictates otherwise.
+
+The
+*r*
+and
+*u*
+modes require that the archive be uncompressed
+and located in a regular file on disk.
+Other archives can be modified using
+*c*
+mode with the
+_@archive-file_
+extension.
+
+To archive a file called
+_@foo_
+or
+_-foo_
+you must specify it as
+_./@foo_
+or
+_./-foo_,
+respectively.
+
+In create mode, a leading
+_./_
+is always removed.
+A leading
+_/_
+is stripped unless the
+*-P*
+option is specified.
+
+There needs to be better support for file selection on both create
+and extract.
+
+There is not yet any support for multi-volume archives or for archiving
+sparse files.
+
+Converting between dissimilar archive formats (such as tar and cpio) using the
+*@*_-_
+convention can cause hard link information to be lost.
+(This is a consequence of the incompatible ways that different archive
+formats store hardlink information.)
+
+There are alternative long options for many of the short options that
+are deliberately not documented.