1BSDTAR(1)                 BSD General Commands Manual                BSDTAR(1)
2

NAME

4     bsdtar — manipulate tape archives
5

SYNOPSIS

7     bsdtar [bundled-flags ⟨args⟩] [⟨file⟩ | ⟨pattern⟩ ...]
8     bsdtar {-c} [options] [files | directories]
9     bsdtar {-r | -u} -f archive-file [options] [files | directories]
10     bsdtar {-t | -x} [options] [patterns]
11

DESCRIPTION

13     bsdtar creates and manipulates streaming archive files.  This implementa‐
14     tion can extract from tar, pax, cpio, zip, jar, ar, xar, rpm, 7-zip, and
15     ISO 9660 cdrom images and can create tar, pax, cpio, ar, zip, 7-zip, and
16     shar archives.
17
18     The first synopsis form shows a “bundled” option word.  This usage is
19     provided for compatibility with historical implementations.  See COMPATI‐
20     BILITY below for details.
21
22     The other synopsis forms show the preferred usage.  The first option to
23     bsdtar is a mode indicator from the following list:
24     -c      Create a new archive containing the specified items.  The long
25             option form is --create.
26     -r      Like -c, but new entries are appended to the archive.  Note that
27             this only works on uncompressed archives stored in regular files.
28             The -f option is required.  The long option form is --append.
29     -t      List archive contents to stdout.  The long option form is --list.
30     -u      Like -r, but new entries are added only if they have a modifica‐
31             tion date newer than the corresponding entry in the archive.
32             Note that this only works on uncompressed archives stored in reg‐
33             ular files.  The -f option is required.  The long form is
34             --update.
35     -x      Extract to disk from the archive.  If a file with the same name
36             appears more than once in the archive, each copy will be
37             extracted, with later copies overwriting (replacing) earlier
38             copies.  The long option form is --extract.
39
40     In -c, -r, or -u mode, each specified file or directory is added to the
41     archive in the order specified on the command line.  By default, the con‐
42     tents of each directory are also archived.
43
44     In extract or list mode, the entire command line is read and parsed
45     before the archive is opened.  The pathnames or patterns on the command
46     line indicate which items in the archive should be processed.  Patterns
47     are shell-style globbing patterns as documented in tcsh(1).
48

OPTIONS

