6 tar File Creation
The
file/tar library provides
utilities to create archive files in USTAR format, like the archive
that the Unix utility
pax generates. Long paths are supported
using either the POSIX.1-2001/pax or GNU format for long paths. The
resulting archives contain only directories, files, and symbolic
links, and owner information is not preserved; the owner that is
stored in the archive is always “root.”
Symbolic links (on Unix and Mac OS) are not followed by default.
Creates
tar-file, which holds the complete content of all
paths. The given
paths are all expected to be
relative paths for existing directories and files (i.e., relative
to the current directory). If a nested path is provided as a
path, its ancestor directories are also added to the
resulting tar file, up to the current directory (using
pathlist-closure). If
follow-links? is false, then
symbolic links are included in the resulting tar file as links.
If exists-ok? is #f, then an exception is raised if
tar-file exists already. If exists-ok? is true, then
tar-file is truncated or replaced if it exists already.
The format argument determines the handling of long paths and
long symbolic-link targets. If format is 'pax, then
POSIX.1-2001/pax extensions are used. If format is
'gnu, then GNU extensions are used. If format is
'ustar, then tar raises an error for too-long paths
or symbolic-link targets.
If path-prefix is not #f, then it is prefixed to
each path in the archive.
The get-timestamp function is used to obtain the modification
date to record in the archive for each file or directory.
Changed in version 6.0.0.3 of package base: Added the #:get-timestamp argument.
Changed in version 6.1.1.1: Added the #:exists-ok? argument.
Changed in version 6.3.0.3: Added the #:follow-links? argument.
Changed in version 6.3.0.11: Added the #:path-filter argument.
Changed in version 6.7.0.4: Added the #:format argument and
effectively changed its default from 'ustar
to 'pax.
Like
tar, but packages each of the given
paths in a
tar format
archive that is written directly to the
out. The specified
paths are included as-is (except for adding
path-prefix, if any); if a directory is specified, its
content is not automatically added, and nested directories are added
without parent directories.
Changed in version 6.0.0.3 of package base: Added the #:get-timestamp argument.
Changed in version 6.3.0.3: Added the #:follow-links? argument.
Changed in version 6.3.0.11: Added the #:path-filter argument.
Changed in version 6.7.0.4: Added the #:format argument and
effectively changed its default from 'ustar
to 'pax.
(tar-gzip | | tar-file | | | | | | | paths ... | | | | | | [ | #:follow-links? follow-links? | | | | | | | #:exists-ok? exists-ok? | | | | | | | #:format format | | | | | | | #:path-prefix path-prefix | | | | | | | #:get-timestamp get-timestamp]) | | → | | void? |
|
tar-file : path-string? |
paths : path-string? |
follow-links? : any/c = #f |
exists-ok? : any/c = #f |
format : (or/c 'pax 'gnu 'ustar) = 'pax |
path-prefix : (or/c #f path-string?) = #f |
|
Like
tar, but compresses the resulting file with
gzip.
Changed in version 6.0.0.3 of package base: Added the #:get-timestamp argument.
Changed in version 6.1.1.1: Added the #:exists-ok? argument.
Changed in version 6.3.0.3: Added the #:follow-links? argument.
Changed in version 6.7.0.4: Added the #:format argument and
effectively changed its default from 'ustar
to 'pax.