| TARSNAP(1) | General Commands Manual | TARSNAP(1) |
NAME
tarsnap —
manipulate remote encrypted backups
SYNOPSIS
tarsnap |
{-c} --keyfile
key-file --cachedir
cache-dir -f
archive-name [options]
[files | directories] |
tarsnap |
{-d} --keyfile
key-file --cachedir
cache-dir -f
archive-name [options] |
tarsnap |
{-t | -x}
--keyfile key-file
-f archive-name
[options] [patterns] |
tarsnap |
{-r} --keyfile
key-file -f
archive-name |
tarsnap |
{--list-archives}
--keyfile key-file |
tarsnap |
{--print-stats}
--keyfile key-file
--cachedir cache-dir
[-f archive-name] |
tarsnap |
{--recover} --keyfile
key-file --cachedir
cache-dir |
tarsnap |
{--fsck} --keyfile
key-file --cachedir
cache-dir |
tarsnap |
{--fsck-prune} --keyfile
key-file --cachedir
cache-dir |
tarsnap |
{--initialize-cachedir}
--keyfile key-file
--cachedir cache-dir |
tarsnap |
{--nuke} --keyfile
key-file |
tarsnap |
--verify-config |
tarsnap |
--version |
DESCRIPTION
tarsnap creates, reads, deletes, and
otherwise manages online backups.
The first option to tarsnap is a mode
indicator from the following list:
-c- Create an archive containing the specified items and name.
-d- Delete the specified archive.
-t- List archive contents to stdout.
-x- Extract to disk from the archive.
-r- Read the specified archive, convert it to a tar stream, and write it to stdout.
--list-archives- Print the names of archives stored. If the
-vflag is specified one or more times, the creation time of each archive is also printed; if the-vflag is specified two or more times, the command line with whichtarsnapwas invoked to create each archive is also printed. --print-stats- Print global statistics concerning the archives stored, and optionally information about individual archive(s). See "PRINTING ARCHIVE STATISTICS" below for information on the output format.
--recover- Recover a partial archive from a checkpoint if such an archive exists. This is also done automatically the next time an archive is created or deleted.
--fsck- Perform some integrity checks on the archives stored, and reconstruct the
cache directory cache-dir. In the unlikely event
that there are corrupted archives,
tarsnapwill exit and request that it be run with the--fsck-pruneoption. --fsck-prune- Run as
--fsck, but if corrupt archives are detected, prune the broken data. --initialize-cachedir- Create and initialize the cachedir. This option is intended for the GUI and is not needed for command-line usage.
--nuke- Delete all of the archives stored. To protect against accidental data
loss,
tarsnapwill ask you to type the text "No Tomorrow" when using the--nukecommand. --verify-config- Check the configuration file(s) for syntactic errors.
--version- Print version number of
tarsnap, and exit.
In -c mode, each specified file or
directory is added to the archive in the order specified on the command
line. By default, the contents of each directory are also archived.
In -t or -x mode,
the entire command line is read and parsed before the archive is opened. The
pathnames or patterns on the command line indicate which items in the
archive should be processed. Patterns are shell-style globbing patterns as
documented in tcsh(1). Note that
these follow the POSIX rules for pattern matching, e.g., ‘[]’
are special characters which can be escaped with a backslash.
Two concurrent create or delete operations may not be performed with the same key. Extracting or listing archives may be performed in parallel with any other operation.
OPTIONS
@archive-file- (c mode only) The specified archive file is read and the entries in it
will be appended to the current archive. If
archive-file is “-” then the archive
will be read from the standard input. As an example,
reads the archive file backup.tar from disk and stores it using
tarsnap-c--keyfilekey-file--cachedircache-dir-fmybackup@backup.tartarsnap. @@archive-name- (c mode only) The specified
tarsnaparchive is read and the entries in it will be appended to the current archive. --aggressive-networking- (c mode only) Use multiple TCP connections to send data to the
tarsnapserver. If the upload rate is congestion-limited rather than being limited by individual bottleneck(s), this may allow tarsnap to use a significantly larger fraction of the available bandwidth, at the expense of slowing down any other network traffic. --archive-namesfilename- Read a list of archive names from filename.
-Cdirectory- (c and x modes only) In c mode, this changes the directory before adding the following files. In x mode, change directories after opening the archive but before extracting entries from the archive.
--cachedircache-dir- (c, d, print-stats, and fsck modes only) Cache information about the
archives stored by
tarsnapin the directory cache-dir. The contents of this directory will not be backed up bytarsnap, so it should not be used for any other purpose. If the directory cache-dir is lost, it can be reconstructed by runningtarsnap--fsck. --check-links- (c mode only) Issue a warning message unless all links to each file are archived.
--checkpoint-bytesbytespercheckpoint- (c mode only) Create a checkpoint after every bytespercheckpoint bytes of uploaded data. The value bytespercheckpoint must be at least 1000000, and a higher value is recommended since creating a checkpoint in an archive can take a few seconds and several hundred kB of bandwidth.
--chroot- (x mode only)
chroot() to the current directory after processing any-Coptions and before extracting any files. --configfilefilename- Add filename to the list of configuration files to be read; options set via these take priority over the default configuration files. This option can be specified multiple times, in which case all the files will be read; where settings conflict, the earlier configuration file will take priority.
--creationtimeX- (c mode only) Manually specify a creation time (a unix timestamp) for the archive. This is unlikely to be useful when tarsnap is being invoked directly from the command line.
--csv-filefilename- (use with
--print-stats) Write statistics in CSV format to a file. --disk-pauseX- (c mode only) Pause for X ms between storing archive
entries and after every 64 kB of file data. This will slow down
tarsnapand thereby reduce its impact on other applications. For archiving files which are stored on an ATA disk and are not in the operating system disk cache, a value of--disk-pause10 will approximately double the time taken. --dry-run- (c mode only) Don't really create an archive; just simulate doing so. The
list of paths added to an archive (if the
-voption is used), progress messages (if the--progress-bytesoption is used), and final statistics printed (if the--print-statsoption is used) will be almost identical (typically within a few kB or a fraction of a percent) to iftarsnapis run without the--dry-runoption.Note that the
--maxbwoption does not work in combination with--dry-run, since no bandwidth is actually used, and that sincetarsnapdoes not contact thetarsnapserver when performing a dry run, it will not detect an attempt to create an archive with the same name as one which already exists. If an existing archive is being copied via@@archive-name, then some network bandwidth will be used whiletarsnapreads metadata about archive-name from the tarsnap server.Furthermore,
--dry-runwill not check whether the cache directory is out of sync. --dry-run-metadata- (c mode only) Don't really create an archive; just simulate doing so. This
is similar to
--dry-run, except that it doesn't read any files; it only processes filesystem metadata.This is significantly faster than a regular
--dry-run, but it is still suitable for checking which filesystem entries will be archived (with-v), or getting the total uncompressed archive size (via--totalsor--progress-bytes).This option cannot be used with
--print-stats. --dump-config- Print out the command-line and all non-blank lines read from config files.
--excludepattern- (c, x, and t modes only) Do not process files or directories that match the specified pattern. Note that exclusions take precedence over patterns or filenames specified on the command line.
-farchive-name- (c, d, x, t, r, list-archives, and print-stats modes only) Operate on the
archive archive-name. In mode c, if archive creation
is interrupted by ^Q, the SIGQUIT signal, or reaching the bandwidth limit
specified via a
--maxbwoption, the archive will be stored with ".part" appended to its name. In mode print-stats, if archive-name is *, statistics will be printed for every archive. In the print-stats and d modes,-farchive-name can be specified multiple times, in which case the operation (printing statistics, or deletion) will be performed for each of the specified archives.Note that each archive created must have a different name; consequently many users find it useful to include timestamps in archive names when repeatedly creating archives from the same files/directories (e.g., daily backups).
As a special case, if used with
--list-archives--hashesthen-findicates a tapehash instead of an archive-name, and will print metadata about the specified archive(s). This combination of options is intended for the GUI and is not needed for command-line usage. (-fcannot be used with--list-archivesif it does not also include--hashes.) --force-resources- Force the decryption of a passphrase-encrypted key file to proceed even if it is anticipated to require an excessive amount of memory or CPU time.
-H- (c mode only) Symbolic links named on the command line will be followed; the target of the link will be archived, not the link itself.
-h- (c mode only) Synonym for
-L. --hashes- (list-archives mode only) Print hashes of archive names. If the
-vflag is specified one or more times, print the archive name as well.This option is intended for the GUI and is not needed for command-line usage.
--humanize-numbers- Use SI prefixes to make numbers printed by
--print-statsand SIGINFO more readable. -I- Synonym for
-T. --includepattern- (c, x, and t modes only) Process only files or directories that match the
specified pattern. Note that exclusions specified with
--excludetake precedence over inclusions. If no inclusions are explicitly specified, all entries are processed by default. The--includeoption is especially useful when filtering archives. For example, the commandcreates a new archive foo-backup containing only the entries from all-backup containing the string ‘foo’.tarsnap-c-ffoo-backup--include='*foo*'@@all-backup --insane-filesystems- (c mode only) Allow descent into synthetic filesystems such as procfs. Normally archiving of such filesystems is a silly thing to do, hence the name of the option.
--iso-dates- (t mode only) Print file and directory dates as yyyy-mm-dd hh:mm:ss.
The default is to use the same format as 'ls -l': If the files were modified within the past six months, print the month, day, hour, and minutes; otherwise, print the month, day, and year.
-k- (x mode only) Do not overwrite existing files. In particular, if a file appears more than once in an archive, later copies will not overwrite earlier copies.
--keep-going- (d and print-stats modes only) Continue deleting or printing statistics after finding that one of the archives specified does not exist.
--keep-newer-files- (x mode only) Do not overwrite existing files that are newer than the versions appearing in the archive being extracted.
--keyfilekey-file- (all modes) Obtain encryption, authentication, and access keys from key-file. This file should have been generated by tarsnap-keygen(1).
-L- (c mode only) All symbolic links will be followed. Normally, symbolic links are archived as such. With this option, the target of the link will be archived instead.
-l- This is a synonym for the
--check-linksoption. --lowmem- (c mode only) Reduce memory usage by not caching small files. This may be useful when backing up files of average size less than 1 MB if the available RAM in kilobytes is less than the number of files being backed up.
-m- (x mode only) Do not extract modification time. By default, the modification time is set to the time stored in the archive.
--maxbwnumbytes- (c mode only) Interrupt archival if more than numbytes bytes of upstream bandwidth is used (see INTERRUPTING ARCHIVAL below for details).
--maxbw-ratebytespersecond- Limit download and upload bandwidth used to bytespersecond bytes per second.
--maxbw-rate-downbytespersecond- Limit download bandwidth used to bytespersecond bytes per second.
--maxbw-rate-upbytespersecond- Limit upload bandwidth used to bytespersecond bytes per second.
-n- (c mode only) Do not recursively archive the contents of directories.
--newerdate- (c, x, t modes only) Only include files and directories newer than the specified date. This compares ctime entries.
--newer-mtimedate- (c mode only) Like
--newer, except it compares mtime entries instead of ctime entries. --newer-thanfilename- (c mode only) Only include files and directories newer than the specified file. This compares ctime entries.
--newer-mtime-thanfilename- (c mode only) Like
--newer-than, except it compares mtime entries instead of ctime entries. --no-aggressive-networking- Ignore any
aggressive-networkingoption specified in a configuration file. --no-config-exclude- Ignore any
excludeoption specified in a configuration file. Normallyexcludeoptions specified via configuration files and the command line all take effect. --no-config-include- Ignore any
includeoption specified in a configuration file. Normallyincludeoptions specified via configuration files and the command line all take effect. --no-default-config- Do not read the default configuration files /etc/tarsnap/tarsnap.conf, $XDG_CONFIG_HOME/tarsnap/tarsnap.conf, and ~/.tarsnaprc.
--no-disk-pause- Ignore any
disk-pauseoption specified in a configuration file. --no-force-resources- Ignore any
force-resourcesoption specified in a configuration file. --no-humanize-numbers- Ignore any
humanize-numbersoption specified in a configuration file. --no-insane-filesystems- Ignore any
insane-filesystemsoption specified in a configuration file. --no-iso-dates- Ignore any
iso-datesoption specified in a configuration file. --no-maxbw- Ignore any
maxbwoption specified in a configuration file. --no-maxbw-rate-down- Ignore any
maxbw-rate-downoption specified in a configuration file. If amaxbw-rateoption is specified in a configuration file, it will not affect the download bandwidth used, but may affect the upload bandwidth used (unless--no-maxbw-rate-upis also specified). --no-maxbw-rate-up- Ignore any
maxbw-rate-upoption specified in a configuration file. If amaxbw-rateoption is specified in a configuration file, it will not affect the upload bandwidth used, but may affect the download bandwidth used (unless--no-maxbw-rate-downis also specified). --no-noatime- Ignore any
noatimeoption specified in a configuration file. --no-nodump- Ignore any
nodumpoption specified in a configuration file. --no-print-stats- Ignore any
print-statsoption specified in a configuration file. --no-progress-bytes- Ignore any
progress-bytesoption specified in a configuration file. --no-quiet- Ignore any
quietoption specified in a configuration file. --no-retry-forever- Ignore any
retry-foreveroption specified in a configuration file. --no-snaptime- Ignore any
snaptimeoption specified in a configuration file. --no-store-atime- Ignore any
store-atimeoption specified in a configuration file. --no-totals- Ignore any
totalsoption specified in a configuration file. --noatime- (c mode only) Ask the operating system to not update the atime when reading files or directories. Not supported by all operating systems and filesystems.
--nodump- (c mode only) Honor the nodump file flag by skipping this file or directory.
--noisy-warnings- Be verbose when warning about network glitches. This is probably only useful for debugging purposes.
--normalmem- Ignore any
lowmemorverylowmemoption specified in a configuration file. --null- (use with
-I,-T, or-X) Synonym for--null-input. Kept for historical reasons and compatibility with other tar utilities. --null-input- (use with
-I,-T, or-X) Filenames, archive names, and patterns are separated by null characters, not by newlines. This is often used to read filenames output by the-print0option to find(1). --null-output- (x, t, list-archives, and print-stats modes only) Archive names,
filenames, and lines in output are separated by null characters, not by
newlines.
If there are multiple fields on a line, they will be separated by two null characters. If a command line is printed within one of those fields, each argument will be separated by three null characters.
--numeric-owner- (x mode only) Ignore symbolic user and group names when restoring archives to disk, only numeric uid and gid values will be obeyed.
-O- (x and t modes only) In extract (-x) mode, files will be written to standard out rather than being extracted to disk. In list (-t) mode, the file listing will be written to stderr rather than the usual stdout.
-o- (x mode only) Use the user and group of the user running the program
rather than those specified in the archive. Note that this has no
significance unless
-pis specified, and the program is being run by the root user. In this case, the file modes and flags from the archive will be restored, but ACLs or owner information in the archive will be discarded. --one-file-system- (c mode only) Do not cross mount points.
-P- (c, x, and t modes only) Preserve pathnames. By default, absolute
pathnames (those that begin with a / character) have the leading slash
removed both when creating archives and extracting from them. Also,
tarsnapwill refuse to extract archive entries whose pathnames contain .. or whose target directory would be altered by a symlink. This option suppresses these behaviors. -p- (x mode only) Preserve file permissions. Attempt to restore the full
permissions, including owner, file modes, file flags and ACLs, if
available, for each item extracted from the archive. By default,
newly-created files are owned by the user running
tarsnap, the file mode is restored for newly-created regular files, and all other types of entries receive default permissions. Iftarsnapis being run by root, the default is to restore the owner unless the-ooption is also specified. --passphrasemethod:arg- Read the passphrase using the specified method.
- dev:tty-stdin
- Attempt to read the passphrase from /dev/tty; if that fails, read it from stdin. This is the default behaviour.
- dev:stdin-once
- Attempt to read the passphrase from stdin, and do so only once even when encrypting. This cannot be used if infile is also stdin (aka '-').
- dev:tty-once
- Attempt to read the passphrase from /dev/tty, and do so only once even when encrypting.
- env:VAR
- Read the passphrase from the environment variable specified by
VAR.
Storing a passphrase in an environment variable may be a security risk.Only use this option if you are certain that you know what you are doing.
- file:FILENAME
- Read the passphrase from the file specified by
FILENAME.
Storing a passphrase in a file may be a security risk.Only use this option if you are certain that you know what you are doing.
--print-stats- (c and d modes only) Print statistics for the archive being created (c mode) or delete (d mode). See "PRINTING ARCHIVE STATISTICS" below for information on the output format.
--progress-bytesX- Display a progress message (as if generated from SIGUSR1 or SIGINFO) after processing each X bytes. Occurs at most once per file.
-q(--fast-read)- (x and t modes only) Extract or list only the first archive entry that matches each pattern or filename operand. Exit as soon as each specified pattern or filename has been matched. By default, the archive is always read to the very end, since there can be multiple entries with the same name and, by convention, later entries overwrite earlier entries. This option is provided as a performance optimization.
--quiet- Avoid printing some warnings. Currently the warnings which are silenced by
this option are "Removing leading '/' ...", "Not adding
cache directory to archive", "... file may have grown while
being archived", and "Skipping entry on filesystem of type
...", but it is likely that other warnings will be silenced by this
option in future versions of
tarsnap. --resume-extract- (x mode only) Don't extract files whose filesize and mtime matches
existing files on the disk. Primarily used to resume an archive extraction
which was interrupted. The mtime comparison ignores sub-second timestamp
precision, as this is not supported on all filesystems. This differs from
-kin that--resume-extractwill overwrite a file if the size or modification time do not match, as can happen if tarsnap is killed partway through extracting a file. --retry-forever- This option causes tarsnap to continue trying to reconnect to the tarsnap server forever, instead of giving up after 5-10 minutes. This may be useful for people with excessively flaky networks, or on mobile devices which regularly lose their internet connections for extended periods of time. This is not enabled by default since continued failures generally indicate a problem which should be investigated by the user.
-S- (x mode only) Extract files as sparse files. For every block on disk, check first if it contains any non-NULL bytes and seek over it otherwise. This works similar to the conv=sparse option of dd.
-spattern- Modify file or archive member names according to pattern. The pattern has the format /old/new/[gps]. old is a basic regular expression. If it doesn't apply, the pattern is skipped. new is the replacement string of the matched part. ~ is substituted with the match, \1 to \9 with the contents of the corresponding captured group. The optional trailing g specifies that matching should continue after the matched part and stop on the first unmatched pattern. The optional trailing s specifies that the pattern applies to the value of symbolic links. The optional trailing p specifies that after a successful substitution the original path name and the new path name should be printed to standard error.
--snaptimefilename- (c mode only) This option MUST be specified when creating a backup from a
filesystem snapshot, and filename must have a
modification time prior to when the filesystem snapshot was created. (This
is necessary to prevent races between file modification and snapshot
creation which could result in
tarsnapfailing to recognize that a file has been modified.) --store-atime- (c mode only) Enable the storing of file access times. The default
behaviour of
tarsnapis to not store file access times, since this can cause a significant amount of bandwidth and storage to be wasted when the same set of files are archived several times (e.g., if daily backup archives are created) due totarsnapitself accessing files and thereby causing their access times to be changed. --strip-componentscount- (x mode only) Remove the specified number of leading path elements. Pathnames with fewer elements will be silently skipped. Note that the pathname is edited after checking inclusion/exclusion patterns but before security checks.
-Tfilename- (c, x, and t modes only) In x or t mode,
tarsnapwill read the list of names to be extracted from filename. In c mode,tarsnapwill read names to be archived from filename. The special name “-C” on a line by itself will cause the current directory to be changed to the directory specified on the following line. Names are terminated by newlines unless--null-inputis specified. Note that--null-inputalso disables the special handling of lines containing “-C”. If filename is “-” then the list of names will be read from the standard input. Note: If you are generating lists of files using find(1), you probably want to use-nas well. --totals- (c mode only) Print the size of the archive after creating it. This option
is provided mainly for compatibility with GNU tar; in most situations the
--print-statsoption will be far more useful. -U- (x mode only) Unlink files before creating them. Without this option,
tarsnapoverwrites existing files, which preserves existing hardlinks. With this option, existing hardlinks will be broken, as will any symlink that would affect the location of an extracted file. -v- (c, d, t, x, and list-archives modes only) Produce verbose output. In
create and extract modes,
tarsnapwill list each file name as it is read from or written to the archive. In delete mode,tarsnapwill list the name of each archive as it is deleted. In list mode,tarsnapwill produce output similar to that of ls(1). Additional-voptions will provide additional detail. --verify-config- Check the configuration file(s) for syntactic errors.
--version- Print version number of
tarsnap, and exit. --verylowmem- (c mode only) Reduce memory usage, by approximately a factor of 2 beyond
the memory usage when
--lowmemis specified, by not caching anything. -w- (c and x modes only) Ask for confirmation for every action.
-Xfilename- (c, x, and t modes only) Read a list of exclusion patterns from the
specified file. See
--excludefor more information about the handling of exclusions.
SIGNALS
tarsnap handles the following signals:
- SIGUSR1 & SIGINFO
- On receipt of the SIGUSR1 signal or (on platforms where it exists) the
SIGINFO signal,
tarsnapprints the current file or directory being processed, and (for files) its progress within the file. It also prints the number of files and the number of uncompressed bytes processed. Note that due to network buffering the file position will not align precisely with how much data has been sent to or received from thetarsnapserver. - SIGSTOP & SIGTSTP
- On receipt of a SIGSTOP or SIGTSTP signal, the kernel will suspend the
tarsnapprocess. Upon receiving a SIGCONT signal,tarsnapwill reconnect to the server (if necessary) and continue the specified task. - SIGUSR2
- On receipt of the SIGUSR2 signal, if
tarsnapis creating an archive (mode c), it will create a checkpoint at the current position. - SIGQUIT
- On receipt of the SIGQUIT signal, if
tarsnapis creating an archive (mode c) it will truncate the archive at the current position and exit (see "INTERRUPTING ARCHIVAL" below).
PRINTING ARCHIVE STATISTICS
There are four commands which print statistics about archives:
- Global statistics:
tarsnap--print-stats - Global statistics and info about specific archive(s):
tarsnap--print-stats-farchive-name1 [-f...] - Global statistics and info about all archives:
tarsnap--print-stats-f'*' - Global statistics and info about the archive(s) that were just created or
deleted:
tarsnap-c--print-stats-farchive-name DIRtarsnap-d--print-stats-farchive-name1 [-f...]
tarsnap will print a table in the
following format:
Total size Compressed size All archives 104491640436 51510524844 (unique data) 14830618089 7733620463 This archive 808723344 289077325 New data 17858641 5658308
In this example, the combined size of all archives stored by
tarsnap using the same keys is 104 GB, and the
combined size post-compression would be 51 GB; but after removing duplicate
blocks, there is only 14.8 GB which is compressed down to 7.7 GB. (It is
this 7.7 GB which is stored via the Tarsnap service and must thus be paid
for.) The newly created archive is 808 MB in size (compressible to 289 MB),
but only 17.8 MB of the data is new, and after compression only 5.6 MB is
uploaded to the Tarsnap server.
When tarsnap
--print-stats is executed as a command, the table is
printed to the standard output; when the
--print-stats option is used while creating or
deleting archives, the table is printed to the standard error device.
Global statistics are calculated based on the current cache directory, without using the keyfile or querying the Tarsnap servers.
INTERRUPTING ARCHIVAL
Upon receipt of the SIGQUIT signal or ^Q,
or if the bandwidth limit specified via a --maxbw
option is reached, tarsnap will interrupt the
creation of an archive and truncate it at the current position. When an
archive is truncated, it will be named according to the user-specified name
plus ".part" to denote the fact that it is incomplete. Such a
truncated archive may be useful in its own right, but also offers the
benefit that future attempts to archive the same data will be faster and use
less bandwidth.
FIREWALLS
tarsnap communicates with the
tarsnap server via a TCP connection to port 9279; in
some environments it may be necessary to add a firewall rule to allow
outgoing TCP connections to this port. At the present time (July 2009) there
is only one IP address in use for the tarsnap
server, so network administrators may wish to hard-code that IP address;
however, it is likely that at some point in the future that IP address will
change and/or other IP addresses will be added.
ENVIRONMENT
The following environment variables affect the execution of
tarsnap:
LANG- The locale to use. See environ(7) for more information.
TZ- The timezone to use when displaying dates. See environ(7) for more information.
FILES
- /etc/tarsnap/tarsnap.conf
- The system global
tarsnapconfiguration file. Parameters specified here only take effect if they are not specified via the current user's local configuration file or via the command line. - $XDG_CONFIG_HOME/tarsnap/tarsnap.conf
- A
tarsnapconfiguration file for the current user. If the environment variableXDG_CONFIG_HOMEis empty, the default value of ~/.config/tarsnap/tarsnap.conf will be used. Parameters specified here take effect unless they are specified via ~/.tarsnaprc or the command line. - ~/.tarsnaprc
- Another location for the
tarsnapconfiguration file for the current user. Parameters specified here take effect unless they are specified via the command line.
EXIT STATUS
The tarsnap utility exits 0 on
success, and >0 if an error occurs.
An exit code of 2 indicates that an error has occurred and the server-side state was modified.
EXAMPLES
Register with the server and generate keys:
tarsnap-keygen
--keyfile /usr/tarsnap.key
--user me@example.com
--machine myserverPerform a backup of /usr/home and /other/stuff/to/backup:
tarsnap
--keyfile /usr/tarsnap.key
--cachedir /usr/tarsnap-cache
-c -f
backup-2008-04-24 /usr/home
/other/stuff/to/backupPerform another backup, a day later; this is much faster since tarsnap will avoid storing data which was previously stored:
tarsnap
--keyfile /usr/tarsnap.key
--cachedir /usr/tarsnap-cache
-c -f
backup-2008-04-25 /usr/home
/other/stuff/to/backupList the archives:
tarsnap
--keyfile /usr/tarsnap.key
--list-archivesDelete the first backup, leaving the second backup intact:
tarsnap
--keyfile /usr/tarsnap.key
--cachedir /usr/tarsnap-cache
-d -f
backup-2008-04-24List the files in the remaining backup:
tarsnap
--keyfile /usr/tarsnap.key
-tv -f
backup-2008-04-25Restore two users' home directories from the backup:
tarsnap
--keyfile /usr/tarsnap.key
-x -f
backup-2008-04-25 usr/home/auser
usr/home/anotheruserIn /etc/crontab to create a backup of the entire system at 10:32 each day:
32 10 * * * root
tarsnap --keyfile
/usr/tarsnap.key --cachedir
/usr/tarsnap-cache -c
-f backup-`date +\%Y\%m\%d`
/Note that the --keyfile and
--cachedir options can be specified via the
tarsnap.conf(5)
configuration file, in which case they may be omitted from the command
line.
SECURITY
Certain security issues are common to many archiving programs,
including tarsnap. In particular, carefully-crafted
archives can request that tarsnap extract files to
locations outside of the target directory. This can potentially be used to
cause unwitting users to overwrite files they did not intend to overwrite.
If the archive is being extracted by the superuser, any file on the system
can potentially be overwritten. There are three ways this can happen.
Although tarsnap has mechanisms to protect against
each one, savvy users should be aware of the implications:
- Archive entries can have absolute pathnames. By default,
tarsnapremoves the leading / character from filenames before restoring them to guard against this problem. - Archive entries can have pathnames that include ..
components. By default,
tarsnapwill not extract files containing .. components in their pathname. - Archive entries can exploit symbolic links to restore files to other
directories. An archive can restore a symbolic link to another directory,
then use that link to restore a file into that directory. To guard against
this,
tarsnapchecks each extracted path for symlinks. If the final path element is a symlink, it will be removed and replaced with the archive entry. If-Uis specified, any intermediate symlink will also be unconditionally removed. If neither-Unor-Pis specified,tarsnapwill refuse to extract the entry.
Although tarsnap cryptographically signs
archives in such a manner that it is believed to be unfeasible for an
attacker to forge an archive without having possession of
key-file, you may wish to examine the contents of
archive(s) with
tarsnap
-t --keyfile
key-file -f
archive-name-P option to
tarsnap disables the security checks above and allows
you to extract an archive while preserving any absolute pathnames,
.. components, or symlinks to other directories.
SEE ALSO
HISTORY
A tar command appeared in Seventh Edition
Unix, which was released in January, 1979. There have been numerous other
implementations, many of which extended the file format. John Gilmore's
pdtar public-domain implementation (circa November,
1987) was quite influential, and formed the basis of GNU tar. GNU tar was
included as the standard system tar in FreeBSD
beginning with FreeBSD 1.0, but was replaced by Tim
Kientzle's bsdtar utility and
libarchive(3) library in
FreeBSD 5.3.
tarsnap is built around
bsdtar and
libarchive(3).
BUGS
This program follows ISO/IEC 9945-1:1996
(“POSIX.1”) for the definition of the
-l option to
tar(5). Note that GNU tar prior to
version 1.15 treated -l as a synonym for the
--one-file-system option.
To archive a file called @foo, @@foo, or -foo you must specify it as ./@foo, ./@@foo, or ./-foo, respectively.
In create mode, a leading ./ is always
removed. A leading / is stripped unless the
-P option is specified.
Hard link information may be lost if an archive file which is
included via the
@archive-file option is in a
non-"tar" format. (This is a consequence of the incompatible ways
that different archive formats store hardlink information.)
There are alternative long options for many of the short options that are deliberately not documented.
The limit specified by a --maxbw option is
not strictly enforced; in particular, due to the need to cleanly terminate
an archive, the amount of bandwidth used may slightly exceed the limit.
If tarsnap is run with standard input,
standard output, and standard error redirected and inside a chroot where
terminal devices are not exposed, ^Q will not be mapped to SIGQUIT and will
consequently not trigger the truncation of the current archive.
| March 20, 2025 | Linux 6.12.107+deb13-amd64 |