50     Unless specifically stated otherwise, options are applicable in all oper‐
51     ating modes.
52
53     @archive
54             (c and r modes only) The specified archive is opened and the
55             entries in it will be appended to the current archive.  As a sim‐
56             ple example,
57                   bsdtar -c -f - newfile @original.tar
58             writes a new archive to standard output containing a file newfile
59             and all of the entries from original.tar.  In contrast,
60                   bsdtar -c -f - newfile original.tar
61             creates a new archive with only two entries.  Similarly,
62                   bsdtar -czf - --format pax @-
63             reads an archive from standard input (whose format will be deter‐
64             mined automatically) and converts it into a gzip-compressed pax-
65             format archive on stdout.  In this way, bsdtar can be used to
66             convert archives from one format to another.
67
68     -a, --auto-compress
69             (c mode only) Use the archive suffix to decide a set of the for‐
70             mat and the compressions.  As a simple example,
71                   bsdtar -a -cf archive.tgz source.c source.h
72             creates a new archive with restricted pax format and gzip com‐
73             pression,
74                   bsdtar -a -cf archive.tar.bz2.uu source.c source.h
75             creates a new archive with restricted pax format and bzip2 com‐
76             pression and uuencode compression,
77                   bsdtar -a -cf archive.zip source.c source.h
78             creates a new archive with zip format,
79                   bsdtar -a -jcf archive.tgz source.c source.h
80             ignores the “-j” option, and creates a new archive with
81             restricted pax format and gzip compression,
82                   bsdtar -a -jcf archive.xxx source.c source.h
83             if it is unknown suffix or no suffix, creates a new archive with
84             restricted pax format and bzip2 compression.
85
86     --acls  (c, r, u, x modes only) Archive or extract POSIX.1e or NFSv4
87             ACLs. This is the reverse of --no-acls and the default behavior
88             in c, r, and u modes (except on Mac OS X) or if bsdtar is run in
89             x mode as root. On Mac OS X this option translates extended ACLs
90             to NFSv4 ACLs. To store extended ACLs the --mac-metadata option
91             is preferred.
92
93     -B, --read-full-blocks
94             Ignored for compatibility with other tar(1) implementations.
95
96     -b blocksize, --block-size blocksize
97             Specify the block size, in 512-byte records, for tape drive I/O.
98             As a rule, this argument is only needed when reading from or
99             writing to tape drives, and usually not even then as the default
100             block size of 20 records (10240 bytes) is very common.
101
102     -C directory, --cd directory, --directory directory
103             In c and r mode, this changes the directory before adding the
104             following files.  In x mode, change directories after opening the
105             archive but before extracting entries from the archive.
106
107     --chroot
108             (x mode only) chroot() to the current directory after processing
109             any -C options and before extracting any files.
110
111     --clear-nochange-fflags
112             (x mode only) Before removing file system objects to replace
113             them, clear platform-specific file flags that might prevent
114             removal.
115
116     --exclude pattern
117             Do not process files or directories that match the specified pat‐
118             tern.  Note that exclusions take precedence over patterns or
119             filenames specified on the command line.
120
121     --fflags
122             (c, r, u, x modes only) Archive or extract file flags. This is
123             the reverse of --no-fflags and the default behavior in c, r, and
124             u modes or if bsdtar is run in x mode as root.
125
126     --format format
127             (c, r, u mode only) Use the specified format for the created ar‐
128             chive.  Supported formats include “cpio”, “pax”, “shar”, and
129             “ustar”.  Other formats may also be supported; see
130             libarchive-formats(5) for more information about currently-sup‐
131             ported formats.  In r and u modes, when extending an existing ar‐
132             chive, the format specified here must be compatible with the for‐
133             mat of the existing archive on disk.
134
135     -f file, --file file
136             Read the archive from or write the archive to the specified file.
137             The filename can be - for standard input or standard output.  The
138             default varies by system; on FreeBSD, the default is /dev/sa0; on
139             Linux, the default is /dev/st0.
140
141     --gid id
142             Use the provided group id number.  On extract, this overrides the
143             group id in the archive; the group name in the archive will be
144             ignored.  On create, this overrides the group id read from disk;
145             if --gname is not also specified, the group name will be set to
146             match the group id.
147
148     --gname name
149             Use the provided group name.  On extract, this overrides the
150             group name in the archive; if the provided group name does not
151             exist on the system, the group id (from the archive or from the
152             --gid option) will be used instead.  On create, this sets the
153             group name that will be stored in the archive; the name will not
154             be verified against the system group database.
155
156     -H      (c and r modes only) Symbolic links named on the command line
157             will be followed; the target of the link will be archived, not
158             the link itself.
159
160     -h      (c and r modes only) Synonym for -L.
161
162     -I      Synonym for -T.
163
164     --help  Show usage.
165
166     --hfsCompression
167             (x mode only) Mac OS X specific (v10.6 or later). Compress
168             extracted regular files with HFS+ compression.
169
170     --ignore-zeros
171             An alias of --options read_concatenated_archives for compatibil‐
172             ity with GNU tar.
173
174     --include pattern
175             Process only files or directories that match the specified pat‐
176             tern.  Note that exclusions specified with --exclude take prece‐
177             dence over inclusions.  If no inclusions are explicitly speci‐
178             fied, all entries are processed by default.  The --include option
179             is especially useful when filtering archives.  For example, the
180             command
181                   bsdtar -c -f new.tar --include='*foo*' @old.tgz
182             creates a new archive new.tar containing only the entries from
183             old.tgz containing the string ‘foo’.
184
185     -J, --xz
186             (c mode only) Compress the resulting archive with xz(1).  In
187             extract or list modes, this option is ignored.  Note that this
188             tar implementation recognizes XZ compression automatically when
189             reading archives.
190
191     -j, --bzip, --bzip2, --bunzip2
192             (c mode only) Compress the resulting archive with bzip2(1).  In
193             extract or list modes, this option is ignored.  Note that this
194             tar implementation recognizes bzip2 compression automatically
195             when reading archives.
196
197     -k, --keep-old-files
198             (x mode only) Do not overwrite existing files.  In particular, if
199             a file appears more than once in an archive, later copies will
200             not overwrite earlier copies.
201
202     --keep-newer-files
203             (x mode only) Do not overwrite existing files that are newer than
204             the versions appearing in the archive being extracted.
205
206     -L, --dereference
207             (c and r modes only) All symbolic links will be followed.  Nor‐
208             mally, symbolic links are archived as such.  With this option,
209             the target of the link will be archived instead.
210
211     -l, --check-links
212             (c and r modes only) Issue a warning message unless all links to
213             each file are archived.
214
215     --lrzip
216             (c mode only) Compress the resulting archive with lrzip(1).  In
217             extract or list modes, this option is ignored.  Note that this
218             tar implementation recognizes lrzip compression automatically
219             when reading archives.
220
221     --lz4   (c mode only) Compress the archive with lz4-compatible compres‐
222             sion before writing it.  In extract or list modes, this option is
223             ignored.  Note that this tar implementation recognizes lz4 com‐
224             pression automatically when reading archives.
225
226     --zstd  (c mode only) Compress the archive with zstd-compatible compres‐
227             sion before writing it.  In extract or list modes, this option is
228             ignored.  Note that this tar implementation recognizes zstd com‐
229             pression automatically when reading archives.
230
231     --lzma  (c mode only) Compress the resulting archive with the original
232             LZMA algorithm.  In extract or list modes, this option is
233             ignored.  Use of this option is discouraged and new archives
234             should be created with --xz instead.  Note that this tar imple‐
235             mentation recognizes LZMA compression automatically when reading
236             archives.
237
238     --lzop  (c mode only) Compress the resulting archive with lzop(1).  In
239             extract or list modes, this option is ignored.  Note that this
240             tar implementation recognizes LZO compression automatically when
241             reading archives.
242
243     -m, --modification-time
244             (x mode only) Do not extract modification time.  By default, the
245             modification time is set to the time stored in the archive.
246
247     --mac-metadata
248             (c, r, u and x mode only) Mac OS X specific. Archive or extract
249             extended ACLs and extended attributes using copyfile(3) in Apple‐
250             Double format. This is the reverse of --no-mac-metadata.  and the
251             default behavior in c, r, and u modes or if bsdtar is run in x
252             mode as root.
253
254     -n, --norecurse, --no-recursion
255             (c, r, u modes only) Do not recursively archive the contents of
256             directories.
257
258     --newer date
259             (c, r, u modes only) Only include files and directories newer
260             than the specified date.  This compares ctime entries.
261
262     --newer-mtime date
263             (c, r, u modes only) Like --newer, except it compares mtime
264             entries instead of ctime entries.
265
266     --newer-than file
267             (c, r, u modes only) Only include files and directories newer
268             than the specified file.  This compares ctime entries.
269
270     --newer-mtime-than file
271             (c, r, u modes only) Like --newer-than, except it compares mtime
272             entries instead of ctime entries.
273
274     --nodump
275             (c and r modes only) Honor the nodump file flag by skipping this
276             file.
277
278     --nopreserveHFSCompression
279             (x mode only) Mac OS X specific (v10.6 or later). Do not compress
280             extracted regular files which were compressed with HFS+ compres‐
281             sion before archived.  By default, compress the regular files
282             again with HFS+ compression.
283
284     --null  (use with -I or -T) Filenames or patterns are separated by null
285             characters, not by newlines.  This is often used to read file‐
286             names output by the -print0 option to find(1).
287
288     --no-acls
289             (c, r, u, x modes only) Do not archive or extract POSIX.1e or
290             NFSv4 ACLs. This is the reverse of --acls and the default behav‐
291             ior if bsdtar is run as non-root in x mode (on Mac OS X as any
292             user in c, r, u and x modes).
293
294     --no-fflags
295             (c, r, u, x modes only) Do not archive or extract file flags.
296             This is the reverse of --fflags and the default behavior if
297             bsdtar is run as non-root in x mode.
298
299     --no-mac-metadata
300             (x mode only) Mac OS X specific. Do not archive or extract ACLs
301             and extended attributes using copyfile(3) in AppleDouble format.
302             This is the reverse of --mac-metadata.  and the default behavior
303             if bsdtar is run as non-root in x mode.
304
305     -n, --norecurse, --no-recursion
306
307     --no-same-owner
308             (x mode only) Do not extract owner and group IDs.  This is the
309             reverse of --same-owner and the default behavior if bsdtar is run
310             as non-root.
311
312     --no-same-permissions
313             (x mode only) Do not extract full permissions (SGID, SUID, sticky
314             bit, ACLs, extended attributes or extended file flags).  This is
315             the reverse of -p and the default behavior if bsdtar is run as
316             non-root.
317
318     --no-xattrs
319             (c, r, u, x modes only) Do not archive or extract extended
320             attributes. This is the reverse of --xattrs and the default
321             behavior if bsdtar is run as non-root in x mode.
322
323     --numeric-owner
324             This is equivalent to --uname "" --gname "".  On extract, it
325             causes user and group names in the archive to be ignored in favor
326             of the numeric user and group ids.  On create, it causes user and
327             group names to not be stored in the archive.
328
329     -O, --to-stdout
330             (x, t modes only) In extract (-x) mode, files will be written to
331             standard out rather than being extracted to disk.  In list (-t)
332             mode, the file listing will be written to stderr rather than the
333             usual stdout.
334
335     -o      (x mode) Use the user and group of the user running the program
336             rather than those specified in the archive.  Note that this has
337             no significance unless -p is specified, and the program is being
338             run by the root user.  In this case, the file modes and flags
339             from the archive will be restored, but ACLs or owner information
340             in the archive will be discarded.
341
342     -o      (c, r, u mode) A synonym for --format ustar
343
344     --older date
345             (c, r, u modes only) Only include files and directories older
346             than the specified date.  This compares ctime entries.
347
348     --older-mtime date
349             (c, r, u modes only) Like --older, except it compares mtime
350             entries instead of ctime entries.
351
352     --older-than file
353             (c, r, u modes only) Only include files and directories older
354             than the specified file.  This compares ctime entries.
355
356     --older-mtime-than file
357             (c, r, u modes only) Like --older-than, except it compares mtime
358             entries instead of ctime entries.
359
360     --one-file-system
361             (c, r, and u modes) Do not cross mount points.
362
363     --options options
364             Select optional behaviors for particular modules.  The argument
365             is a text string containing comma-separated keywords and values.
366             These are passed to the modules that handle particular formats to
367             control how those formats will behave.  Each option has one of
368             the following forms:
369             key=value
370                     The key will be set to the specified value in every mod‐
371                     ule that supports it.  Modules that do not support this
372                     key will ignore it.
373             key     The key will be enabled in every module that supports it.
374                     This is equivalent to key=1.
375             !key    The key will be disabled in every module that supports
376                     it.
377             module:key=value, module:key, module:!key
378                     As above, but the corresponding key and value will be
379                     provided only to modules whose name matches module.
380             The currently supported modules and keys are:
381             iso9660:joliet
382                     Support Joliet extensions.  This is enabled by default,
383                     use !joliet or iso9660:!joliet to disable.
384             iso9660:rockridge
385                     Support Rock Ridge extensions.  This is enabled by
386                     default, use !rockridge or iso9660:!rockridge to disable.
387             gzip:compression-level
388                     A decimal integer from 1 to 9 specifying the gzip com‐
389                     pression level.
390             gzip:timestamp
391                     Store timestamp. This is enabled by default, use
392                     !timestamp or gzip:!timestamp to disable.
393             lrzip:compression=type
394                     Use type as compression method.  Supported values are
395                     bzip2, gzip, lzo (ultra fast), and zpaq (best, extremely
396                     slow).
397             lrzip:compression-level
398                     A decimal integer from 1 to 9 specifying the lrzip com‐
399                     pression level.
400             lz4:compression-level
401                     A decimal integer from 1 to 9 specifying the lzop com‐
402                     pression level.
403             lz4:stream-checksum
404                     Enable stream checksum. This is by default, use
405                     lz4:!stream-checksum to disable.
406             lz4:block-checksum
407                     Enable block checksum (Disabled by default).
408             lz4:block-size
409                     A decimal integer from 4 to 7 specifying the lz4 compres‐
410                     sion block size (7 is set by default).
411             lz4:block-dependence
412                     Use the previous block of the block being compressed for
413                     a compression dictionary to improve compression ratio.
414             zstd:compression-level
415                     A decimal integer from 1 to 22 specifying the zstd com‐
416                     pression level.
417             lzop:compression-level
418                     A decimal integer from 1 to 9 specifying the lzop com‐
419                     pression level.
420             xz:compression-level
421                     A decimal integer from 0 to 9 specifying the xz compres‐
422                     sion level.
423             mtree:keyword
424                     The mtree writer module allows you to specify which mtree
425                     keywords will be included in the output.  Supported key‐
426                     words include: cksum, device, flags, gid, gname, indent,
427                     link, md5, mode, nlink, rmd160, sha1, sha256, sha384,
428                     sha512, size, time, uid, uname.  The default is equiva‐
429                     lent to: “device, flags, gid, gname, link, mode, nlink,
430                     size, time, type, uid, uname”.
431             mtree:all
432                     Enables all of the above keywords.  You can also use
433                     mtree:!all to disable all keywords.
434             mtree:use-set
435                     Enable generation of /set lines in the output.
436             mtree:indent
437                     Produce human-readable output by indenting options and
438                     splitting lines to fit into 80 columns.
439             zip:compression=type
440                     Use type as compression method.  Supported values are
441                     store (uncompressed) and deflate (gzip algorithm).
442             zip:encryption
443                     Enable encryption using traditional zip encryption.
444             zip:encryption=type
445                     Use type as encryption type.  Supported values are
446                     zipcrypt (traditional zip encryption), aes128 (WinZip
447                     AES-128 encryption) and aes256 (WinZip AES-256 encryp‐
448                     tion).
449             read_concatenated_archives
450                     Ignore zeroed blocks in the archive, which occurs when
451                     multiple tar archives have been concatenated together.
452                     Without this option, only the contents of the first con‐
453                     catenated archive would be read.  This option is compara‐
454                     ble to the -i, --ignore-zeros option of GNU tar.
455             If a provided option is not supported by any module, that is a
456             fatal error.
457
458     -P, --absolute-paths
459             Preserve pathnames.  By default, absolute pathnames (those that
460             begin with a / character) have the leading slash removed both
461             when creating archives and extracting from them.  Also, bsdtar
462             will refuse to extract archive entries whose pathnames contain ..
463             or whose target directory would be altered by a symlink.  This
464             option suppresses these behaviors.
465
466     -p, --insecure, --preserve-permissions
467             (x mode only) Preserve file permissions.  Attempt to restore the
468             full permissions, including owner, file modes, ACLs, extended
469             attributes and extended file flags, if available, for each item
470             extracted from the archive. This is te reverse of
471             --no-same-permissions and the default if bsdtar is being run by
472             root and can be partially overridden by also specifying
473             --no-acls, --no-fflags, --no-mac-metadata or --no-xattrs.
474
475     --passphrase passphrase
476             The passphrase is used to extract or create an encrypted archive.
477             Currently, zip is the only supported format that supports encryp‐
478             tion.  You shouldn't use this option unless you realize how inse‐
479             cure use of this option is.
480
481     --posix
482             (c, r, u mode only) Synonym for --format pax
483
484     -q, --fast-read
485             (x and t mode only) Extract or list only the first archive entry
486             that matches each pattern or filename operand.  Exit as soon as
487             each specified pattern or filename has been matched.  By default,
488             the archive is always read to the very end, since there can be
489             multiple entries with the same name and, by convention, later
490             entries overwrite earlier entries.  This option is provided as a
491             performance optimization.
492
493     -S      (x mode only) Extract files as sparse files.  For every block on
494             disk, check first if it contains only NULL bytes and seek over it
495             otherwise.  This works similar to the conv=sparse option of dd.
496
497     -s pattern
498             Modify file or archive member names according to pattern.  The
499             pattern has the format /old/new/[ghHprRsS] where old is a basic
500             regular expression, new is the replacement string of the matched
501             part, and the optional trailing letters modify how the replace‐
502             ment is handled.  If old is not matched, the pattern is skipped.
503             Within new, ~ is substituted with the match, \1 to \9 with the
504             content of the corresponding captured group.  The optional trail‐
505             ing g specifies that matching should continue after the matched
506             part and stop on the first unmatched pattern.  The optional
507             trailing s specifies that the pattern applies to the value of
508             symbolic links.  The optional trailing p specifies that after a
509             successful substitution the original path name and the new path
510             name should be printed to standard error.  Optional trailing H,
511             R, or S characters suppress substitutions for hardlink targets,
512             regular filenames, or symlink targets, respectively.  Optional
513             trailing h, r, or s characters enable substitutions for hardlink
514             targets, regular filenames, or symlink targets, respectively.
515             The default is hrs which applies substitutions to all names.  In
516             particular, it is never necessary to specify h, r, or s.
517
518     --same-owner
519             (x mode only) Extract owner and group IDs.  This is the reverse
520             of --no-same-owner and the default behavior if bsdtar is run as
521             root.
522
523     --strip-components count
524             Remove the specified number of leading path elements.  Pathnames
525             with fewer elements will be silently skipped.  Note that the
526             pathname is edited after checking inclusion/exclusion patterns
527             but before security checks.
528
529     -T filename, --files-from filename
530             In x or t mode, bsdtar will read the list of names to be
531             extracted from filename.  In c mode, bsdtar will read names to be
532             archived from filename.  The special name “-C” on a line by
533             itself will cause the current directory to be changed to the
534             directory specified on the following line.  Names are terminated
535             by newlines unless --null is specified.  Note that --null also
536             disables the special handling of lines containing “-C”.  Note:
537             If you are generating lists of files using find(1), you probably
538             want to use -n as well.
539
540     --totals
541             (c, r, u modes only) After archiving all files, print a summary
542             to stderr.
543
544     -U, --unlink, --unlink-first
545             (x mode only) Unlink files before creating them.  This can be a
546             minor performance optimization if most files already exist, but
547             can make things slower if most files do not already exist.  This
548             flag also causes bsdtar to remove intervening directory symlinks
549             instead of reporting an error.  See the SECURITY section below
550             for more details.
551
552     --uid id
553             Use the provided user id number and ignore the user name from the
554             archive.  On create, if --uname is not also specified, the user
555             name will be set to match the user id.
556
557     --uname name
558             Use the provided user name.  On extract, this overrides the user
559             name in the archive; if the provided user name does not exist on
560             the system, it will be ignored and the user id (from the archive
561             or from the --uid option) will be used instead.  On create, this
562             sets the user name that will be stored in the archive; the name
563             is not verified against the system user database.
564
565     --use-compress-program program
566             Pipe the input (in x or t mode) or the output (in c mode) through
567             program instead of using the builtin compression support.
568
569     -v, --verbose
570             Produce verbose output.  In create and extract modes, bsdtar will
571             list each file name as it is read from or written to the archive.
572             In list mode, bsdtar will produce output similar to that of
573             ls(1).  An additional -v option will also provide ls-like details
574             in create and extract mode.
575
576     --version
577             Print version of bsdtar and libarchive, and exit.
578
579     -w, --confirmation, --interactive
580             Ask for confirmation for every action.
581
582     -X filename, --exclude-from filename
583             Read a list of exclusion patterns from the specified file.  See
584             --exclude for more information about the handling of exclusions.
585
586     --xattrs
587             (c, r, u, x modes only) Archive or extract extended attributes.
588             This is the reverse of --no-xattrs and the default behavior in c,
589             r, and u modes or if bsdtar is run in x mode as root.
590
591     -y      (c mode only) Compress the resulting archive with bzip2(1).  In
592             extract or list modes, this option is ignored.  Note that this
593             tar implementation recognizes bzip2 compression automatically
594             when reading archives.
595
596     -Z, --compress, --uncompress
597             (c mode only) Compress the resulting archive with compress(1).
598             In extract or list modes, this option is ignored.  Note that this
599             tar implementation recognizes compress compression automatically
600             when reading archives.
601
602     -z, --gunzip, --gzip
603             (c mode only) Compress the resulting archive with gzip(1).  In
604             extract or list modes, this option is ignored.  Note that this
605             tar implementation recognizes gzip compression automatically when
606             reading archives.
607

