922 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			922 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\" Copyright (c) 2003-2007 Tim Kientzle
 | |
| .\" All rights reserved.
 | |
| .\"
 | |
| .\" Redistribution and use in source and binary forms, with or without
 | |
| .\" modification, are permitted provided that the following conditions
 | |
| .\" are met:
 | |
| .\" 1. Redistributions of source code must retain the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer.
 | |
| .\" 2. Redistributions in binary form must reproduce the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer in the
 | |
| .\"    documentation and/or other materials provided with the distribution.
 | |
| .\"
 | |
| .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 | |
| .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | |
| .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | |
| .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 | |
| .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | |
| .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | |
| .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | |
| .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | |
| .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | |
| .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | |
| .\" SUCH DAMAGE.
 | |
| .\"
 | |
| .\" $FreeBSD: src/usr.bin/tar/bsdtar.1,v 1.46 2008/12/06 07:37:55 kientzle Exp $
 | |
| .\"
 | |
| .Dd Oct 12, 2009
 | |
| .Dt BSDTAR 1
 | |
| .Os
 | |
| .Sh NAME
 | |
| .Nm tar
 | |
| .Nd manipulate tape archives
 | |
| .Sh SYNOPSIS
 | |
| .Nm
 | |
| .Op Ar bundled-flags Ao args Ac
 | |
| .Op Ao Ar file Ac | Ao Ar pattern Ac ...
 | |
| .Nm
 | |
| .Brq Fl c
 | |
| .Op Ar options
 | |
| .Op Ar files | Ar directories
 | |
| .Nm
 | |
| .Brq Fl r | Fl u
 | |
| .Fl f Ar archive-file
 | |
| .Op Ar options
 | |
| .Op Ar files | Ar directories
 | |
| .Nm
 | |
| .Brq Fl t | Fl x
 | |
| .Op Ar options
 | |
| .Op Ar patterns
 | |
| .Sh DESCRIPTION
 | |
| .Nm
 | |
| 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.
 | |
| .Pp
 | |
| The first synopsis form shows a
 | |
| .Dq bundled
 | |
| option word.
 | |
| This usage is provided for compatibility with historical implementations.
 | |
| See COMPATIBILITY below for details.
 | |
| .Pp
 | |
| The other synopsis forms show the preferred usage.
 | |
| The first option to
 | |
| .Nm
 | |
| is a mode indicator from the following list:
 | |
| .Bl -tag -compact -width indent
 | |
| .It Fl c
 | |
| Create a new archive containing the specified items.
 | |
| .It Fl r
 | |
| Like
 | |
| .Fl c ,
 | |
| but new entries are appended to the archive.
 | |
| Note that this only works on uncompressed archives stored in regular files.
 | |
| The
 | |
| .Fl f
 | |
| option is required.
 | |
| .It Fl t
 | |
| List archive contents to stdout.
 | |
| .It Fl u
 | |
| Like
 | |
| .Fl 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
 | |
| .Fl f
 | |
| option is required.
 | |
| .It Fl x
 | |
| 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.
 | |
| .El
 | |
| .Pp
 | |
| In
 | |
| .Fl c ,
 | |
| .Fl r ,
 | |
| or
 | |
| .Fl 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.
 | |
| .Pp
 | |
| 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
 | |
| .Xr tcsh 1 .
 | |
| .Sh OPTIONS
 | |
| Unless specifically stated otherwise, options are applicable in
 | |
| all operating modes.
 | |
| .Bl -tag -width indent
 | |
| .It Cm @ Ns Pa archive
 | |
