% File src/library/utils/man/tar.Rd
% Part of the R package, https://www.R-project.org
% Copyright 2009-2021 R Core Team
% Distributed under GPL 2 or later

\name{tar}
\alias{tar}
\title{
  Create a Tar Archive
}
\description{
  Create a tar archive.
}
\usage{
tar(tarfile, files = NULL,
    compression = c("none", "gzip", "bzip2", "xz"),
    compression_level = 6, tar = Sys.getenv("tar"),
    extra_flags = "")
}

\arguments{
  \item{tarfile}{The pathname of the tar file: tilde expansion (see
    \code{\link{path.expand}}) will be performed.  Alternatively, a
    \link{connection} that can be used for binary writes.}

  \item{files}{A character vector of filepaths to be archived:
    the default is to archive all files under the current directory.}

  \item{compression}{character string giving the type of compression to
    be used (default none).  Can be abbreviated.}

  \item{compression_level}{integer: the level of compression.  Only used
    for the internal method.}

  \item{tar}{character string: the path to the command to be used.  If
    the command itself contains spaces it needs to be quoted (e.g., by
    \code{\link{shQuote}}) -- but argument \code{tar} may also contain
    flags separated from the command by spaces.}

  \item{extra_flags}{Any extra flags for an external \command{tar}.}
}