ENVIRONMENT

609     The following environment variables affect the execution of bsdtar:
610
611     TAR_READER_OPTIONS
612                The default options for format readers and compression read‐
613                ers.  The --options option overrides this.
614
615     TAR_WRITER_OPTIONS
616                The default options for format writers and compression writ‐
617                ers.  The --options option overrides this.
618
619     LANG       The locale to use.  See environ(7) for more information.
620
621     TAPE       The default device.  The -f option overrides this.  Please see
622                the description of the -f option above for more details.
623
624     TZ         The timezone to use when displaying dates.  See environ(7) for
625                more information.
626

EXIT STATUS

628     The bsdtar utility exits 0 on success, and >0 if an error occurs.
629

EXAMPLES

631     The following creates a new archive called file.tar.gz that contains two
632     files source.c and source.h:
633           bsdtar -czf file.tar.gz source.c source.h
634
635     To view a detailed table of contents for this archive:
636           bsdtar -tvf file.tar.gz
637
638     To extract all entries from the archive on the default tape drive:
639           bsdtar -x
640
641     To examine the contents of an ISO 9660 cdrom image:
642           bsdtar -tf image.iso
643
644     To move file hierarchies, invoke bsdtar as
645           bsdtar -cf - -C srcdir . | bsdtar -xpf - -C destdir
646     or more traditionally
647           cd srcdir ; bsdtar -cf - . | (cd destdir ; bsdtar -xpf -)
648
649     In create mode, the list of files and directories to be archived can also
650     include directory change instructions of the form -Cfoo/baz and archive
651     inclusions of the form @archive-file.  For example, the command line
652           bsdtar -c -f new.tar foo1 @old.tgz -C/tmp foo2
653     will create a new archive new.tar.  bsdtar will read the file foo1 from
654     the current directory and add it to the output archive.  It will then
655     read each entry from old.tgz and add those entries to the output archive.
656     Finally, it will switch to the /tmp directory and add foo2 to the output
657     archive.
658
659     An input file in mtree(5) format can be used to create an output archive
660     with arbitrary ownership, permissions, or names that differ from existing
661     data on disk:
662
663           $ cat input.mtree
664           #mtree
665           usr/bin uid=0 gid=0 mode=0755 type=dir
666           usr/bin/ls uid=0 gid=0 mode=0755 type=file content=myls
667           $ tar -cvf output.tar @input.mtree
668
669     The --newer and --newer-mtime switches accept a variety of common date
670     and time specifications, including “12 Mar 2005 7:14:29pm”, “2005-03-12
671     19:14”, “5 minutes ago”, and “19:14 PST May 1”.
672
673     The --options argument can be used to control various details of archive
674     generation or reading.  For example, you can generate mtree output which
675     only contains type, time, and uid keywords:
676           bsdtar -cf file.tar --format=mtree --options='!all,type,time,uid'
677           dir
678     or you can set the compression level used by gzip or xz compression:
679           bsdtar -czf file.tar --options='compression-level=9'.
680     For more details, see the explanation of the archive_read_set_options()
681     and archive_write_set_options() API calls that are described in
682     archive_read(3) and archive_write(3).
683

