1.\" Copyright (c) 2003-2007 Tim Kientzle 2.\" Copyright (c) 2017 Martin Matuska 3.\" All rights reserved. 4.\" 5.\" Redistribution and use in source and binary forms, with or without 6.\" modification, are permitted provided that the following conditions 7.\" are met: 8.\" 1. Redistributions of source code must retain the above copyright 9.\" notice, this list of conditions and the following disclaimer. 10.\" 2. Redistributions in binary form must reproduce the above copyright 11.\" notice, this list of conditions and the following disclaimer in the 12.\" documentation and/or other materials provided with the distribution. 13.\" 14.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24.\" SUCH DAMAGE. 25.\" 26.\" $FreeBSD$ 27.\" 28.Dd October 1, 2017 29.Dt TAR 1 30.Os 31.Sh NAME 32.Nm tar 33.Nd manipulate tape archives 34.Sh SYNOPSIS 35.Nm 36.Op Ar bundled-flags Ao args Ac 37.Op Ao Ar file Ac | Ao Ar pattern Ac ... 38.Nm 39.Brq Fl c 40.Op Ar options 41.Op Ar files | Ar directories 42.Nm 43.Brq Fl r | Fl u 44.Fl f Ar archive-file 45.Op Ar options 46.Op Ar files | Ar directories 47.Nm 48.Brq Fl t | Fl x 49.Op Ar options 50.Op Ar patterns 51.Sh DESCRIPTION 52.Nm 53creates and manipulates streaming archive files. 54This implementation can extract from tar, pax, cpio, zip, jar, ar, xar, 55rpm, 7-zip, and ISO 9660 cdrom images and can create tar, pax, cpio, ar, zip, 567-zip, and shar archives. 57.Pp 58The first synopsis form shows a 59.Dq bundled 60option word. 61This usage is provided for compatibility with historical implementations. 62See COMPATIBILITY below for details. 63.Pp 64The other synopsis forms show the preferred usage. 65The first option to 66.Nm 67is a mode indicator from the following list: 68.Bl -tag -compact -width indent 69.It Fl c 70Create a new archive containing the specified items. 71The long option form is 72.Fl Fl create . 73.It Fl r 74Like 75.Fl c , 76but new entries are appended to the archive. 77Note that this only works on uncompressed archives stored in regular files. 78The 79.Fl f 80option is required. 81The long option form is 82.Fl Fl append . 83.It Fl t 84List archive contents to stdout. 85The long option form is 86.Fl Fl list . 87.It Fl u 88Like 89.Fl r , 90but new entries are added only if they have a modification date 91newer than the corresponding entry in the archive. 92Note that this only works on uncompressed archives stored in regular files. 93The 94.Fl f 95option is required. 96The long form is 97.Fl Fl update . 98.It Fl x 99Extract to disk from the archive. 100If a file with the same name appears more than once in the archive, 101each copy will be extracted, with later copies overwriting (replacing) 102earlier copies. 103The long option form is 104.Fl Fl extract . 105.El 106.Pp 107In 108.Fl c , 109.Fl r , 110or 111.Fl u 112mode, each specified file or directory is added to the 113archive in the order specified on the command line. 114By default, the contents of each directory are also archived. 115.Pp 116In extract or list mode, the entire command line 117is read and parsed before the archive is opened. 118The pathnames or patterns on the command line indicate 119which items in the archive should be processed. 120Patterns are shell-style globbing patterns as 121documented in 122.Xr tcsh 1 . 123.Sh OPTIONS 124Unless specifically stated otherwise, options are applicable in 125all operating modes. 126.Bl -tag -width indent 127.It Cm @ Ns Pa archive 128(c and r modes only) 129The specified archive is opened and the entries 130in it will be appended to the current archive. 131As a simple example, 132.Dl Nm Fl c Fl f Pa - Pa newfile Cm @ Ns Pa original.tar 133writes a new archive to standard output containing a file 134.Pa newfile 135and all of the entries from 136.Pa original.tar . 137In contrast, 138.Dl Nm Fl c Fl f Pa - Pa newfile Pa original.tar 139creates a new archive with only two entries. 140Similarly, 141.Dl Nm Fl czf Pa - Fl Fl format Cm pax Cm @ Ns Pa - 142reads an archive from standard input (whose format will be determined 143automatically) and converts it into a gzip-compressed 144pax-format archive on stdout. 145In this way, 146.Nm 147can be used to convert archives from one format to another. 148.It Fl a , Fl Fl auto-compress 149(c mode only) 150Use the archive suffix to decide a set of the format and 151the compressions. 152As a simple example, 153.Dl Nm Fl a Fl cf Pa archive.tgz source.c source.h 154creates a new archive with restricted pax format and gzip compression, 155.Dl Nm Fl a Fl cf Pa archive.tar.bz2.uu source.c source.h 156creates a new archive with restricted pax format and bzip2 compression 157and uuencode compression, 158.Dl Nm Fl a Fl cf Pa archive.zip source.c source.h 159creates a new archive with zip format, 160.Dl Nm Fl a Fl jcf Pa archive.tgz source.c source.h 161ignores the 162.Dq -j 163option, and creates a new archive with restricted pax format 164and gzip compression, 165.Dl Nm Fl a Fl jcf Pa archive.xxx source.c source.h 166if it is unknown suffix or no suffix, creates a new archive with 167restricted pax format and bzip2 compression. 168.It Fl Fl acls 169(c, r, u, x modes only) 170Archive or extract POSIX.1e or NFSv4 ACLs. This is the reverse of 171.Fl Fl no-acls 172and the default behavior in c, r, and u modes (except on Mac OS X) or if 173.Nm 174is run in x mode as root. On Mac OS X this option translates extended ACLs 175to NFSv4 ACLs. To store extended ACLs the 176.Fl Fl mac-metadata 177option is preferred. 178.It Fl B , Fl Fl read-full-blocks 179Ignored for compatibility with other 180.Xr tar 1 181implementations. 182.It Fl b Ar blocksize , Fl Fl block-size Ar blocksize 183Specify the block size, in 512-byte records, for tape drive I/O. 184As a rule, this argument is only needed when reading from or writing 185to tape drives, and usually not even then as the default block size of 18620 records (10240 bytes) is very common. 187.It Fl C Ar directory , Fl Fl cd Ar directory , Fl Fl directory Ar directory 188In c and r mode, this changes the directory before adding 189the following files. 190In x mode, change directories after opening the archive 191but before extracting entries from the archive. 192.It Fl Fl chroot 193(x mode only) 194.Fn chroot 195to the current directory after processing any 196.Fl C 197options and before extracting any files. 198.It Fl Fl clear-nochange-fflags 199(x mode only) 200Before removing file system objects to replace them, clear platform-specific 201file flags that might prevent removal. 202.It Fl Fl exclude Ar pattern 203Do not process files or directories that match the 204specified pattern. 205Note that exclusions take precedence over patterns or filenames 206specified on the command line. 207.It Fl Fl fflags 208(c, r, u, x modes only) 209Archive or extract file flags. This is the reverse of 210.Fl Fl no-fflags 211and the default behavior in c, r, and u modes or if 212.Nm 213is run in x mode as root. 214.It Fl Fl format Ar format 215(c, r, u mode only) 216Use the specified format for the created archive. 217Supported formats include 218.Dq cpio , 219.Dq pax , 220.Dq shar , 221and 222.Dq ustar . 223Other formats may also be supported; see 224.Xr libarchive-formats 5 225for more information about currently-supported formats. 226In r and u modes, when extending an existing archive, the format specified 227here must be compatible with the format of the existing archive on disk. 228.It Fl f Ar file , Fl Fl file Ar file 229Read the archive from or write the archive to the specified file. 230The filename can be 231.Pa - 232for standard input or standard output. 233The default varies by system; 234on 235.Fx , 236the default is 237.Pa /dev/sa0 ; 238on Linux, the default is 239.Pa /dev/st0 . 240.It Fl Fl gid Ar id 241Use the provided group id number. 242On extract, this overrides the group id in the archive; 243the group name in the archive will be ignored. 244On create, this overrides the group id read from disk; 245if 246.Fl Fl gname 247is not also specified, the group name will be set to 248match the group id. 249.It Fl Fl gname Ar name 250Use the provided group name. 251On extract, this overrides the group name in the archive; 252if the provided group name does not exist on the system, 253the group id 254(from the archive or from the 255.Fl Fl gid 256option) 257will be used instead. 258On create, this sets the group name that will be stored 259in the archive; 260the name will not be verified against the system group database. 261.It Fl H 262(c and r modes only) 263Symbolic links named on the command line will be followed; the 264target of the link will be archived, not the link itself. 265.It Fl h 266(c and r modes only) 267Synonym for 268.Fl L . 269.It Fl I 270Synonym for 271.Fl T . 272.It Fl Fl help 273Show usage. 274.It Fl Fl hfsCompression 275(x mode only) 276Mac OS X specific (v10.6 or later). Compress extracted regular files with HFS+ 277compression. 278.It Fl Fl ignore-zeros 279An alias of 280.Fl Fl options Cm read_concatenated_archives 281for compatibility with GNU tar. 282.It Fl Fl include Ar pattern 283Process only files or directories that match the specified pattern. 284Note that exclusions specified with 285.Fl Fl exclude 286take precedence over inclusions. 287If no inclusions are explicitly specified, all entries are processed by 288default. 289The 290.Fl Fl include 291option is especially useful when filtering archives. 292For example, the command 293.Dl Nm Fl c Fl f Pa new.tar Fl Fl include='*foo*' Cm @ Ns Pa old.tgz 294creates a new archive 295.Pa new.tar 296containing only the entries from 297.Pa old.tgz 298containing the string 299.Sq foo . 300.It Fl J , Fl Fl xz 301(c mode only) 302Compress the resulting archive with 303.Xr xz 1 . 304In extract or list modes, this option is ignored. 305Note that this 306.Nm tar 307implementation recognizes XZ compression automatically when reading archives. 308.It Fl j , Fl Fl bzip , Fl Fl bzip2 , Fl Fl bunzip2 309(c mode only) 310Compress the resulting archive with 311.Xr bzip2 1 . 312In extract or list modes, this option is ignored. 313Note that this 314.Nm tar 315implementation recognizes bzip2 compression automatically when reading 316archives. 317.It Fl k , Fl Fl keep-old-files 318(x mode only) 319Do not overwrite existing files. 320In particular, if a file appears more than once in an archive, 321later copies will not overwrite earlier copies. 322.It Fl Fl keep-newer-files 323(x mode only) 324Do not overwrite existing files that are newer than the 325versions appearing in the archive being extracted. 326.It Fl L , Fl Fl dereference 327(c and r modes only) 328All symbolic links will be followed. 329Normally, symbolic links are archived as such. 330With this option, the target of the link will be archived instead. 331.It Fl l , Fl Fl check-links 332(c and r modes only) 333Issue a warning message unless all links to each file are archived. 334.It Fl Fl lrzip 335(c mode only) 336Compress the resulting archive with 337.Xr lrzip 1 . 338In extract or list modes, this option is ignored. 339Note that this 340.Nm tar 341implementation recognizes lrzip compression automatically when reading 342archives. 343.It Fl Fl lz4 344(c mode only) 345Compress the archive with lz4-compatible compression before writing it. 346In extract or list modes, this option is ignored. 347Note that this 348.Nm tar 349implementation recognizes lz4 compression automatically when reading archives. 350.It Fl Fl zstd 351(c mode only) 352Compress the archive with zstd-compatible compression before writing it. 353In extract or list modes, this option is ignored. 354Note that this 355.Nm tar 356implementation recognizes zstd compression automatically when reading archives. 357.It Fl Fl lzma 358(c mode only) Compress the resulting archive with the original LZMA algorithm. 359In extract or list modes, this option is ignored. 360Use of this option is discouraged and new archives should be created with 361.Fl Fl xz 362instead. 363Note that this 364.Nm tar 365implementation recognizes LZMA compression automatically when reading archives. 366.It Fl Fl lzop 367(c mode only) 368Compress the resulting archive with 369.Xr lzop 1 . 370In extract or list modes, this option is ignored. 371Note that this 372.Nm tar 373implementation recognizes LZO compression automatically when reading archives. 374.It Fl m , Fl Fl modification-time 375(x mode only) 376Do not extract modification time. 377By default, the modification time is set to the time stored in the archive. 378.It Fl Fl mac-metadata 379(c, r, u and x mode only) 380Mac OS X specific. Archive or extract extended ACLs and extended attributes 381using 382.Xr copyfile 3 383in AppleDouble format. This is the reverse of 384.Fl Fl no-mac-metadata . 385and the default behavior in c, r, and u modes or if 386.Nm 387is run in x mode as root. 388.It Fl n , Fl Fl norecurse , Fl Fl no-recursion 389(c, r, u modes only) 390Do not recursively archive the contents of directories. 391.It Fl Fl newer Ar date 392(c, r, u modes only) 393Only include files and directories newer than the specified date. 394This compares ctime entries. 395.It Fl Fl newer-mtime Ar date 396(c, r, u modes only) 397Like 398.Fl Fl newer , 399except it compares mtime entries instead of ctime entries. 400.It Fl Fl newer-than Pa file 401(c, r, u modes only) 402Only include files and directories newer than the specified file. 403This compares ctime entries. 404.It Fl Fl newer-mtime-than Pa file 405(c, r, u modes only) 406Like 407.Fl Fl newer-than , 408except it compares mtime entries instead of ctime entries. 409.It Fl Fl nodump 410(c and r modes only) 411Honor the nodump file flag by skipping this file. 412.It Fl Fl nopreserveHFSCompression 413(x mode only) 414Mac OS X specific (v10.6 or later). Do not compress extracted regular files 415which were compressed with HFS+ compression before archived. 416By default, compress the regular files again with HFS+ compression. 417.It Fl Fl null 418(use with 419.Fl I 420or 421.Fl T ) 422Filenames or patterns are separated by null characters, 423not by newlines. 424This is often used to read filenames output by the 425.Fl print0 426option to 427.Xr find 1 . 428.It Fl Fl no-acls 429(c, r, u, x modes only) 430Do not archive or extract POSIX.1e or NFSv4 ACLs. This is the reverse of 431.Fl Fl acls 432and the default behavior if 433.Nm 434is run as non-root in x mode (on Mac OS X as any user in c, r, u and x modes). 435.It Fl Fl no-fflags 436(c, r, u, x modes only) 437Do not archive or extract file flags. This is the reverse of 438.Fl Fl fflags 439and the default behavior if 440.Nm 441is run as non-root in x mode. 442.It Fl Fl no-mac-metadata 443(x mode only) 444Mac OS X specific. Do not archive or extract ACLs and extended attributes using 445.Xr copyfile 3 446in AppleDouble format. This is the reverse of 447.Fl Fl mac-metadata . 448and the default behavior if 449.Nm 450is run as non-root in x mode. 451.It Fl n , Fl Fl norecurse , Fl Fl no-recursion 452.It Fl Fl no-same-owner 453(x mode only) 454Do not extract owner and group IDs. 455This is the reverse of 456.Fl Fl same-owner 457and the default behavior if 458.Nm 459is run as non-root. 460.It Fl Fl no-same-permissions 461(x mode only) 462Do not extract full permissions (SGID, SUID, sticky bit, ACLs, 463extended attributes or extended file flags). 464This is the reverse of 465.Fl p 466and the default behavior if 467.Nm 468is run as non-root. 469.It Fl Fl no-xattrs 470(c, r, u, x modes only) 471Do not archive or extract extended attributes. This is the reverse of 472.Fl Fl xattrs 473and the default behavior if 474.Nm 475is run as non-root in x mode. 476.It Fl Fl numeric-owner 477This is equivalent to 478.Fl Fl uname 479.Qq 480.Fl Fl gname 481.Qq . 482On extract, it causes user and group names in the archive 483to be ignored in favor of the numeric user and group ids. 484On create, it causes user and group names to not be stored 485in the archive. 486.It Fl O , Fl Fl to-stdout 487(x, t modes only) 488In extract (-x) mode, files will be written to standard out rather than 489being extracted to disk. 490In list (-t) mode, the file listing will be written to stderr rather than 491the usual stdout. 492.It Fl o 493(x mode) 494Use the user and group of the user running the program rather 495than those specified in the archive. 496Note that this has no significance unless 497.Fl p 498is specified, and the program is being run by the root user. 499In this case, the file modes and flags from 500the archive will be restored, but ACLs or owner information in 501the archive will be discarded. 502.It Fl o 503(c, r, u mode) 504A synonym for 505.Fl Fl format Ar ustar 506.It Fl Fl older Ar date 507(c, r, u modes only) 508Only include files and directories older than the specified date. 509This compares ctime entries. 510.It Fl Fl older-mtime Ar date 511(c, r, u modes only) 512Like 513.Fl Fl older , 514except it compares mtime entries instead of ctime entries. 515.It Fl Fl older-than Pa file 516(c, r, u modes only) 517Only include files and directories older than the specified file. 518This compares ctime entries. 519.It Fl Fl older-mtime-than Pa file 520(c, r, u modes only) 521Like 522.Fl Fl older-than , 523except it compares mtime entries instead of ctime entries. 524.It Fl Fl one-file-system 525(c, r, and u modes) 526Do not cross mount points. 527.It Fl Fl options Ar options 528Select optional behaviors for particular modules. 529The argument is a text string containing comma-separated 530keywords and values. 531These are passed to the modules that handle particular 532formats to control how those formats will behave. 533Each option has one of the following forms: 534.Bl -tag -compact -width indent 535.It Ar key=value 536The key will be set to the specified value in every module that supports it. 537Modules that do not support this key will ignore it. 538.It Ar key 539The key will be enabled in every module that supports it. 540This is equivalent to 541.Ar key Ns Cm =1 . 542.It Ar !key 543The key will be disabled in every module that supports it. 544.It Ar module:key=value , Ar module:key , Ar module:!key 545As above, but the corresponding key and value will be provided 546only to modules whose name matches 547.Ar module . 548.El 549The currently supported modules and keys are: 550.Bl -tag -compact -width indent 551.It Cm iso9660:joliet 552Support Joliet extensions. 553This is enabled by default, use 554.Cm !joliet 555or 556.Cm iso9660:!joliet 557to disable. 558.It Cm iso9660:rockridge 559Support Rock Ridge extensions. 560This is enabled by default, use 561.Cm !rockridge 562or 563.Cm iso9660:!rockridge 564to disable. 565.It Cm gzip:compression-level 566A decimal integer from 1 to 9 specifying the gzip compression level. 567.It Cm gzip:timestamp 568Store timestamp. This is enabled by default, use 569.Cm !timestamp 570or 571.Cm gzip:!timestamp 572to disable. 573.It Cm lrzip:compression Ns = Ns Ar type 574Use 575.Ar type 576as compression method. 577Supported values are bzip2, gzip, lzo (ultra fast), 578and zpaq (best, extremely slow). 579.It Cm lrzip:compression-level 580A decimal integer from 1 to 9 specifying the lrzip compression level. 581.It Cm lz4:compression-level 582A decimal integer from 1 to 9 specifying the lzop compression level. 583.It Cm lz4:stream-checksum 584Enable stream checksum. This is by default, use 585.Cm lz4:!stream-checksum 586to disable. 587.It Cm lz4:block-checksum 588Enable block checksum (Disabled by default). 589.It Cm lz4:block-size 590A decimal integer from 4 to 7 specifying the lz4 compression block size 591(7 is set by default). 592.It Cm lz4:block-dependence 593Use the previous block of the block being compressed for 594a compression dictionary to improve compression ratio. 595.It Cm zstd:compression-level 596A decimal integer from 1 to 22 specifying the zstd compression level. 597.It Cm lzop:compression-level 598A decimal integer from 1 to 9 specifying the lzop compression level. 599.It Cm xz:compression-level 600A decimal integer from 0 to 9 specifying the xz compression level. 601.It Cm mtree: Ns Ar keyword 602The mtree writer module allows you to specify which mtree keywords 603will be included in the output. 604Supported keywords include: 605.Cm cksum , Cm device , Cm flags , Cm gid , Cm gname , Cm indent , 606.Cm link , Cm md5 , Cm mode , Cm nlink , Cm rmd160 , Cm sha1 , Cm sha256 , 607.Cm sha384 , Cm sha512 , Cm size , Cm time , Cm uid , Cm uname . 608The default is equivalent to: 609.Dq device, flags, gid, gname, link, mode, nlink, size, time, type, uid, uname . 610.It Cm mtree:all 611Enables all of the above keywords. 612You can also use 613.Cm mtree:!all 614to disable all keywords. 615.It Cm mtree:use-set 616Enable generation of 617.Cm /set 618lines in the output. 619.It Cm mtree:indent 620Produce human-readable output by indenting options and splitting lines 621to fit into 80 columns. 622.It Cm zip:compression Ns = Ns Ar type 623Use 624.Ar type 625as compression method. 626Supported values are store (uncompressed) and deflate (gzip algorithm). 627.It Cm zip:encryption 628Enable encryption using traditional zip encryption. 629.It Cm zip:encryption Ns = Ns Ar type 630Use 631.Ar type 632as encryption type. 633Supported values are zipcrypt (traditional zip encryption), 634aes128 (WinZip AES-128 encryption) and aes256 (WinZip AES-256 encryption). 635.It Cm read_concatenated_archives 636Ignore zeroed blocks in the archive, which occurs when multiple tar archives 637have been concatenated together. Without this option, only the contents of 638the first concatenated archive would be read. This option is comparable to 639the 640.Fl i , Fl Fl ignore-zeros 641option of GNU tar. 642.El 643If a provided option is not supported by any module, that 644is a fatal error. 645.It Fl P , Fl Fl absolute-paths 646Preserve pathnames. 647By default, absolute pathnames (those that begin with a / 648character) have the leading slash removed both when creating archives 649and extracting from them. 650Also, 651.Nm 652will refuse to extract archive entries whose pathnames contain 653.Pa .. 654or whose target directory would be altered by a symlink. 655This option suppresses these behaviors. 656.It Fl p , Fl Fl insecure , Fl Fl preserve-permissions 657(x mode only) 658Preserve file permissions. 659Attempt to restore the full permissions, including owner, file modes, ACLs, 660extended attributes and extended file flags, if available, for each item 661extracted from the archive. This is te reverse of 662.Fl Fl no-same-permissions 663and the default if 664.Nm 665is being run by root and can be partially overridden by also specifying 666.Fl Fl no-acls , 667.Fl Fl no-fflags , 668.Fl Fl no-mac-metadata 669or 670.Fl Fl no-xattrs . 671.It Fl Fl passphrase Ar passphrase 672The 673.Pa passphrase 674is used to extract or create an encrypted archive. 675Currently, zip is the only supported format that supports encryption. 676You shouldn't use this option unless you realize how insecure 677use of this option is. 678.It Fl Fl posix 679(c, r, u mode only) 680Synonym for 681.Fl Fl format Ar pax 682.It Fl q , Fl Fl fast-read 683(x and t mode only) 684Extract or list only the first archive entry that matches each pattern 685or filename operand. 686Exit as soon as each specified pattern or filename has been matched. 687By default, the archive is always read to the very end, since 688there can be multiple entries with the same name and, by convention, 689later entries overwrite earlier entries. 690This option is provided as a performance optimization. 691.It Fl S 692(x mode only) 693Extract files as sparse files. 694For every block on disk, check first if it contains only NULL bytes and seek 695over it otherwise. 696This works similar to the conv=sparse option of dd. 697.It Fl s Ar pattern 698Modify file or archive member names according to 699.Pa pattern . 700The pattern has the format 701.Ar /old/new/ Ns Op ghHprRsS 702where 703.Ar old 704is a basic regular expression, 705.Ar new 706is the replacement string of the matched part, 707and the optional trailing letters modify 708how the replacement is handled. 709If 710.Ar old 711is not matched, the pattern is skipped. 712Within 713.Ar new , 714~ is substituted with the match, \e1 to \e9 with the content of 715the corresponding captured group. 716The optional trailing g specifies that matching should continue 717after the matched part and stop on the first unmatched pattern. 718The optional trailing s specifies that the pattern applies to the value 719of symbolic links. 720The optional trailing p specifies that after a successful substitution 721the original path name and the new path name should be printed to 722standard error. 723Optional trailing H, R, or S characters suppress substitutions 724for hardlink targets, regular filenames, or symlink targets, 725respectively. 726Optional trailing h, r, or s characters enable substitutions 727for hardlink targets, regular filenames, or symlink targets, 728respectively. 729The default is 730.Ar hrs 731which applies substitutions to all names. 732In particular, it is never necessary to specify h, r, or s. 733.It Fl Fl same-owner 734(x mode only) 735Extract owner and group IDs. 736This is the reverse of 737.Fl Fl no-same-owner 738and the default behavior if 739.Nm 740is run as root. 741.It Fl Fl strip-components Ar count 742Remove the specified number of leading path elements. 743Pathnames with fewer elements will be silently skipped. 744Note that the pathname is edited after checking inclusion/exclusion patterns 745but before security checks. 746.It Fl T Ar filename , Fl Fl files-from Ar filename 747In x or t mode, 748.Nm 749will read the list of names to be extracted from 750.Pa filename . 751In c mode, 752.Nm 753will read names to be archived from 754.Pa filename . 755The special name 756.Dq -C 757on a line by itself will cause the current directory to be changed to 758the directory specified on the following line. 759Names are terminated by newlines unless 760.Fl Fl null 761is specified. 762Note that 763.Fl Fl null 764also disables the special handling of lines containing 765.Dq -C . 766Note: If you are generating lists of files using 767.Xr find 1 , 768you probably want to use 769.Fl n 770as well. 771.It Fl Fl totals 772(c, r, u modes only) 773After archiving all files, print a summary to stderr. 774.It Fl U , Fl Fl unlink , Fl Fl unlink-first 775(x mode only) 776Unlink files before creating them. 777This can be a minor performance optimization if most files 778already exist, but can make things slower if most files 779do not already exist. 780This flag also causes 781.Nm 782to remove intervening directory symlinks instead of 783reporting an error. 784See the SECURITY section below for more details. 785.It Fl Fl uid Ar id 786Use the provided user id number and ignore the user 787name from the archive. 788On create, if 789.Fl Fl uname 790is not also specified, the user name will be set to 791match the user id. 792.It Fl Fl uname Ar name 793Use the provided user name. 794On extract, this overrides the user name in the archive; 795if the provided user name does not exist on the system, 796it will be ignored and the user id 797(from the archive or from the 798.Fl Fl uid 799option) 800will be used instead. 801On create, this sets the user name that will be stored 802in the archive; 803the name is not verified against the system user database. 804.It Fl Fl use-compress-program Ar program 805Pipe the input (in x or t mode) or the output (in c mode) through 806.Pa program 807instead of using the builtin compression support. 808.It Fl v , Fl Fl verbose 809Produce verbose output. 810In create and extract modes, 811.Nm 812will list each file name as it is read from or written to 813the archive. 814In list mode, 815.Nm 816will produce output similar to that of 817.Xr ls 1 . 818An additional 819.Fl v 820option will also provide ls-like details in create and extract mode. 821.It Fl Fl version 822Print version of 823.Nm 824and 825.Nm libarchive , 826and exit. 827.It Fl w , Fl Fl confirmation , Fl Fl interactive 828Ask for confirmation for every action. 829.It Fl X Ar filename , Fl Fl exclude-from Ar filename 830Read a list of exclusion patterns from the specified file. 831See 832.Fl Fl exclude 833for more information about the handling of exclusions. 834.It Fl Fl xattrs 835(c, r, u, x modes only) 836Archive or extract extended attributes. This is the reverse of 837.Fl Fl no-xattrs 838and the default behavior in c, r, and u modes or if 839.Nm 840is run in x mode as root. 841.It Fl y 842(c mode only) 843Compress the resulting archive with 844.Xr bzip2 1 . 845In extract or list modes, this option is ignored. 846Note that this 847.Nm tar 848implementation recognizes bzip2 compression automatically when reading 849archives. 850.It Fl Z , Fl Fl compress , Fl Fl uncompress 851(c mode only) 852Compress the resulting archive with 853.Xr compress 1 . 854In extract or list modes, this option is ignored. 855Note that this 856.Nm tar 857implementation recognizes compress compression automatically when reading 858archives. 859.It Fl z , Fl Fl gunzip , Fl Fl gzip 860(c mode only) 861Compress the resulting archive with 862.Xr gzip 1 . 863In extract or list modes, this option is ignored. 864Note that this 865.Nm tar 866implementation recognizes gzip compression automatically when reading 867archives. 868.El 869.Sh ENVIRONMENT 870The following environment variables affect the execution of 871.Nm : 872.Bl -tag -width ".Ev BLOCKSIZE" 873.It Ev TAR_READER_OPTIONS 874The default options for format readers and compression readers. 875The 876.Fl Fl options 877option overrides this. 878.It Ev TAR_WRITER_OPTIONS 879The default options for format writers and compression writers. 880The 881.Fl Fl options 882option overrides this. 883.It Ev LANG 884The locale to use. 885See 886.Xr environ 7 887for more information. 888.It Ev TAPE 889The default device. 890The 891.Fl f 892option overrides this. 893Please see the description of the 894.Fl f 895option above for more details. 896.It Ev TZ 897The timezone to use when displaying dates. 898See 899.Xr environ 7 900for more information. 901.El 902.Sh EXIT STATUS 903.Ex -std 904.Sh EXAMPLES 905The following creates a new archive 906called 907.Ar file.tar.gz 908that contains two files 909.Ar source.c 910and 911.Ar source.h : 912.Dl Nm Fl czf Pa file.tar.gz Pa source.c Pa source.h 913.Pp 914To view a detailed table of contents for this 915archive: 916.Dl Nm Fl tvf Pa file.tar.gz 917.Pp 918To extract all entries from the archive on 919the default tape drive: 920.Dl Nm Fl x 921.Pp 922To examine the contents of an ISO 9660 cdrom image: 923.Dl Nm Fl tf Pa image.iso 924.Pp 925To move file hierarchies, invoke 926.Nm 927as 928.Dl Nm Fl cf Pa - Fl C Pa srcdir\ . | Nm Fl xpf Pa - Fl C Pa destdir 929or more traditionally 930.Dl cd srcdir \&; Nm Fl cf Pa -\ . | ( cd destdir \&; Nm Fl xpf Pa - ) 931.Pp 932In create mode, the list of files and directories to be archived 933can also include directory change instructions of the form 934.Cm -C Ns Pa foo/baz 935and archive inclusions of the form 936.Cm @ Ns Pa archive-file . 937For example, the command line 938.Dl Nm Fl c Fl f Pa new.tar Pa foo1 Cm @ Ns Pa old.tgz Cm -C Ns Pa /tmp Pa foo2 939will create a new archive 940.Pa new.tar . 941.Nm 942will read the file 943.Pa foo1 944from the current directory and add it to the output archive. 945It will then read each entry from 946.Pa old.tgz 947and add those entries to the output archive. 948Finally, it will switch to the 949.Pa /tmp 950directory and add 951.Pa foo2 952to the output archive. 953.Pp 954An input file in 955.Xr mtree 5 956format can be used to create an output archive with arbitrary ownership, 957permissions, or names that differ from existing data on disk: 958.Pp 959.Bd -literal -offset indent 960$ cat input.mtree 961#mtree 962usr/bin uid=0 gid=0 mode=0755 type=dir 963usr/bin/ls uid=0 gid=0 mode=0755 type=file content=myls 964$ tar -cvf output.tar @input.mtree 965.Ed 966.Pp 967The 968.Fl Fl newer 969and 970.Fl Fl newer-mtime 971switches accept a variety of common date and time specifications, including 972.Dq 12 Mar 2005 7:14:29pm , 973.Dq 2005-03-12 19:14 , 974.Dq 5 minutes ago , 975and 976.Dq 19:14 PST May 1 . 977.Pp 978The 979.Fl Fl options 980argument can be used to control various details of archive generation 981or reading. 982For example, you can generate mtree output which only contains 983.Cm type , Cm time , 984and 985.Cm uid 986keywords: 987.Dl Nm Fl cf Pa file.tar Fl Fl format=mtree Fl Fl options='!all,type,time,uid' Pa dir 988or you can set the compression level used by gzip or xz compression: 989.Dl Nm Fl czf Pa file.tar Fl Fl options='compression-level=9' . 990For more details, see the explanation of the 991.Fn archive_read_set_options 992and 993.Fn archive_write_set_options 994API calls that are described in 995.Xr archive_read 3 996and 997.Xr archive_write 3 . 998.Sh COMPATIBILITY 999The bundled-arguments format is supported for compatibility 1000with historic implementations. 1001It consists of an initial word (with no leading - character) in which 1002each character indicates an option. 1003Arguments follow as separate words. 1004The order of the arguments must match the order 1005of the corresponding characters in the bundled command word. 1006For example, 1007.Dl Nm Cm tbf 32 Pa file.tar 1008specifies three flags 1009.Cm t , 1010.Cm b , 1011and 1012.Cm f . 1013The 1014.Cm b 1015and 1016.Cm f 1017flags both require arguments, 1018so there must be two additional items 1019on the command line. 1020The 1021.Ar 32 1022is the argument to the 1023.Cm b 1024flag, and 1025.Ar file.tar 1026is the argument to the 1027.Cm f 1028flag. 1029.Pp 1030The mode options c, r, t, u, and x and the options 1031b, f, l, m, o, v, and w comply with SUSv2. 1032.Pp 1033For maximum portability, scripts that invoke 1034.Nm tar 1035should use the bundled-argument format above, should limit 1036themselves to the 1037.Cm c , 1038.Cm t , 1039and 1040.Cm x 1041modes, and the 1042.Cm b , 1043.Cm f , 1044.Cm m , 1045.Cm v , 1046and 1047.Cm w 1048options. 1049.Pp 1050Additional long options are provided to improve compatibility with other 1051tar implementations. 1052.Sh SECURITY 1053Certain security issues are common to many archiving programs, including 1054.Nm . 1055In particular, carefully-crafted archives can request that 1056.Nm 1057extract files to locations outside of the target directory. 1058This can potentially be used to cause unwitting users to overwrite 1059files they did not intend to overwrite. 1060If the archive is being extracted by the superuser, any file 1061on the system can potentially be overwritten. 1062There are three ways this can happen. 1063Although 1064.Nm 1065has mechanisms to protect against each one, 1066savvy users should be aware of the implications: 1067.Bl -bullet -width indent 1068.It 1069Archive entries can have absolute pathnames. 1070By default, 1071.Nm 1072removes the leading 1073.Pa / 1074character from filenames before restoring them to guard against this problem. 1075.It 1076Archive entries can have pathnames that include 1077.Pa .. 1078components. 1079By default, 1080.Nm 1081will not extract files containing 1082.Pa .. 1083components in their pathname. 1084.It 1085Archive entries can exploit symbolic links to restore 1086files to other directories. 1087An archive can restore a symbolic link to another directory, 1088then use that link to restore a file into that directory. 1089To guard against this, 1090.Nm 1091checks each extracted path for symlinks. 1092If the final path element is a symlink, it will be removed 1093and replaced with the archive entry. 1094If 1095.Fl U 1096is specified, any intermediate symlink will also be unconditionally removed. 1097If neither 1098.Fl U 1099nor 1100.Fl P 1101is specified, 1102.Nm 1103will refuse to extract the entry. 1104.El 1105To protect yourself, you should be wary of any archives that 1106come from untrusted sources. 1107You should examine the contents of an archive with 1108.Dl Nm Fl tf Pa filename 1109before extraction. 1110You should use the 1111.Fl k 1112option to ensure that 1113.Nm 1114will not overwrite any existing files or the 1115.Fl U 1116option to remove any pre-existing files. 1117You should generally not extract archives while running with super-user 1118privileges. 1119Note that the 1120.Fl P 1121option to 1122.Nm 1123disables the security checks above and allows you to extract 1124an archive while preserving any absolute pathnames, 1125.Pa .. 1126components, or symlinks to other directories. 1127.Sh SEE ALSO 1128.Xr bzip2 1 , 1129.Xr compress 1 , 1130.Xr cpio 1 , 1131.Xr gzip 1 , 1132.Xr mt 1 , 1133.Xr pax 1 , 1134.Xr shar 1 , 1135.Xr xz 1 , 1136.Xr libarchive 3 , 1137.Xr libarchive-formats 5 , 1138.Xr tar 5 1139.Sh STANDARDS 1140There is no current POSIX standard for the tar command; it appeared 1141in 1142.St -p1003.1-96 1143but was dropped from 1144.St -p1003.1-2001 . 1145The options supported by this implementation were developed by surveying a 1146number of existing tar implementations as well as the old POSIX specification 1147for tar and the current POSIX specification for pax. 1148.Pp 1149The ustar and pax interchange file formats are defined by 1150.St -p1003.1-2001 1151for the pax command. 1152.Sh HISTORY 1153A 1154.Nm tar 1155command appeared in Seventh Edition Unix, which was released in January, 1979. 1156There have been numerous other implementations, 1157many of which extended the file format. 1158John Gilmore's 1159.Nm pdtar 1160public-domain implementation (circa November, 1987) 1161was quite influential, and formed the basis of GNU tar. 1162GNU tar was included as the standard system tar 1163in 1164.Fx 1165beginning with 1166.Fx 1.0 . 1167.Pp 1168This is a complete re-implementation based on the 1169.Xr libarchive 3 1170library. 1171It was first released with 1172.Fx 5.4 1173in May, 2005. 1174.Sh BUGS 1175This program follows 1176.St -p1003.1-96 1177for the definition of the 1178.Fl l 1179option. 1180Note that GNU tar prior to version 1.15 treated 1181.Fl l 1182as a synonym for the 1183.Fl Fl one-file-system 1184option. 1185.Pp 1186The 1187.Fl C Pa dir 1188option may differ from historic implementations. 1189.Pp 1190All archive output is written in correctly-sized blocks, even 1191if the output is being compressed. 1192Whether or not the last output block is padded to a full 1193block size varies depending on the format and the 1194output device. 1195For tar and cpio formats, the last block of output is padded 1196to a full block size if the output is being 1197written to standard output or to a character or block device such as 1198a tape drive. 1199If the output is being written to a regular file, the last block 1200will not be padded. 1201Many compressors, including 1202.Xr gzip 1 1203and 1204.Xr bzip2 1 , 1205complain about the null padding when decompressing an archive created by 1206.Nm , 1207although they still extract it correctly. 1208.Pp 1209The compression and decompression is implemented internally, so 1210there may be insignificant differences between the compressed output 1211generated by 1212.Dl Nm Fl czf Pa - file 1213and that generated by 1214.Dl Nm Fl cf Pa - file | Nm gzip 1215.Pp 1216The default should be to read and write archives to the standard I/O paths, 1217but tradition (and POSIX) dictates otherwise. 1218.Pp 1219The 1220.Cm r 1221and 1222.Cm u 1223modes require that the archive be uncompressed 1224and located in a regular file on disk. 1225Other archives can be modified using 1226.Cm c 1227mode with the 1228.Pa @archive-file 1229extension. 1230.Pp 1231To archive a file called 1232.Pa @foo 1233or 1234.Pa -foo 1235you must specify it as 1236.Pa ./@foo 1237or 1238.Pa ./-foo , 1239respectively. 1240.Pp 1241In create mode, a leading 1242.Pa ./ 1243is always removed. 1244A leading 1245.Pa / 1246is stripped unless the 1247.Fl P 1248option is specified. 1249.Pp 1250There needs to be better support for file selection on both create 1251and extract. 1252.Pp 1253There is not yet any support for multi-volume archives. 1254.Pp 1255Converting between dissimilar archive formats (such as tar and cpio) using the 1256.Cm @ Ns Pa - 1257convention can cause hard link information to be lost. 1258(This is a consequence of the incompatible ways that different archive 1259formats store hardlink information.) 1260