tar(tarfile, files = NULL, compression = c("none", "gzip", "bzip2", "xz"), compression_level = 6, tar = Sys.getenv("tar"), extra_flags = "")
path.expand
) will be performed. Alternatively, a
connection that can be used for binary writes.shQuote
) -- but argument tar
can also contain
flags separated from the command by spaces.tar
.system
or 0
for the internal
version, invisibly.
pax
, and in any case many common
implementations diverged from the former standard. Most R platforms
use a version of GNU tar
(including Rtools
on
Windows, but the behaviour seems to be changed with each version), Mac
OS >= 10.6 and FreeBSD use bsdttar
from the libarchive
project, and commercial Unixes will have their own versions. Known problems arise from
tar
, and supported in one
way by POSIX tar
and in another by GNU tar
and
yet another by the POSIX pax
command which
recenttar
programs often support. The internal
implementation warns on paths of more than 100 bytes,
uses the ustar way from the 1998 POSIX
standard which supports up to 256 bytes (depending on the path: in
particular the final component is limited to 100 bytes) if possible,
or the GNU way (which is widely supported). Most formats do not record the encoding of file paths. tar
was developed on an OS that used
hard links, and physical files that were referred to more than once
in the list of files to be included were included only once, the
remaining instances being added as links. Later a means to include
symbolic links was added. The internal implementation supports
symbolic links (on OSes that support them), only. Of course, the
question arises as to how links should be unpacked on OSes that do
not support them: for regular files, at least, file copies can be
used. Names of links in the ustar format are restricted to 100
bytes. There is an GNU extension for arbitrarily long link names,
but bsdtar
does not read. The internal method uses the
GNU extension, with a warning. tar
which by default pads with nul to a multiple of 20 blocks
(10KB). Implementations which pad differ on whether the block padding
should occur before or after compression (or both): padding was
designed for improved performance on physical tape drives.tar
command or uses an
internal implementation in R. The latter is used if tarfile
is a connection or if the argument tar
is "internal"
or
""
(the factory-fresh default). Note that whereas
Unix-alike versions of R set the environment variable TAR, its
value is not the default for this function. Argument extra_flags
is passed to an external tar
and
so is platform-dependent. Possibly useful values include -h
(follow symbolic links, also -L on some platforms),
--acls, --exclude-backups, --exclude-vcs (and
similar) and on Windows --force-local (so drives can be
included in filepaths: however, this is the default for the
Rtools
tar
). For GNU tar
,
--format=ustar forces a more portable format (the current
default in version 1.26 is --format=gnu, but the manual says
the intention is to change to --format=pax which GNU
incorrectly calls POSIX -- it was never part of the POSIX
standard for tar
). For libarchive tar
,
--format=ustar is more portable than the default.
pax
handles tar
formats.