COMPATIBILITY

685     The bundled-arguments format is supported for compatibility with historic
686     implementations.  It consists of an initial word (with no leading - char‐
687     acter) in which each character indicates an option.  Arguments follow as
688     separate words.  The order of the arguments must match the order of the
689     corresponding characters in the bundled command word.  For example,
690           bsdtar tbf 32 file.tar
691     specifies three flags t, b, and f.  The b and f flags both require argu‐
692     ments, so there must be two additional items on the command line.  The 32
693     is the argument to the b flag, and file.tar is the argument to the f
694     flag.
695
696     The mode options c, r, t, u, and x and the options b, f, l, m, o, v, and
697     w comply with SUSv2.
698
699     For maximum portability, scripts that invoke tar should use the bundled-
700     argument format above, should limit themselves to the c, t, and x modes,
701     and the b, f, m, v, and w options.
702
703     Additional long options are provided to improve compatibility with other
704     tar implementations.
705

SECURITY

707     Certain security issues are common to many archiving programs, including
708     bsdtar.  In particular, carefully-crafted archives can request that
709     bsdtar extract files to locations outside of the target directory.  This
710     can potentially be used to cause unwitting users to overwrite files they
711     did not intend to overwrite.  If the archive is being extracted by the
712     superuser, any file on the system can potentially be overwritten.  There
713     are three ways this can happen.  Although bsdtar has mechanisms to pro‐
714     tect against each one, savvy users should be aware of the implications:
715
716     ·       Archive entries can have absolute pathnames.  By default, bsdtar
717             removes the leading / character from filenames before restoring
718             them to guard against this problem.
719
720     ·       Archive entries can have pathnames that include .. components.
721             By default, bsdtar will not extract files containing .. compo‐
722             nents in their pathname.
723
724     ·       Archive entries can exploit symbolic links to restore files to
725             other directories.  An archive can restore a symbolic link to
726             another directory, then use that link to restore a file into that
727             directory.  To guard against this, bsdtar checks each extracted
728             path for symlinks.  If the final path element is a symlink, it
729             will be removed and replaced with the archive entry.  If -U is
730             specified, any intermediate symlink will also be unconditionally
731             removed.  If neither -U nor -P is specified, bsdtar will refuse
732             to extract the entry.
733     To protect yourself, you should be wary of any archives that come from
734     untrusted sources.  You should examine the contents of an archive with
735           bsdtar -tf filename
736     before extraction.  You should use the -k option to ensure that bsdtar
737     will not overwrite any existing files or the -U option to remove any pre-
738     existing files.  You should generally not extract archives while running
739     with super-user privileges.  Note that the -P option to bsdtar disables
740     the security checks above and allows you to extract an archive while pre‐
741     serving any absolute pathnames, .. components, or symlinks to other
742     directories.
743