| (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,
 | |
| .Dl Nm Fl c Fl f Pa - Pa newfile Cm @ Ns Pa original.tar
 | |
| writes a new archive to standard output containing a file
 | |
| .Pa newfile
 | |
| and all of the entries from
 | |
| .Pa original.tar .
 | |
| In contrast,
 | |
| .Dl Nm Fl c Fl f Pa - Pa newfile Pa original.tar
 | |
| creates a new archive with only two entries.
 | |
| Similarly,
 | |
| .Dl Nm Fl czf Pa - Fl -format Cm pax Cm @ Ns Pa -
 | |
| 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,
 | |
| .Nm
 | |
| can be used to convert archives from one format to another.
 | |
| .It Fl b Ar blocksize
 | |
| 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.
 | |
| .It Fl C Ar directory
 | |
| 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.
 | |
| .It Fl -check-links
 | |
| (c and r modes only)
 | |
| Issue a warning message unless all links to each file are archived.
 | |
| .It Fl -chroot
 | |
| (x mode only)
 | |
| .Fn chroot
 | |
| to the current directory after processing any
 | |
| .Fl C
 | |
| options and before extracting any files.
 | |
| .It Fl -exclude Ar pattern
 | |
| 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.
 | |
| .It Fl -format Ar format
 | |
| (c, r, u mode only)
 | |
| Use the specified format for the created archive.
 | |
| Supported formats include
 | |
| .Dq cpio ,
 | |
| .Dq pax ,
 | |
| .Dq shar ,
 | |
| and
 | |
| .Dq ustar .
 | |
| Other formats may also be supported; see
 | |
| .Xr 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.
 | |
| .It Fl f Ar file
 | |
| Read the archive from or write the archive to the specified file.
 | |
| The filename can be
 | |
| .Pa -
 | |
| for standard input or standard output.
 | |
| If not specified, the default tape device will be used.
 | |
| (On
 | |
| .Fx ,
 | |
| the default tape device is
 | |
| .Pa /dev/sa0 . )
 | |
| .It Fl H
 | |
| (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.
 | |
| .It Fl h
 | |
| (c and r mode only)
 | |
| Synonym for
 | |
| .Fl L .
 | |
| .It Fl I
 | |
| Synonym for
 | |
| .Fl T .
 | |
| .It Fl -include Ar pattern
 | |
| Process only files or directories that match the specified pattern.
 | |
| Note that exclusions specified with
 | |
| .Fl -exclude
 | |
| take precedence over inclusions.
 | |
| If no inclusions are explicitly specified, all entries are processed by
 | |
| default.
 | |
| The
 | |
| .Fl -include
 | |
| option is especially useful when filtering archives.
 | |
| For example, the command
 | |
| .Dl Nm Fl c Fl f Pa new.tar Fl -include='*foo*' Cm @ Ns Pa old.tgz
 | |
| creates a new archive
 | |
| .Pa new.tar
 | |
| containing only the entries from
 | |
| .Pa old.tgz
 | |
| containing the string
 | |
| .Sq foo .
 | |
| .It Fl j
 | |
| (c mode only)
 | |
| Compress the resulting archive with
 | |
| .Xr bzip2 1 .
 | |
| In extract or list modes, this option is ignored.
 | |
| Note that, unlike other
 | |
| .Nm tar
 | |
| implementations, this implementation recognizes bzip2 compression
 | |
| automatically when reading archives.
 | |
| .It Fl k
 | |
| (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.
 | |
| .It Fl -keep-newer-files
 | |
| (x mode only)
 | |
| Do not overwrite existing files that are newer than the
 | |
| versions appearing in the archive being extracted.
 | |
| .It Fl L
 | |
| (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.
 | |
| .It Fl l
 | |
| This is a synonym for the
 | |
| .Fl -check-links
 | |
| option.
 | |
| .It Fl m
 | |
| (x mode only)
 | |
| Do not extract modification time.
 | |
| By default, the modification time is set to the time stored in the archive.
 | |
| .It Fl n
 | |
| (c, r, u modes only)
 | |
| Do not recursively archive the contents of directories.
 | |
| .It Fl -newer Ar date
 | |
| (c, r, u modes only)
 | |
| Only include files and directories newer than the specified date.
 | |
| This compares ctime entries.
 | |
| .It Fl -newer-mtime Ar date
 | |
| (c, r, u modes only)
 | |
| Like
 | |
| .Fl -newer ,
 | |
| except it compares mtime entries instead of ctime entries.
 | |
| .It Fl -newer-than Pa file
 | |
| (c, r, u modes only)
 | |
| Only include files and directories newer than the specified file.
 | |
| This compares ctime entries.
 | |
| .It Fl -newer-mtime-than Pa file
 | |
| (c, r, u modes only)
 | |
| Like
 | |
| .Fl -newer-than ,
 | |
| except it compares mtime entries instead of ctime entries.
 | |
| .It Fl -nodump
 | |
| (c and r modes only)
 | |
| Honor the nodump file flag by skipping this file.
 | |
| .It Fl -null
 | |
| (use with
 | |
| .Fl I ,
 | |
| .Fl T ,
 | |
| or
 | |
| .Fl X )
 | |
| Filenames or patterns are separated by null characters,
 | |
| not by newlines.
 | |
| This is often used to read filenames output by the
 | |
| .Fl print0
 | |
| option to
 | |
| .Xr find 1 .
 | |
| .It Fl -numeric-owner
 | |
| (x mode only)
 | |
| Ignore symbolic user and group names when restoring archives to disk,
 | |
| only numeric uid and gid values will be obeyed.
 | |
| .It Fl O
 | |
| (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.
 | |
| .It Fl o
 | |
| (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
 | |
| .Fl 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.
 | |
| .It Fl o
 | |
| (c, r, u mode)
 | |
| A synonym for
 | |
| .Fl -format Ar ustar
 | |
| .It Fl -one-file-system
 | |
| (c, r, and u modes)
 | |
| Do not cross mount points.
 | |
| .It Fl -options Ar options
 | |
| 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:
 | |
| .Bl -tag -compact -width indent
 | |
| .It Ar key=value
 | |
| 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.
 | |
| .It Ar key
 | |
| The key will be enabled in every module that supports it.
 | |
| This is equivalent to
 | |
| .Ar key Ns Cm =1 .
 | |
| .It Ar !key
 | |
| The key will be disabled in every module that supports it.
 | |
| .It Ar module:key=value , Ar module:key , Ar module:!key
 | |
| As above, but the corresponding key and value will be provided
 | |
| only to modules whose name matches
 | |
| .Ar module .
 | |
| .El
 | |
| The currently supported modules and keys are:
 | |
| .Bl -tag -compact -width indent
 | |
| .It Cm iso9660:joliet
 | |
| Support Joliet extensions.
 | |
| This is enabled by default, use
 | |
| .Cm !joliet
 | |
| or
 | |
| .Cm iso9660:!joliet
 | |
| to disable.
 | |
| .It Cm iso9660:rockridge
 | |
| Support Rock Ridge extensions.
 | |
| This is enabled by default, use
 | |
| .Cm !rockridge
 | |
| or
 | |
| .Cm iso9660:!rockridge
 | |
| to disable.
 | |
| .It Cm gzip:compression-level
 | |
| A decimal integer from 0 to 9 specifying the gzip compression level.
 | |
| .It Cm xz:compression-level
 | |
| A decimal integer from 0 to 9 specifying the xz compression level.
 | |
| .It Cm mtree: Ns Ar keyword
 | |
| The mtree writer module allows you to specify which mtree keywords
 | |
| will be included in the output.
 | |
| Supported keywords include:
 | |
| .Cm cksum , Cm device , Cm flags , Cm gid , Cm gname , Cm indent ,
 | |
| .Cm link , Cm md5 , Cm mode , Cm nlink , Cm rmd160 , Cm sha1 , Cm sha256 ,
 | |
| .Cm sha384 , Cm sha512 , Cm size , Cm time , Cm uid , Cm uname .
 | |
| The default is equivalent to:
 | |
| .Dq device, flags, gid, gname, link, mode, nlink, size, time, type, uid, uname .
 | |
| .It Cm mtree:all
 | |
| Enables all of the above keywords.
 | |
| You can also use
 | |
| .Cm mtree:!all
 | |
| to disable all keywords.
 | |
| .It Cm mtree:use-set
 | |
| Enable generation of
 | |
| .Cm /set
 | |
| lines in the output.
 | |
| .It Cm mtree:indent
 | |
| Produce human-readable output by indenting options and splitting lines
 | |
| to fit into 80 columns.
 | |
| .It Cm zip:compression Ns = Ns Ar type
 | |
| Use
 | |
| .Ar type
 | |
| as compression method.
 | |
| Supported values are store (uncompressed) and deflate (gzip algorithm).
 | |
| .El
 | |
| If a provided option is not supported by any module, that
 | |
| is a fatal error.
 | |
| .It Fl P
 | |
| 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,
 | |
| .Nm
 | |
| will refuse to extract archive entries whose pathnames contain
 | |
| .Pa ..
 | |
| or whose target directory would be altered by a symlink.
 | |
| This option suppresses these behaviors.
 | |
| .It Fl p
 | |
| (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
 | |
| .Nm ,
 | |
| the file mode is restored for newly-created regular files, and
 | |
| all other types of entries receive default permissions.
 | |
| If
 | |
| .Nm
 | |
| is being run by root, the default is to restore the owner unless the
 | |
| .Fl o
 | |
| option is also specified.
 | |
| .It Fl q ( Fl -fast-read )
 | |
| (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.
 | |
| .It Fl S
 | |
| (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.
 | |
| .It Fl -strip-components Ar count
 | |
| (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.
 | |
| .It Fl s Ar pattern
 | |
| Modify file or archive member names according to
 | |
| .Pa pattern .
 | |
| The pattern has the format
 | |
| .Ar /old/new/ Ns Op gps
 | |
| where
 | |
| .Ar old
 | |
| is a basic regular expression,
 | |
| .Ar new
 | |
| is the replacement string of the matched part,
 | |
| and the optional trailing letters modify
 | |
| how the replacement is handled.
 | |
| If
 | |
| .Ar old
 | |
| is not matched, the pattern is skipped.
 | |
| Within
 | |
| .Ar 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.
 | |
| .It Fl T Ar filename
 | |
| In x or t mode,
 | |
| .Nm
 | |
| will read the list of names to be extracted from
 | |
| .Pa filename .
 | |
| In c mode,
 | |
| .Nm
 | |
| will read names to be archived from
 | |
| .Pa filename .
 | |
| The special name
 | |
| .Dq -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
 | |
| .Fl -null
 | |
| is specified.
 | |
| Note that
 | |
| .Fl -null
 | |
| also disables the special handling of lines containing
 | |
| .Dq -C .
 | |
| .It Fl U
 | |
| (x mode only)
 | |
| Unlink files before creating them.
 | |
| Without this option,
 | |
| .Nm
 | |
| 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.
 | |
| .It Fl -use-compress-program Ar program
 | |
| Pipe the input (in x or t mode) or the output (in c mode) through
 | |
| .Pa program
 | |
| instead of using the builtin compression support.
 | |
| .It Fl v
 | |
| Produce verbose output.
 | |
| In create and extract modes,
 | |
| .Nm
 | |
| will list each file name as it is read from or written to
 | |
| the archive.
 | |
| In list mode,
 | |
| .Nm
 | |
| will produce output similar to that of
 | |
| .Xr ls 1 .
 | |
| Additional
 | |
| .Fl v
 | |
| options will provide additional detail.
 | |
| .It Fl -version
 | |
| Print version of
 | |
| .Nm
 | |
| and
 | |
| .Nm libarchive ,
 | |
| and exit.
 | |
| .It Fl w
 | |
| Ask for confirmation for every action.
 | |
| .It Fl X Ar filename
 | |
| Read a list of exclusion patterns from the specified file.
 | |
| See
 | |
| .Fl -exclude
 | |
| for more information about the handling of exclusions.
 | |
| .It Fl y
 | |
| (c mode only)
 | |
| Compress the resulting archive with
 | |
| .Xr bzip2 1 .
 | |
| In extract or list modes, this option is ignored.
 | |
| Note that, unlike other
 | |
| .Nm tar
 | |
| implementations, this implementation recognizes bzip2 compression
 | |
| automatically when reading archives.
 | |
| .It Fl z
 | |
| (c mode only)
 | |
| Compress the resulting archive with
 | |
| .Xr gzip 1 .
 | |
| In extract or list modes, this option is ignored.
 | |
| Note that, unlike other
 | |
| .Nm tar
 | |
| implementations, this implementation recognizes gzip compression
 | |
| automatically when reading archives.
 | |
| .It Fl Z
 | |
| (c mode only)
 | |
| Compress the resulting archive with
 | |
| .Xr compress 1 .
 | |
| In extract or list modes, this option is ignored.
 | |
| Note that, unlike other
 | |
| .Nm tar
 | |
| implementations, this implementation recognizes compress compression
 | |
| automatically when reading archives.
 | |
| .El
 | |
| .Sh ENVIRONMENT
 | |
| The following environment variables affect the execution of
 | |
| .Nm :
 | |
| .Bl -tag -width ".Ev BLOCKSIZE"
 | |
| .It Ev LANG
 | |
| The locale to use.
 | |
| See
 | |
| .Xr environ 7
 | |
| for more information.
 | |
| .It Ev TAPE
 | |
| The default tape device.
 | |
| The
 | |
| .Fl f
 | |
| option overrides this.
 | |
| .It Ev TZ
 | |
| The timezone to use when displaying dates.
 | |
| See
 | |
| .Xr environ 7
 | |
| for more information.
 | |
| .El
 | |
| .Sh FILES
 | |
| .Bl -tag -width ".Ev BLOCKSIZE"
 | |
| .It Pa /dev/sa0
 | |
| The default tape device, if not overridden by the
 | |
| .Ev TAPE
 | |
| environment variable or the
 | |
| .Fl f
 | |
| option.
 | |
| .El
 | |
| .Sh EXIT STATUS
 | |
| .Ex -std
 | |
| .Sh EXAMPLES
 | |
| The following creates a new archive
 | |
| called
 | |
| .Ar file.tar.gz
 | |
| that contains two files
 | |
| .Ar source.c
 | |
| and
 | |
| .Ar source.h :
 | |
| .Dl Nm Fl czf Pa file.tar.gz Pa source.c Pa source.h
 | |
| .Pp
 | |
| To view a detailed table of contents for this
 | |
| archive:
 | |
| .Dl Nm Fl tvf Pa file.tar.gz
 | |
| .Pp
 | |
| To extract all entries from the archive on
 | |
| the default tape drive:
 | |
| .Dl Nm Fl x
 | |
| .Pp
 | |
| To examine the contents of an ISO 9660 cdrom image:
 | |
| .Dl Nm Fl tf Pa image.iso
 | |
| .Pp
 | |
| To move file hierarchies, invoke
 | |
| .Nm
 | |
| as
 | |
| .Dl Nm Fl cf Pa - Fl C Pa srcdir\ . | Nm Fl xpf Pa - Fl C Pa destdir
 | |
| or more traditionally
 | |
| .Dl cd srcdir \&; Nm Fl cf Pa -\ . | ( cd destdir \&; Nm Fl xpf Pa - )
 | |
| .Pp
 | |
| In create mode, the list of files and directories to be archived
 | |
| can also include directory change instructions of the form
 | |
| .Cm -C Ns Pa foo/baz
 | |
| and archive inclusions of the form
 | |
| .Cm @ Ns Pa archive-file .
 | |
| For example, the command line
 | |
| .Dl Nm Fl c Fl f Pa new.tar Pa foo1 Cm @ Ns Pa old.tgz Cm -C Ns Pa /tmp Pa foo2
 | |
| will create a new archive
 | |
| .Pa new.tar .
 | |
| .Nm
 | |
| will read the file
 | |
| .Pa foo1
 | |
| from the current directory and add it to the output archive.
 | |
| It will then read each entry from
 | |
| .Pa old.tgz
 | |
| and add those entries to the output archive.
 | |
| Finally, it will switch to the
 | |
| .Pa /tmp
 | |
| directory and add
 | |
| .Pa foo2
 | |
| to the output archive.
 | |
| .Pp
 | |
| An input file in
 | |
| .Xr mtree 5
 | |
| format can be used to create an output archive with arbitrary ownership,
 | |
| permissions, or names that differ from existing data on disk:
 | |
| .Pp
 | |
| .Dl $ cat input.mtree
 | |
| .Dl #mtree
 | |
| .Dl usr/bin uid=0 gid=0 mode=0755 type=dir
 | |
| .Dl usr/bin/ls uid=0 gid=0 mode=0755 type=file content=myls
 | |
| .Dl $ tar -cvf output.tar @input.mtree
 | |
| .Pp
 | |
| The
 | |
| .Fl -newer
 | |
| and
 | |
| .Fl -newer-mtime
 | |
| switches accept a variety of common date and time specifications, including
 | |
| .Dq 12 Mar 2005 7:14:29pm ,
 | |
| .Dq 2005-03-12 19:14 ,
 | |
| .Dq 5 minutes ago ,
 | |
| and
 | |
| .Dq 19:14 PST May 1 .
 | |
| .Pp
 | |
| The
 | |
| .Fl -options
 | |
| argument can be used to control various details of archive generation
 | |
| or reading.
 | |
| For example, you can generate mtree output which only contains
 | |
| .Cm type , Cm time ,
 | |
| and
 | |
| .Cm uid
 | |
| keywords:
 | |
| .Dl Nm Fl cf Pa file.tar Fl -format=mtree Fl -options='!all,type,time,uid' Pa dir
 | |
| or you can set the compression level used by gzip or xz compression:
 | |
| .Dl Nm Fl czf Pa file.tar Fl -options='compression-level=9' .
 | |
| For more details, see the explanation of the
 | |
| .Fn archive_read_set_options
 | |
| and
 | |
| .Fn archive_write_set_options
 | |
| API calls that are described in
 | |
| .Xr archive_read 3
 | |
| and
 | |
| .Xr archive_write 3 .
 | |
| .Sh 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,
 | |
| .Dl Nm Cm tbf 32 Pa file.tar
 | |
| specifies three flags
 | |
| .Cm t ,
 | |
| .Cm b ,
 | |
| and
 | |
| .Cm f .
 | |
| The
 | |
| .Cm b
 | |
| and
 | |
| .Cm f
 | |
| flags both require arguments,
 | |
| so there must be two additional items
 | |
| on the command line.
 | |
| The
 | |
| .Ar 32
 | |
| is the argument to the
 | |
| .Cm b
 | |
| flag, and
 | |
| .Ar file.tar
 | |
| is the argument to the
 | |
| .Cm f
 | |
| flag.
 | |
| .Pp
 | |
| The mode options c, r, t, u, and x and the options
 | |
| b, f, l, m, o, v, and w comply with SUSv2.
 | |
| .Pp
 | |
| For maximum portability, scripts that invoke
 | |
| .Nm tar
 | |
| should use the bundled-argument format above, should limit
 | |
| themselves to the
 | |
| .Cm c ,
 | |
| .Cm t ,
 | |
| and
 | |
| .Cm x
 | |
| modes, and the
 | |
| .Cm b ,
 | |
| .Cm f ,
 | |
| .Cm m ,
 | |
| .Cm v ,
 | |
| and
 | |
| .Cm w
 | |
| options.
 | |
| .Pp
 | |
| Additional long options are provided to improve compatibility with other
 | |
| tar implementations.
 | |
| .Sh SECURITY
 | |
| Certain security issues are common to many archiving programs, including
 | |
| .Nm .
 | |
| In particular, carefully-crafted archives can request that
 | |
| .Nm
 | |
| 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
 | |
| .Nm
 | |
| has mechanisms to protect against each one,
 | |
| savvy users should be aware of the implications:
 | |
| .Bl -bullet -width indent
 | |
| .It
 | |
| Archive entries can have absolute pathnames.
 | |
| By default,
 | |
| .Nm
 | |
| removes the leading
 | |
| .Pa /
 | |
| character from filenames before restoring them to guard against this problem.
 | |
| .It
 | |
| Archive entries can have pathnames that include
 | |
| .Pa ..
 | |
| components.
 | |
| By default,
 | |
| .Nm
 | |
| will not extract files containing
 | |
| .Pa ..
 | |
| components in their pathname.
 | |
| .It
 | |
| 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,
 | |
| .Nm
 | |
| 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
 | |
| .Fl U
 | |
| is specified, any intermediate symlink will also be unconditionally removed.
 | |
| If neither
 | |
| .Fl U
 | |
| nor
 | |
| .Fl P
 | |
| is specified,
 | |
| .Nm
 | |
| will refuse to extract the entry.
 | |
| .El
 | |
| To protect yourself, you should be wary of any archives that
 | |
| come from untrusted sources.
 | |
| You should examine the contents of an archive with
 | |
| .Dl Nm Fl tf Pa filename
 | |
| before extraction.
 | |
| You should use the
 | |
| .Fl k
 | |
| option to ensure that
 | |
| .Nm
 | |
| will not overwrite any existing files or the
 | |
| .Fl U
 | |
| option to remove any pre-existing files.
 | |
| You should generally not extract archives while running with super-user
 | |
| privileges.
 | |
| Note that the
 | |
| .Fl P
 | |
| option to
 | |
| .Nm
 | |
| disables the security checks above and allows you to extract
 | |
| an archive while preserving any absolute pathnames,
 | |
| .Pa ..
 | |
| components, or symlinks to other directories.
 | |
| .Sh SEE ALSO
 | |
| .Xr bzip2 1 ,
 | |
| .Xr compress 1 ,
 | |
| .Xr cpio 1 ,
 | |
| .Xr gzip 1 ,
 | |
| .Xr mt 1 ,
 | |
| .Xr pax 1 ,
 | |
| .Xr shar 1 ,
 | |
| .Xr libarchive 3 ,
 | |
| .Xr libarchive-formats 5 ,
 | |
| .Xr tar 5
 | |
| .Sh STANDARDS
 | |
| There is no current POSIX standard for the tar command; it appeared
 | |
| in
 | |
| .St -p1003.1-96
 | |
| but was dropped from
 | |
| .St -p1003.1-2001 .
 | |
| 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.
 | |
| .Pp
 | |
| The ustar and pax interchange file formats are defined by
 | |
| .St -p1003.1-2001
 | |
| for the pax command.
 | |
| .Sh HISTORY
 | |
| A
 | |
| .Nm 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
 | |
| .Nm 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
 | |
| .Fx
 | |
| beginning with
 | |
| .Fx 1.0 .
 | |
| .Pp
 | |
| This is a complete re-implementation based on the
 | |
| .Xr libarchive 3
 | |
| library.
 | |
| .Sh BUGS
 | |
| This program follows
 | |
| .St -p1003.1-96
 | |
| for the definition of the
 | |
| .Fl l
 | |
| option.
 | |
| Note that GNU tar prior to version 1.15 treated
 | |
| .Fl l
 | |
| as a synonym for the
 | |
| .Fl -one-file-system
 | |
| option.
 | |
| .Pp
 | |
| The
 | |
| .Fl C Pa dir
 | |
| option may differ from historic implementations.
 | |
| .Pp
 | |
| 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
 | |
| .Xr gzip 1
 | |
| and
 | |
| .Xr bzip2 1 ,
 | |
| complain about the null padding when decompressing an archive created by
 | |
| .Nm ,
 | |
| although they still extract it correctly.
 | |
| .Pp
 | |
| The compression and decompression is implemented internally, so
 | |
| there may be insignificant differences between the compressed output
 | |
| generated by
 | |
| .Dl Nm Fl czf Pa - file
 | |
| and that generated by
 | |
| .Dl Nm Fl cf Pa - file | Nm gzip
 | |
| .Pp
 | |
| The default should be to read and write archives to the standard I/O paths,
 | |
| but tradition (and POSIX) dictates otherwise.
 | |
| .Pp
 | |
| The
 | |
| .Cm r
 | |
| and
 | |
| .Cm u
 | |
| modes require that the archive be uncompressed
 | |
| and located in a regular file on disk.
 | |
| Other archives can be modified using
 | |
| .Cm c
 | |
| mode with the
 | |
| .Pa @archive-file
 | |
| extension.
 | |
| .Pp
 | |
| To archive a file called
 | |
| .Pa @foo
 | |
| or
 | |
| .Pa -foo
 | |
| you must specify it as
 | |
| .Pa ./@foo
 | |
| or
 | |
| .Pa ./-foo ,
 | |
| respectively.
 | |
| .Pp
 | |
| In create mode, a leading
 | |
| .Pa ./
 | |
| is always removed.
 | |
| A leading
 | |
| .Pa /
 | |
| is stripped unless the
 | |
| .Fl P
 | |
| option is specified.
 | |
| .Pp
 | |
| There needs to be better support for file selection on both create
 | |
| and extract.
 | |
| .Pp
 | |
| There is not yet any support for multi-volume archives or for archiving
 | |
| sparse files.
 | |
| .Pp
 | |
| Converting between dissimilar archive formats (such as tar and cpio) using the
 | |
| .Cm @ Ns Pa -
 | |
| convention can cause hard link information to be lost.
 | |
| (This is a consequence of the incompatible ways that different archive
 | |
| formats store hardlink information.)
 | |
| .Pp
 | |
| There are alternative long options for many of the short options that
 | |
| are deliberately not documented.
 | 
