untar(tarfile, files = NULL, list = FALSE, exdir = ".",
compressed = NA, extras = NULL, verbose = FALSE,
restore_times = TRUE, tar = Sys.getenv("TAR"))
path.expand
) will be performed. Alternatively, a
connection that can be used for binary reads.TRUE
, list the files (the equivalent of
tar -tf
). Otherwise extract the files (the equivalent of
tar -xf
).tar -C
). It will be created if necessary."gzip"
,
"bzip2"
and "xz"
select that form of compression (and
may be abbreviated to the first letter). TRUE
indicates gzip
compression, FALSE
no known compression (but an external
tar
command may detect compression automagically), and
NA
(the default) indicates that the type is inferred from the
file header.NULL
or a character string: further command-line
flags such as -p to be passed to an external tar
program.Note that file times in a tarball are stored with a resolution of 1 second, and can only be restored to the resolution supported by the file system (which on a FAT system is 2 seconds).
tar
can also contain flags separated from the command by spaces.list = TRUE
, a character vector of (relative or absolute)
paths of files contained in the tar archive. Otherwise the return code from system
with an external
tar
or 0L
, invisibly.tar
command or for an
internal implementation written in R. The latter is used if
tarfile
is a connection or if the argument tar
is
"internal"
or ""
(except on Windows, when
tar.exe
is tried first). What options are supported will depend on the tar
used.
Modern GNU flavours of tar
will support compressed archives,
and since 1.15 are able to detect the type of compression
automatically: version 1.20 added support for lzma
and
version 1.22 for xz
compression using LZMA2. macOS 10.6 and
later (and FreeBSD and some other OSes) have a tar
(also
known as bsdtar
) from the libarchive project which
can also detect gzip
and bzip2
compression
automatically. For other flavours of tar
, environment
variable R_GZIPCMD
gives the command to decompress
gzip
and compress
files, and R_BZIPCMD
for bzip2
files. Arguments compressed
, extras
and verbose
are only
used when an external tar
is used. The internal implementation restores symbolic links as links on a
Unix-alike, and as file copies on Windows (which works only for
existing files, not for directories), and hard links as links. If the
linking operation fails (as it may on a FAT file system), a file copy
is tried. Since it uses gzfile
to read a file it can
handle files compressed by any of the methods that function can
handle: at least compress
, gzip
, bzip2
and xz
compression, and some types of lzma
compression. It does not guard against restoring absolute file paths,
as some tar
implementations do. It will create the parent
directories for directories or files in the archive if necessary. It
handles the standard (USTAR/POSIX), GNU and pax
ways of
handling file paths of more than 100 bytes, and the GNU way of
handling link targets of more than 100 bytes. You may see warnings from the internal implementation such
as unsupported entry type 'x'This often indicates an invalid archive: entry types
"A-Z"
are
allowed as extensions, but other types are reserved. The only thing
you can do with such an archive is to find a tar
program that
handles it, and look carefully at the resulting files. There may also
be the warning using pax extended headersThis is indicates that additional information may have been discarded, such as ACLs, encodings …. The standards only support ASCII filenames (indeed, only alphanumeric plus period, underscore and hyphen).
untar
makes no attempt to
map filenames to those acceptable on the current system, and treats
the filenames in the archive as applicable without any re-encoding in
the current locale. The internal implementation does not special-case ‘resource
forks’ in macOS: that system's tar
command does. This may
lead to unexpected files with names with prefix ._
.tar
, unzip
.