SEE ALSO

745     bzip2(1), compress(1), cpio(1), gzip(1), mt(1), pax(1), shar(1), xz(1),
746     libarchive(3), libarchive-formats(5), tar(5)
747

STANDARDS

749     There is no current POSIX standard for the tar command; it appeared in
750     ISO/IEC 9945-1:1996 (“POSIX.1”) but was dropped from IEEE Std 1003.1-2001
751     (“POSIX.1”).  The options supported by this implementation were developed
752     by surveying a number of existing tar implementations as well as the old
753     POSIX specification for tar and the current POSIX specification for pax.
754
755     The ustar and pax interchange file formats are defined by IEEE Std
756     1003.1-2001 (“POSIX.1”) for the pax command.
757

HISTORY

759     A tar command appeared in Seventh Edition Unix, which was released in
760     January, 1979.  There have been numerous other implementations, many of
761     which extended the file format.  John Gilmore's pdtar public-domain
762     implementation (circa November, 1987) was quite influential, and formed
763     the basis of GNU tar.  GNU tar was included as the standard system tar in
764     FreeBSD beginning with FreeBSD 1.0.
765
766     This is a complete re-implementation based on the libarchive(3) library.
767     It was first released with FreeBSD 5.4 in May, 2005.
768

BUGS

770     This program follows ISO/IEC 9945-1:1996 (“POSIX.1”) for the definition
771     of the -l option.  Note that GNU tar prior to version 1.15 treated -l as
772     a synonym for the --one-file-system option.
773
774     The -C dir option may differ from historic implementations.
775
776     All archive output is written in correctly-sized blocks, even if the out‐
777     put is being compressed.  Whether or not the last output block is padded
778     to a full block size varies depending on the format and the output
779     device.  For tar and cpio formats, the last block of output is padded to
780     a full block size if the output is being written to standard output or to
781     a character or block device such as a tape drive.  If the output is being
782     written to a regular file, the last block will not be padded.  Many com‐
783     pressors, including gzip(1) and bzip2(1), complain about the null padding
784     when decompressing an archive created by bsdtar, although they still
785     extract it correctly.
786
787     The compression and decompression is implemented internally, so there may
788     be insignificant differences between the compressed output generated by
789           bsdtar -czf - file
790     and that generated by
791           bsdtar -cf - file | gzip
792
793     The default should be to read and write archives to the standard I/O
794     paths, but tradition (and POSIX) dictates otherwise.
795
796     The r and u modes require that the archive be uncompressed and located in
797     a regular file on disk.  Other archives can be modified using c mode with
798     the @archive-file extension.
799
800     To archive a file called @foo or -foo you must specify it as ./@foo or
801     ./-foo, respectively.
802
803     In create mode, a leading ./ is always removed.  A leading / is stripped
804     unless the -P option is specified.
805
806     There needs to be better support for file selection on both create and
807     extract.
808
809     There is not yet any support for multi-volume archives.
810
811     Converting between dissimilar archive formats (such as tar and cpio)
812     using the @- convention can cause hard link information to be lost.
813     (This is a consequence of the incompatible ways that different archive
814     formats store hardlink information.)
815
816BSD                             October 1, 2017                            BSD
Impressum