\details{
  This is either a wrapper for a \command{tar} command or uses an
  internal implementation in \R.  The latter is used if \code{tarfile}
  is a connection or if the argument \code{tar} is \code{"internal"} or
  \code{""} (the \sQuote{factory-fresh} default).  Note that whereas
  Unix-alike versions of \R set the environment variable \env{TAR}, its
  value is not the default for this function.

  Argument \code{extra_flags} is passed to an external \command{tar} and
  so is platform-dependent.  Possibly useful values include \option{-h}
  (follow symbolic links, also \option{-L} on some platforms),
  \samp{--acls}, \option{--exclude-backups}, \option{--exclude-vcs} (and
  similar) and on Windows \option{--force-local} (so drives can be
  included in filepaths). \command{Rtools} 4 and earlier included a
  \command{tar} which used \option{--force-local}, but \command{Rtools} 4.2
  includes original GNU \command{tar}, which does not use it by default.

  A convenient and robust way to set options for GNU \command{tar} is via
  environment variable \env{TAR_OPTIONS}.  Appending \option{--force-local}
  to \env{TAR} does not work with GNU \command{tar} due to restrictions on
  how some options can be mixed.  The \command{tar} available on Windows 10
  (libarchive's \command{bsdtar}) supports drive letters by default.  It
  does not support the \option{--force-local}, but ignores
  \env{TAR_OPTIONS}.

  For GNU \command{tar},
  \option{--format=ustar} forces a more portable format. (The default is
  set at compilation and will be shown at the end of the output from
  \command{tar --help}: for version 1.30 \sQuote{out-of-the-box} it is 
  \option{--format=gnu}, but the manual says the intention is to change
  to \option{--format=posix} which is the same as \code{pax} --
  it was never part of the POSIX standard for \command{tar} and should
  not be used.)
  For libarchive's \command{bsdtar}, \option{--format=ustar} is more
  portable than the default.
  
  %% This uses -T, not supported by Solaris nor Heirloom Toolchest.
  One issue which can cause an external command to fail is a command
  line too long for the system shell: as from \R 3.5.0 this is worked
  around if the external command is detected to be GNU \command{tar} or
  libarchive \command{tar} (aka \command{bsdtar}).

  Note that \code{files = '.'} will usually not work with an external
  \command{tar} as that would expand the list of files after
  \code{tarfile} is created.  (It does work with the default internal
  method.)
}

\value{
  The return code from \code{\link{system}} or \code{0} for the internal
  version, invisibly.
}

\section{Portability}{
  The \sQuote{tar} format no longer has an agreed standard!
  \sQuote{Unix Standard Tar} was part of POSIX 1003.1:1998 but has been
  removed in favour of \command{pax}, and in any case many common
  implementations diverged from the former standard.

  Many \R platforms use a version of GNU \command{tar}, but the behaviour
  seems to be changed with each version.  macOS >= 10.6, FreeBSD and Windows
  10 use \command{bsdtar}
  from the libarchive project (but for macOS a version from 2017 or
  earlier, 2010 for High Sierra), and commercial Unixes will have their
  own versions. \command{bsdtar} is available for many other platforms:
  macOS up to at least 10.9 had GNU \command{tar} as \command{gnutar}
  and other platforms, e.g.\sspace{}Solaris, have it as \command{gtar}:
  on a Unix-alike \command{configure} will try \command{gnutar} and
  \command{gtar} before \code{tar}.

  %% Heirloom Toolchest (http://heirloom.sourceforge.net/) is
  %% another implementation available on NetBSD, but probably not the default.

  Known problems arise from
  \itemize{
    \item The handling of file paths of more than 100 bytes.  These were
    unsupported in early versions of \command{tar}, and supported in one
    way by POSIX \command{tar} and in another by GNU \command{tar} and
    yet another by the POSIX \command{pax} command which
    recent \command{tar} programs often support.  The internal
    implementation warns on paths of more than 100 bytes,
    uses the \sQuote{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,
    otherwise the GNU way (which is widely supported, including by
    \code{\link{untar}}).

    Most formats do not record the encoding of file paths.

    \item (File) links.  \command{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 file copies can be used.

    Names of links in the \sQuote{ustar} format are restricted to 100
    bytes.  There is an GNU extension for arbitrarily long link names,
    but \command{bsdtar} ignores it.  The internal method uses the
    GNU extension, with a warning.

    \item Header fields, in particular the padding to be used when
    fields are not full or not used.  POSIX did define the correct
    behaviour but commonly used implementations did (and still do)
    not comply.

    \item File sizes.  The \sQuote{ustar} format is restricted to 8GB
    per (uncompressed) file.
  }
  For portability, avoid file paths of more than 100 bytes and all links
  (especially hard links and symbolic links to directories).

  The internal implementation writes only the blocks of 512 bytes
  required (including trailing blocks of nuls), unlike GNU \command{tar}
  which by default pads with \samp{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.
  
  The \sQuote{ustar} format records file modification times to a
  resolution of 1 second: on file systems with higher resolution it is
  conventional to discard fractional seconds.
}

\section{Compression}{
  When an external \command{tar} command is used, compressing the tar
  archive requires that \command{tar} supports the \option{-z},
  \option{-j} or \option{-J} flag, and may require the appropriate
  command (\command{gzip}, \command{bzip2} or \command{xz}) to be
  available.  For GNU \command{tar}, further compression programs can be
  specified by e.g.\sspace{}\code{extra_flags = "-I lz4"}.
  Some versions of \command{bsdtar} accept options such as
  \option{--lz4}, \option{--lzop} and \option{--lrzip} or an external
  compressor \emph{via} \code{--use-compress-program lz4}: these could
  be supplied in \code{extra_flags}.
  
  NetBSD prior to 8.0 used flag \option{--xz} rather than \option{-J},
  so this should be used \emph{via} \code{extra_flags = "--xz"} rather
  than \code{compression = "xz"}.  The commands from OpenBSD and the
  Heirloom Toolchest are not documented to support \command{xz}.

  The \command{tar} programs in commercial Unixen such as AIX and
  Solaris do not support compression.
}

\note{
  For users of macOS.  Apple's file systems have a legacy concept of
  \sQuote{resource forks} dating from classic Mac OS and rarely used
  nowadays.  Apple's version of \command{tar} stores these as separate
  files in the tarball with names prefixed by \file{._}, and unpacks
  such files into resource forks (if possible): other ways of unpacking
  (including \code{\link{untar}} in \R) unpack them as separate files.

  When argument \code{tar} is set to the command \command{tar} on macOS,
  environment variable \env{COPYFILE_DISABLE=1} is set, which for the
  system version of \command{tar} prevents these separate files being
  included in the tarball.
}

\seealso{
  \url{https://en.wikipedia.org/wiki/Tar_(file_format)},
  \url{https://pubs.opengroup.org/onlinepubs/9699919799/utilities/pax.html#tag_20_92_13_06}
  for the way the POSIX utility \command{pax} handles \command{tar} formats.

  \url{https://github.com/libarchive/libarchive/wiki/FormatTar}.

  \code{\link{untar}}.
}

\keyword{file}
\keyword{utilities}
