Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
TAR(1)			    General Commands Manual			TAR(1)

NAME
       tar -- manipulate tape archives

SYNOPSIS
       tar [bundled-flags <args>] [<file> | <pattern> ...]
       tar {-c}	[options] [files | directories]
       tar {-r | -u} -f	archive-file [options] [files |	directories]
       tar {-t | -x} [options] [patterns]

DESCRIPTION
       tar  creates and	manipulates streaming archive files.  This implementa-
       tion can	extract	from tar, pax, cpio, zip, jar, ar,  xar,  rpm,	7-zip,
       and  ISO	 9660  cdrom  images  and  can create tar, pax,	cpio, ar, zip,
       7-zip, and shar archives.

       The first synopsis form shows a "bundled" option	word.  This  usage  is
       provided	 for  compatibility with historical implementations.  See COM-
       PATIBILITY below	for details.

       The other synopsis forms	show the preferred usage.  The first option to
       tar is a	mode indicator from the	following list:
       -c      Create a	new archive containing the specified items.  The  long
	       option form is --create.
       -r      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.  The	long  option  form  is
	       --append.
       -t      List  archive  contents	to  stdout.   The  long	option form is
	       --list.
       -u      Like -r,	but new	entries	are added only if they have a  modifi-
	       cation  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.  The long form is
	       --update.
       -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  ex-
	       tracted,	 with  later  copies  overwriting  (replacing) earlier
	       copies.	The long option	form is	--extract.

       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 be-
       fore  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 op-
       erating modes.

       @archive
	       (c and r	modes 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 de-
	       termined	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.

       -a, --auto-compress
	       (c mode only) Use the archive suffix to decide  a  set  of  the
	       format and the compressions.  As	a simple example,
		     tar -a -cf	archive.tgz source.c source.h
	       creates	a new archive with restricted pax format and gzip com-
	       pression,
		     tar -a -cf	archive.tar.bz2.uu source.c source.h
	       creates a new archive with restricted pax format	and bzip2 com-
	       pression	and uuencode compression,
		     tar -a -cf	archive.zip source.c source.h
	       creates a new archive with zip format,
		     tar -a -jcf archive.tgz source.c source.h
	       ignores the "-j"	option,	and creates a  new  archive  with  re-
	       stricted	pax format and gzip compression,
		     tar -a -jcf archive.xxx source.c source.h
	       if  it  is  unknown  suffix or no suffix, creates a new archive
	       with restricted pax format and bzip2 compression.

       --acls  (c, r, u, x modes only) Archive or extract  POSIX.1e  or	 NFSv4
	       ACLs.   This is the reverse of --no-acls	and the	default	behav-
	       ior in c, r, and	u modes	(except	on Mac OS X) or	if tar is  run
	       in x mode as root.  On Mac OS X this option translates extended
	       ACLs  to	NFSv4 ACLs.  To	store extended ACLs the	--mac-metadata
	       option is preferred.

       -B, --read-full-blocks
	       Ignored for compatibility with other tar(1) implementations.

       -b blocksize, --block-size 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 de-
	       fault block size	of 20 records (10240 bytes) is very common.

       -C directory, --cd directory, --directory 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.

       --chroot
	       (x  mode	only) chroot() to the current directory	after process-
	       ing any -C options and before extracting	any files.

       --clear-nochange-fflags
	       (x mode only) Before removing file system  objects  to  replace
	       them,  clear  platform-specific	file  attributes or file flags
	       that might prevent removal.

       --exclude 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.

       --exclude-vcs
	       Do not process files or directories internally used by the ver-
	       sion   control	systems	  `Arch',  `Bazaar',  `CVS',  `Darcs',
	       `Mercurial', `RCS', `SCCS', `SVN' and `git'.

       --fflags
	       (c, r, u, x modes only) Archive	or  extract  platform-specific
	       file  attributes	 or  file  flags.   This  is  the  reverse  of
	       --no-fflags and the default behavior in c, r, and u modes or if
	       tar is run in x mode as root.

       --format	format
	       (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-sup-
	       ported  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.

       -f file,	--file file
	       Read  the  archive  from	 or write the archive to the specified
	       file.  The filename can be - for	 standard  input  or  standard
	       output.	 The default varies by system; on FreeBSD, the default
	       is /dev/sa0; on Linux, the default is /dev/st0.

       --gid id
	       Use the provided	group id number.  On extract,  this  overrides
	       the group id in the archive; the	group name in the archive will
	       be  ignored.   On create, this overrides	the group id read from
	       disk; if	--gname	is not also specified, the group name will  be
	       set to match the	group id.

       --gname name
	       Use  the	 provided  group name.	On extract, this overrides the
	       group name in the archive; if the provided group	name does  not
	       exist on	the system, the	group id (from the archive or from the
	       --gid  option)  will be used instead.  On create, this sets the
	       group name that will be stored in the archive;  the  name  will
	       not be verified against the system group	database.

       --group name[:gid]
	       Use the provided	group, if gid is not provided, name can	be ei-
	       ther  a	group  name or numeric id.  See	the --gname option for
	       details.

       -H      (c and r	modes only) Symbolic links named on the	 command  line
	       will  be	followed; the target of	the link will be archived, not
	       the link	itself.

       -h      (c and r	modes only) Synonym for	-L.

       -I      Synonym for -T.

       --help  Show usage.

       --hfsCompression
	       (x mode only) Mac OS X specific (v10.6 or later). Compress  ex-
	       tracted regular files with HFS+ compression.

       --ignore-zeros
	       An  alias  of --options read_concatenated_archives for compati-
	       bility with GNU tar.

       --include pattern
	       Process only files or directories that match the	specified pat-
	       tern.  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 exam-
	       ple, 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 `foo'.

       -J, --xz
	       (c  mode	 only)	Compress the resulting archive with xz(1).  In
	       extract or list modes, this option is ignored.  Note that  this
	       tar implementation recognizes XZ	compression automatically when
	       reading archives.

       -j, --bzip, --bzip2, --bunzip2
	       (c mode only) Compress the resulting archive with bzip2(1).  In
	       extract	or list	modes, this option is ignored.	Note that this
	       tar implementation recognizes bzip2  compression	 automatically
	       when reading archives.

       -k, --keep-old-files
	       (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.

       --keep-newer-files
	       (x  mode	 only)	Do not overwrite existing files	that are newer
	       than the	versions appearing in the archive being	extracted.

       -L, --dereference
	       (c and r	modes only) All	symbolic links will be followed.  Nor-
	       mally, symbolic links are archived as such.  With this  option,
	       the target of the link will be archived instead.

       -l, --check-links
	       (c  and	r modes	only) Issue a warning message unless all links
	       to each file are	archived.

       --lrzip
	       (c mode only) Compress the resulting archive with lrzip(1).  In
	       extract or list modes, this option is ignored.  Note that  this
	       tar  implementation  recognizes lrzip compression automatically
	       when reading archives.

       --lz4   (c mode only) Compress the archive with lz4-compatible compres-
	       sion before writing it.	In extract or list modes, this	option
	       is  ignored.   Note that	this tar implementation	recognizes lz4
	       compression automatically when reading archives.

       --zstd  (c mode only) Compress the archive  with	 zstd-compatible  com-
	       pression	before writing it.  In extract or list modes, this op-
	       tion  is	ignored.  Note that this tar implementation recognizes
	       zstd compression	automatically when reading archives.

       --lzma  (c mode only) Compress the resulting archive with the  original
	       LZMA  algorithm.	  In extract or	list modes, this option	is ig-
	       nored.  Use of this option  is  discouraged  and	 new  archives
	       should be created with --xz instead.  Note that this tar	imple-
	       mentation  recognizes LZMA compression automatically when read-
	       ing archives.

       --lzop  (c mode only) Compress the resulting archive with lzop(1).   In
	       extract	or list	modes, this option is ignored.	Note that this
	       tar implementation  recognizes  LZO  compression	 automatically
	       when reading archives.

       -m, --modification-time
	       (x  mode	 only)	Do not extract modification time.  By default,
	       the modification	time is	set to the time	stored in the archive.

       --mac-metadata
	       (c, r, u	and x mode only) Mac OS	X specific.   Archive  or  ex-
	       tract   extended	  ACLs	and  extended  file  attributes	 using
	       copyfile(3) in AppleDouble format.   This  is  the  reverse  of
	       --no-mac-metadata.   and	 the  default  behavior	in c, r, and u
	       modes or	if tar is run in x mode	as root.  Currently  supported
	       only  for  pax formats (including "pax restricted", the default
	       tar format for bsdtar.)

       -n, --norecurse,	--no-recursion
	       Do not operate recursively on the content of directories.

       --newer date
	       (c, r, u	modes only) Only include files and  directories	 newer
	       than the	specified date.	 This compares ctime entries.

       --newer-mtime date
	       (c, r, u	modes only) Like --newer, except it compares mtime en-
	       tries instead of	ctime entries.

       --newer-than file
	       (c,  r,	u modes	only) Only include files and directories newer
	       than the	specified file.	 This compares ctime entries.

       --newer-mtime-than file
	       (c, r, u	modes only)  Like  --newer-than,  except  it  compares
	       mtime entries instead of	ctime entries.

       --nodump
	       (c  and	r  modes  only)	Honor the nodump file flag by skipping
	       this file.

       --nopreserveHFSCompression
	       (x mode only) Mac OS X specific (v10.6 or later). Do  not  com-
	       press  extracted	 regular files which were compressed with HFS+
	       compression before archived.  By	default, compress the  regular
	       files again with	HFS+ compression.

       --null  (use with -I or -T) Filenames or	patterns are separated by null
	       characters,  not	by newlines.  This is often used to read file-
	       names output by the -print0 option to find(1).

       --no-acls
	       (c, r, u, x modes only) Do not archive or extract  POSIX.1e  or
	       NFSv4  ACLs.  This is the reverse of --acls and the default be-
	       havior if tar is	run as non-root	in x mode (on Mac OS X as  any
	       user in c, r, u and x modes).

       --no-fflags
	       (c,  r, u, x modes only)	Do not archive or extract file attrib-
	       utes or file flags.  This is the	reverse	of  --fflags  and  the
	       default behavior	if tar is run as non-root in x mode.

       --no-mac-metadata
	       (x  mode	 only)	Mac  OS	X specific.  Do	not archive or extract
	       ACLs and	extended file attributes using copyfile(3)  in	Apple-
	       Double format.  This is the reverse of --mac-metadata.  and the
	       default behavior	if tar is run as non-root in x mode.

       --no-read-sparse
	       (c,  r,	u modes	only) Do not read sparse file information from
	       disk.  This is the reverse of --read-sparse.

       --no-safe-writes
	       (x mode only) Do	not create temporary files and	use  rename(2)
	       to   replace  the  original  ones.   This  is  the  reverse  of
	       --safe-writes.

       --no-same-owner
	       (x mode only) Do	not extract owner and group IDs.  This is  the
	       reverse	of --same-owner	and the	default	behavior if tar	is run
	       as non-root.

       --no-same-permissions
	       (x mode only) Do	not  extract  full  permissions	 (SGID,	 SUID,
	       sticky  bit,  file  attributes or file flags, extended file at-
	       tributes	and ACLs).  This is the	reverse	of -p and the  default
	       behavior	if tar is run as non-root.

       --no-xattrs
	       (c, r, u, x modes only) Do not archive or extract extended file
	       attributes.   This  is  the reverse of --xattrs and the default
	       behavior	if tar is run as non-root in x mode.

       --numeric-owner
	       This is equivalent to --uname ""	--gname	"".   On  extract,  it
	       causes user and group names in the archive to be	ignored	in fa-
	       vor  of	the  numeric user and group ids.  On create, it	causes
	       user and	group names to not be stored in	the archive.

       -O, --to-stdout
	       (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.

       -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 -p is specified,	and the	program	is be-
	       ing run by the root user.  In this case,	 the  file  modes  and
	       flags  from the archive will be restored, but ACLs or owner in-
	       formation in the	archive	will be	discarded.

       -o      (c, r, u	mode) A	synonym	for --format ustar

       --older date
	       (c, r, u	modes only) Only include files and  directories	 older
	       than the	specified date.	 This compares ctime entries.

       --older-mtime date
	       (c, r, u	modes only) Like --older, except it compares mtime en-
	       tries instead of	ctime entries.

       --older-than file
	       (c,  r,	u modes	only) Only include files and directories older
	       than the	specified file.	 This compares ctime entries.

       --older-mtime-than file
	       (c, r, u	modes only)  Like  --older-than,  except  it  compares
	       mtime entries instead of	ctime entries.

       --one-file-system
	       (c, r, and u modes) Do not cross	mount points.

       --options options
	       Select optional behaviors for particular	modules.  The argument
	       is  a  text string containing comma-separated keywords and val-
	       ues.  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:
	       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.
	       key     The key will be enabled in every	module	that  supports
		       it.  This is equivalent to key=1.
	       !key    The  key	will be	disabled in every module that supports
		       it.
	       module:key=value, module:key, module:!key
		       As above, but the corresponding key and value  will  be
		       provided	only to	modules	whose name matches module.

	       The  complete list of supported modules and keys	for create and
	       append modes is in archive_write_set_options(3) and for extract
	       and list	modes in archive_read_set_options(3).

	       Examples	of supported options:
	       iso9660:joliet
		       Support Joliet extensions.  This	is enabled by default,
		       use !joliet or iso9660:!joliet to disable.
	       iso9660:rockridge
		       Support Rock Ridge extensions.  This is enabled by  de-
		       fault, use !rockridge or	iso9660:!rockridge to disable.
	       gzip:compression-level
		       A  decimal integer from 1 to 9 specifying the gzip com-
		       pression	level.
	       gzip:timestamp
		       Store timestamp.	  This	is  enabled  by	 default,  use
		       !timestamp or gzip:!timestamp to	disable.
	       lrzip:compression=type
		       Use  type  as compression method.  Supported values are
		       bzip2, gzip, lzo	(ultra	fast),	and  zpaq  (best,  ex-
		       tremely slow).
	       lrzip:compression-level
		       A decimal integer from 1	to 9 specifying	the lrzip com-
		       pression	level.
	       lz4:compression-level
		       A  decimal integer from 1 to 9 specifying the lzop com-
		       pression	level.
	       lz4:stream-checksum
		       Enable  stream  checksum.   This	 is  by	 default,  use
		       lz4:!stream-checksum to disable.
	       lz4:block-checksum
		       Enable block checksum (Disabled by default).
	       lz4:block-size
		       A  decimal  integer from	4 to 7 specifying the lz4 com-
		       pression	block size (7 is set by	default).
	       lz4:block-dependence
		       Use the previous	block of the  block  being  compressed
		       for a compression dictionary to improve compression ra-
		       tio.
	       zstd:compression-level=N
		       A  decimal  integer  specifying	the  zstd  compression
		       level.  Supported values	depend on the library version,
		       common values are from 1	to 22.
	       zstd:threads=N
		       Specify the number of worker threads to use,  or	 0  to
		       use  as many threads as there are CPU cores in the sys-
		       tem.
	       zstd:frame-per-file
		       Start a new compression frame at	the beginning of  each
		       file in the archive.
	       zstd:min-frame-in=N
		       In combination with zstd:frame-per-file,	do not start a
		       new  compression	 frame unless the uncompressed size of
		       the current frame is at least N bytes.  The number  may
		       be  followed  by	 k / kB, M / MB, or G /	GB to indicate
		       kilobytes, megabytes or gigabytes respectively.
	       zstd:min-frame-out=N, zstd:min-frame-size=N
		       In combination with zstd:frame-per-file,	do not start a
		       new compression frame unless the	compressed size	of the
		       current frame is	at least N bytes.  The number  may  be
		       followed	by k / kB, M / MB, or G	/ GB to	indicate kilo-
		       bytes, megabytes	or gigabytes respectively.
	       zstd:max-frame-in=N, zstd:max-frame-size=N
		       Start a new compression frame as	soon as	possible after
		       the  uncompressed  size	of the current frame exceeds N
		       bytes.  The number may be followed by k / kB, M	/  MB,
		       or G / GB to indicate kilobytes,	megabytes or gigabytes
		       respectively.  Values less than 1,024 will be rejected.
	       zstd:max-frame-out=N
		       Start a new compression frame as	soon as	possible after
		       the  compressed	size  of  the  current frame exceeds N
		       bytes.  The number may be followed by k / kB, M	/  MB,
		       or G / GB to indicate kilobytes,	megabytes or gigabytes
		       respectively.  Values less than 1,024 will be rejected.
	       lzop:compression-level
		       A  decimal integer from 1 to 9 specifying the lzop com-
		       pression	level.
	       xz:compression-level
		       A decimal integer from 0	to 9 specifying	 the  xz  com-
		       pression	level.
	       xz:threads
		       Specify	the  number of worker threads to use.  Setting
		       threads to a special value 0 makes xz(1)	 use  as  many
		       threads as there	are CPU	cores on the system.
	       mtree:keyword
		       The  mtree  writer  module  allows you to specify which
		       mtree keywords will be included in  the	output.	  Sup-
		       ported  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".
	       mtree:all
		       Enables	all  of	 the above keywords.  You can also use
		       mtree:!all to disable all keywords.
	       mtree:use-set
		       Enable generation of /set lines in the output.
	       mtree:indent
		       Produce human-readable output by	indenting options  and
		       splitting lines to fit into 80 columns.
	       zip:compression=type
		       Use  type  as compression method.  Supported values are
		       store (uncompressed) and	deflate	(gzip algorithm).
	       zip:encryption
		       Enable encryption using traditional zip encryption.
	       zip:encryption=type
		       Use type	as  encryption	type.	Supported  values  are
		       zipcrypt	 (traditional  zip encryption),	aes128 (WinZip
		       AES-128 encryption) and aes256 (WinZip AES-256  encryp-
		       tion).
	       read_concatenated_archives
		       Ignore  zeroed blocks in	the archive, which occurs when
		       multiple	tar archives have been concatenated  together.
		       Without	this  option,  only  the contents of the first
		       concatenated archive would be  read.   This  option  is
		       comparable to the -i, --ignore-zeros option of GNU tar.
	       If  a provided option is	not supported by any module, that is a
	       fatal error.

       -P, --absolute-paths
	       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.

       -p, --insecure, --preserve-permissions
	       (x mode only) Preserve file permissions.	  Attempt  to  restore
	       the  full permissions, including	file modes, file attributes or
	       file flags, extended file attributes and	 ACLs,	if  available,
	       for  each item extracted	from the archive.  This	is the reverse
	       of --no-same-permissions	and the	default	if tar is being	run as
	       root.  It  can  be  partially  overridden  by  also  specifying
	       --no-acls, --no-fflags, --no-mac-metadata or --no-xattrs.

       --passphrase passphrase
	       The  passphrase	is  used  to  extract  or  create an encrypted
	       archive.	 Currently, zip	is the only supported format that sup-
	       ports encryption.  You shouldn't	use this option	unless you re-
	       alize how insecure use of this option is.

       --posix
	       (c, r, u	mode only) Synonym for --format	pax

       -q, --fast-read
	       (x and t	mode only) Extract or list only	the first archive  en-
	       try  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  con-
	       vention,	 later entries overwrite earlier entries.  This	option
	       is provided as a	performance optimization.

       --read-sparse
	       (c, r, u	modes only) Read sparse	file  information  from	 disk.
	       This  is	the reverse of --no-read-sparse	and the	default	behav-
	       ior.

       -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 similar to the  conv=sparse  op-
	       tion of dd.

       -s pattern
	       Modify  file or archive member names according to pattern.  The
	       pattern has the format /old/new/[bghHprRsS] where old is	a  ba-
	       sic  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  op-
	       tional trailing g specifies that	matching should	continue after
	       the  matched part and stop 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.  The op-
	       tional trailing b specifies that	 the  substitution  should  be
	       matched from the	beginning of the string	rather than from right
	       after  the position at which the	previous matching substitution
	       ended.  Optional	trailing H, R, or S characters	suppress  sub-
	       stitutions  for hardlink	targets, regular filenames, or symlink
	       targets,	respectively.  Optional	trailing h, r, or s characters
	       enable substitutions for	hardlink targets,  regular  filenames,
	       or symlink targets, respectively.  The default is hrs which ap-
	       plies  substitutions  to	all names.  In particular, it is never
	       necessary to specify h, r, or s.

       --safe-writes
	       (x mode only) Extract files atomically.	By default tar unlinks
	       the original file with the same name as the extracted file  (if
	       it exists), and then creates it immediately under the same name
	       and  writes  to	it.   For a short period of time, applications
	       trying to access	the file might not find	it, or see  incomplete
	       results.	  If  --safe-writes  is	 enabled,  tar first creates a
	       unique temporary	file, then writes the new contents to the tem-
	       porary file, and	finally	renames	the temporary file to its  fi-
	       nal  name  atomically using rename(2).  This guarantees that an
	       application accessing the file, will either see	the  old  con-
	       tents or	the new	contents at all	times.

       --same-owner
	       (x mode only) Extract owner and group IDs.  This	is the reverse
	       of  --no-same-owner  and	 the default behavior if tar is	run as
	       root.

       --strip-components count
	       Remove the specified number of leading  path  elements.	 Path-
	       names  with fewer elements will be silently skipped.  Note that
	       the pathname is edited after checking inclusion/exclusion  pat-
	       terns but before	security checks.

       -T filename, --files-from filename
	       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  new-
	       lines  unless  --null is	specified.  Note that --null also dis-
	       ables the special handling of lines containing "-C".  Note:  If
	       you are generating lists	of files using find(1),	 you  probably
	       want to use -n as well.

       --totals
	       (c, r, u	modes only) After archiving all	files, print a summary
	       to stderr.

       -U, --unlink, --unlink-first
	       (x mode only) Unlink files before creating them.	 This can be a
	       minor performance optimization if most files already exist, but
	       can  make  things  slower  if  most files do not	already	exist.
	       This flag also causes tar to remove intervening directory  sym-
	       links  instead of reporting an error.  See the SECURITY section
	       below for more details.

       --uid id
	       Use the provided	user id	number and ignore the user  name  from
	       the  archive.  On create, if --uname is not also	specified, the
	       user name will be set to	match the user id.

       --uname name
	       Use the provided	user name.  On	extract,  this	overrides  the
	       user  name  in  the archive; if the provided user name does not
	       exist on	the system, it will be ignored and the user  id	 (from
	       the archive or from the --uid option) will be used instead.  On
	       create,	this  sets  the	 user  name that will be stored	in the
	       archive;	the name is not	verified against the system user data-
	       base.

       --use-compress-program program
	       Pipe the	input (in x or t mode)	or  the	 output	 (in  c	 mode)
	       through	program	 instead of using the builtin compression sup-
	       port.

       --owner name[:uid]
	       Use the provided	user, if uid is	not provided, name can be  ei-
	       ther an username	or numeric id.	See the	--uname	option for de-
	       tails.

       -v, --verbose
	       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).   An	additional -v option will also provide ls-like
	       details in create and extract mode.

       --version
	       Print version of	tar and	libarchive, and	exit.

       -w, --confirmation, --interactive
	       Ask for confirmation for	every action.

       -X filename, --exclude-from filename
	       Read a list of exclusion	patterns from the specified file.  See
	       --exclude for more information about  the  handling  of	exclu-
	       sions.

       --xattrs
	       (c,  r,	u,  x modes only) Archive or extract extended file at-
	       tributes.  This is the reverse of --no-xattrs and  the  default
	       behavior	 in  c,	 r,  and u modes or if tar is run in x mode as
	       root.

       -y      (c mode only) Compress the resulting archive with bzip2(1).  In
	       extract or list modes, this option is ignored.  Note that  this
	       tar  implementation  recognizes bzip2 compression automatically
	       when reading archives.

       -Z, --compress, --uncompress
	       (c mode only) Compress the resulting archive with  compress(1).
	       In  extract  or	list modes, this option	is ignored.  Note that
	       this tar	implementation recognizes compress  compression	 auto-
	       matically when reading archives.

       -z, --gunzip, --gzip
	       (c  mode	only) Compress the resulting archive with gzip(1).  In
	       extract or list modes, this option is ignored.  Note that  this
	       tar  implementation  recognizes	gzip compression automatically
	       when reading archives.

ENVIRONMENT
       The following environment variables affect the execution	of tar:

       TAR_READER_OPTIONS
	       The default options for format readers and compression readers.
	       The --options option overrides this.

       TAR_WRITER_OPTIONS
	       The default options for format writers and compression writers.
	       The --options option overrides this.

       LANG    The locale to use.  See environ(7) for more information.

       TAPE    The default device.  The	-f option overrides this.  Please  see
	       the description of the -f option	above for more details.

       TZ      The  timezone to	use when displaying dates.  See	environ(7) for
	       more information.

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	-Cfoo/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 his-
       toric 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  ar-
       guments,	 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  bun-
       dled-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, includ-
       ing 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 implica-
       tions:

              Archive entries can have	absolute pathnames.  By	 default,  tar
	       removes the leading / character from filenames before restoring
	       them to guard against this problem.

              Archive	entries	can have pathnames that	include	.. components.
	       By default, tar will not	extract	files containing .. components
	       in their	pathname.

              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 ex-
	       tracted path for	symlinks.  If the final	path element is	a sym-
	       link, it	will be	removed	and replaced with the  archive	entry.
	       If  -U  is specified, any intermediate symlink will also	be un-
	       conditionally removed.  If neither -U nor -P is specified,  tar
	       will refuse to extract the entry.
       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),	xz(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 supported	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 spec-
       ification 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 im-
       plementation (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)  li-
       brary.  It was first released with FreeBSD 5.4 in May, 2005.

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 out-
       put 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	gener-
       ated 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.

       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.)

FreeBSD	13.2			April 23, 2024				TAR(1)

NAME | SYNOPSIS | DESCRIPTION | OPTIONS | ENVIRONMENT | EXIT STATUS | EXAMPLES | COMPATIBILITY | SECURITY | SEE ALSO | STANDARDS | HISTORY | BUGS

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=tar&manpath=FreeBSD+14.1-RELEASE+and+Ports>

home | help