Setting Parameters for Backups and Restoration
+* General-Purpose Variables::
+* Magnetic Tape Control::
+* User Hooks::
* backup-specs example:: An Example Text of @file{Backup-specs}
-* Script Syntax:: Syntax for @file{Backup-specs}
Choosing Files and Names for @command{tar}
* Portable Names:: Portable Names
* dereference:: Symbolic Links
* old:: Old V7 Archives
-* posix:: @sc{posix} archives
+* posix:: @acronym{POSIX} archives
* Checksumming:: Checksumming Problems
* Large or Negative Values:: Large files, negative time stamps, etc.
numeric fields.
@item ustar
-Creates a POSIX.1-1988 compatible archive.
+Creates a @acronym{POSIX.1-1988} compatible archive.
@item posix
-Creates a POSIX.1-2001 archive.
+Creates a @acronym{POSIX.1-2001 archive}.
@end table
@item --pax-option=@var{keyword-list}
-This option is meaningful only with POSIX.1-2001 archives
+This option is meaningful only with @acronym{POSIX.1-2001} archives
(@FIXME-xref{}). It modifies the way @command{tar} handles the
extended header keywords. @var{Keyword-list} is a comma-separated
list of keyword options, each keyword option taking one of
When used in extract or list mode, this option instructs tar
to ignore any keywords matching the given @var{pattern} in the extended
header records. In both cases, matching is performed using the pattern
-matching notation described in POSIX 1003.2, 3.13 (@FIXME-xref{}, see
-man 7 glob). For example:
+matching notation described in @acronym{POSIX 1003.2}, 3.13 @FIXME-xref{see
+man 7 glob}. For example:
@smallexample
--pax-option delete=security.*
@node Backup Levels
@section Levels of Backups
-@UNREVISED
An archive containing all the files in the file system is called a
@dfn{full backup} or @dfn{full dump}. You could insure your data by
are daily re-archived.
It is more efficient to do a full dump only occasionally. To back up
-files between full dumps, you can a incremental dump. A @dfn{level
+files between full dumps, you can use @dfn{incremental dumps}. A @dfn{level
one} dump archives all the files that have changed since the last full
dump.
more than once a day is usually not worth the trouble).
@GNUTAR{} comes with scripts you can use to do full
-and level-one dumps. Using scripts (shell programs) to perform
-backups and restoration is a convenient and reliable alternative to
-typing out file name lists and @command{tar} commands by hand.
+and level-one (actually, even level-two and so on) dumps. Using
+scripts (shell programs) to perform backups and restoration is a
+convenient and reliable alternative to typing out file name lists
+and @command{tar} commands by hand.
Before you use these scripts, you need to edit the file
@file{backup-specs}, which specifies parameters used by the backup
-scripts and by the restore script. @FIXME{There is no such restore
-script!}@FIXME-xref{Script Syntax}Once the backup parameters
-are set, you can perform backups or restoration by running the
-appropriate script.
-
-The name of the restore script is @code{restore}. @FIXME{There is
-no such restore script!}The names of the level one and full backup
-scripts are, respectively, @code{level-1} and @code{level-0}.
-The @code{level-0} script also exists under the name @code{weekly}, and
-the @code{level-1} under the name @code{daily}---these additional names
-can be changed according to your backup schedule. @FIXME-xref{Scripted
-Restoration, for more information on running the restoration script.}
-@FIXME-xref{Scripted Backups, for more information on running the
-backup scripts.}
-
-@emph{Please Note:} The backup scripts and the restoration scripts are
+scripts and by the restore script. This file is usually located
+in @file{/etc/backup} directory. @FIXME-xref{Script Syntax} Once the
+backup parameters are set, you can perform backups or restoration by
+running the appropriate script.
+
+The name of the backup script is @code{backup}. The name of the
+restore script is @code{restore}. The following sections describe
+their use in detail.
+
+@emph{Please Note:} The backup and restoration scripts are
designed to be used together. While it is possible to restore files by
hand from an archive which was created using a backup script, and to create
an archive by hand which could then be extracted using the restore script,
-it is easier to use the scripts.@FIXME{There is no such restore script!}
-@value{xref-incremental}, and @value{xref-listed-incremental},
-before making such an attempt.
-
-@FIXME{shorten node names}
+it is easier to use the scripts. @value{xref-incremental}, and
+@value{xref-listed-incremental}, before making such an attempt.
@node Backup Parameters
@section Setting Parameters for Backups and Restoration
-@UNREVISED
The file @file{backup-specs} specifies backup parameters for the
backup and restoration scripts provided with @command{tar}. You must
edit @file{backup-specs} to fit your system configuration and schedule
before using these scripts.
-@FIXME{This about backup scripts needs to be written: BS is a shell
-script .... thus ... @file{backup-specs} is in shell script syntax.}
+Syntactically, @file{backup-specs} is a shell script, containing
+mainly variable assignments. However, any valid shell construct
+is allowed in this file. Particularly, you may wish to define
+functions within that script (e.g. see @code{RESTORE_BEGIN} below).
+For more information about shell script syntax, please refer to
+@url{http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#ta
+g_02, the definition of the Shell Command Language}. See also
+@ref{Top,,Bash Features,bashref,Bash Reference Manual}.
-@FIXME-xref{Script Syntax, for an explanation of this syntax.}
+The shell variables controlling behavior of @code{backup} and
+@code{restore} are described in the following subsections.
-@FIXME{Whats a parameter .... looked at by the backup scripts
-... which will be expecting to find ... now syntax ... value is linked
-to lame ... @file{backup-specs} specifies the following parameters:}
+@menu
+* General-Purpose Variables::
+* Magnetic Tape Control::
+* User Hooks::
+* backup-specs example:: An Example Text of @file{Backup-specs}
+@end menu
-@table @samp
-@item ADMINISTRATOR
-The user name of the backup administrator.
+@node General-Purpose Variables
+@subsection General-Purpose Variables
-@item BACKUP_HOUR
-The hour at which the backups are done. This can be a number from 0
-to 23, or the string @samp{now}.
+@defvr {Backup variable} ADMINISTRATOR
+The user name of the backup administrator. @code{Backup} scripts
+sends a backup report to this address.
+@end defvr
-@item TAPE_FILE
+@defvr {Backup variable} BACKUP_HOUR
+The hour at which the backups are done. This can be a number from 0
+to 23, or the time specification in form @var{hours}:@var{minutes},
+or the string @samp{now}.
+
+This variable is used by @code{backup}. Its value may be overridden
+using @option{--time} option (@pxref{Scripted Backups}).
+@end defvr
+
+@defvr {Backup variable} TAPE_FILE
The device @command{tar} writes the archive to. This device should be
attached to the host on which the dump scripts are run.
+@end defvr
-@FIXME{examples for all ...}
-
-@item TAPE_STATUS
-The command to use to obtain the status of the archive device,
-including error count. On some tape drives there may not be such a
-command; in that case, simply use @samp{TAPE_STATUS=false}.
+@defvr {Backup variable} BLOCKING
-@item BLOCKING
The blocking factor @command{tar} will use when writing the dump archive.
@value{xref-blocking-factor}.
+@end defvr
-@item BACKUP_DIRS
-A list of file systems to be dumped. You can include any directory
-name in the list---subdirectories on that file system will be
+@defvr {Backup variable} BACKUP_DIRS
+
+A list of file systems to be dumped (for @code{backup}), or restored
+(for @code{restore}). You can include any directory
+name in the list --- subdirectories on that file system will be
included, regardless of how they may look to other networked machines.
Subdirectories on other file systems will be ignored.
the file system does not have this capability, you can specify another
host as long as it can access the file system through NFS.
-@item BACKUP_FILES
-A list of individual files to be dumped. These should be accessible
-from the machine on which the backup script is run.
+If the list of file systems is very long you may wish to put it
+in a separate file. This file is usually named
+@file{/etc/backup/dirs}, but this name may be overridden in
+@file{backup-specs} using @code{DIRLIST} variable.
+@end defvr
+
+@defvr {Backup variable} DIRLIST
+
+A path to the file containing the list of the filesystems to backup
+or restore. By default it is @file{/etc/backup/dirs}.
+@end defvr
+
+@defvr {Backup variable} BACKUP_FILES
+
+A list of individual files to be dumped (for @code{backup}), or restored
+(for @code{restore}). These should be accessible from the machine on
+which the backup script is run.
+
+If the list of file systems is very long you may wish to store it
+in a separate file. This file is usually named
+@file{/etc/backup/files}, but this name may be overridden in
+@file{backup-specs} using @code{FILELIST} variable.
+@end defvr
+
+@defvr {Backup variable} FILELIST
+
+A path to the file containing the list of the individual files to backup
+or restore. By default it is @file{/etc/backup/files}.
+@end defvr
+
+@defvr {Backup variable} RSH
+
+Path to @code{rsh} binary or its equivalent. You may wish to
+set it to @code{ssh}, to improve security. In this case you will have
+to use public key authentication.
+@end defvr
+
+@defvr {Backup variable} RSH_COMMAND
+
+Path to rsh binary on remote mashines. This will be passed via
+@option{--rsh-command} option to the remote invocation of @GNUTAR{}.
+@end defvr
+
+@defvr {Backup variable} VOLNO_FILE
+
+Name of temporary file to hold volume numbers. This needs to be accessible
+by all the machines which have filesystems to be dumped.
+@end defvr
+
+@defvr {Backup variable} XLIST
+
+Name of @dfn{exclude file list}. An @dfn{exclude file list} is a file
+located on the remote machine and containing the list of files to
+be excluded from the backup. Exclude file lists are searched in
+/etc/tar-backup directory. A common use for exclude file lists
+is to exclude files containing security-sensitive information
+(e.g. @file{/etc/shadow} from backups.
+
+This variable affects only @code{backup}.
+@end defvr
+
+@defvr {Backup variable} SLEEP_TIME
+
+Time to sleep between dumps of any two successive filesystems
+
+This variable affects only @code{backup}.
+@end defvr
+
+@defvr {Backup variable} DUMP_REMIND_SCRIPT
+
+Script to be run when it's time to insert a new tape in for the next
+volume. Administrators may want to tailor this script for their site.
+If this variable isn't set, @GNUTAR{} will display its built-in prompt
+@FIXME-xref{describe it somewhere!}, and will expect confirmation from
+the console.
+@end defvr
+
+@defvr {Backup variable} SLEEP_MESSAGE
+
+Message to display on the terminal while waiting for dump time. Usually
+this will just be some literal text.
+@end defvr
-@FIXME{Same file name, be specific. Through NFS ...}
+@defvr {Backup variable} TAR
+Pathname of the @GNUTAR{} executable. If this is not set, backup
+scripts will search @command{tar} in the current shell path.
+@end defvr
+
+@node Magnetic Tape Control
+@subsection Magnetic Tape Control
+
+Backup scripts access tape device using special @dfn{hook functions}.
+These functions take a single argument -- the name of the tape
+device. Their names are kept in the following variables:
+
+@defvr {Backup variable} MT_BEGIN
+The name of @dfn{begin} function. This function is called before
+accessing the drive. By default it retensions the tape:
+
+@smallexample
+MT_BEGIN=mt_begin
+
+mt_begin() @{
+ mt -f "$1" retension
+@}
+@end smallexample
+@end defvr
+
+@defvr {Backup variable} MT_REWIND
+THe name of @dfn{rewind} function. The default definition is as
+follows:
+
+@smallexample
+MT_REWIND=mt_rewind
+
+mt_rewind() @{
+ mt -f "$1" rewind
+@}
+@end smallexample
+
+@end defvr
+
+@defvr {Backup variable} MT_OFFLINE
+The name of the function switching the tape off line. By default
+it is defined as follows:
+
+@smallexample
+MT_OFFLINE=mt_offline
+
+mt_offline() @{
+ mt -f "$1" offl
+@}
+@end smallexample
+@end defvr
+
+@defvr {Backup variable} MT_STATUS
+The name of the function used to obtain the status of the archive device,
+including error count. Default definition:
+
+@smallexample
+MT_STATUS=mt_status
+
+mt_status() @{
+ mt -f "$1" status
+@}
+@end smallexample
+@end defvr
+
+@node User Hooks
+@subsection User Hooks
+
+@dfn{User hooks} are shell functions executed before and after
+each @command{tar} invocations. Thus, there are @dfn{backup
+hooks}, which are executed before and after dumping each file
+system, and @dfn{restore hooks}, executed before and
+after restoring a file system. Each user hook is a shell function
+taking four arguments:
+
+@deffn {User Hook Function} hook @var{level} @var{host} @var{fs} @var{fsname}
+The arguments are:
+
+@table @var
+@item level
+Current backup or restore level.
+
+@item host
+Name or IP address of the host machine being dumped or restored.
+
+@item fs
+Full path name to the filesystem being dumped or restored.
+
+@item fsname
+Filesystem name with directory separators replaced with colons. This
+is useful e.g. for creating unique files.
@end table
+@end deffn
-@menu
-* backup-specs example:: An Example Text of @file{Backup-specs}
-* Script Syntax:: Syntax for @file{Backup-specs}
-@end menu
+Following variables keep the names of user hook functions
+
+@defvr {Backup variable} DUMP_BEGIN
+Dump begin function. It is executed before dumping the filesystem.
+@end defvr
+
+@defvr {Backup variable} DUMP_END
+Executed after dumping the filesystem.
+@end defvr
+
+@defvr {Backup variable} RESTORE_BEGIN
+Executed before restoring the filesystem.
+@end defvr
+
+@defvr {Backup variable} RESTORE_END
+Executed after restoring the filesystem.
+@end defvr
@node backup-specs example
@subsection An Example Text of @file{Backup-specs}
-@UNREVISED
The following is the text of @file{backup-specs} as it appears at FSF:
ADMINISTRATOR=friedman
BACKUP_HOUR=1
TAPE_FILE=/dev/nrsmt0
-TAPE_STATUS="mts -t $TAPE_FILE"
+
+# Use @code{ssh} instead of the less secure @code{rsh}
+RSH=/usr/bin/ssh
+RSH_COMMAND=/usr/bin/ssh
+
+# Override MT_STATUS function:
+my_status() @{
+ mts -t $TAPE_FILE
+@}
+MT_STATUS=my_status
+
+# Disable MT_OFFLINE function
+MT_OFFLINE=:
+
BLOCKING=124
BACKUP_DIRS="
albert:/fs/fsf
@end smallexample
-@node Script Syntax
-@subsection Syntax for @file{Backup-specs}
-@UNREVISED
-
-@file{backup-specs} is in shell script syntax. The following
-conventions should be considered when editing the script:
-@FIXME{"conventions?"}
-
-A quoted string is considered to be contiguous, even if it is on more
-than one line. Therefore, you cannot include commented-out lines
-within a multi-line quoted string. BACKUP_FILES and BACKUP_DIRS are
-the two most likely parameters to be multi-line.
-
-A quoted string typically cannot contain wildcards. In
-@file{backup-specs}, however, the parameters BACKUP_DIRS and
-BACKUP_FILES can contain wildcards.
-
@node Scripted Backups
@section Using the Backup Scripts
-@UNREVISED
The syntax for running a backup script is:
@smallexample
-@file{script-name} [@var{time-to-be-run}]
+backup --level=@var{level} --time=@var{time}
@end smallexample
-where @var{time-to-be-run} can be a specific system time, or can be
-@kbd{now}. If you do not specify a time, the script runs at the time
-specified in @file{backup-specs}. @FIXME-pxref{Script Syntax}
+The @option{level} option requests the dump level. Thus, to produce
+a full dump, specify @code{--level=0} (this is the default, so
+@option{--level} may be omitted if its value is @code{0}).
+@footnote{For backward compatibility, the @code{backup} will also
+try to deduce the requested dump level from the name of the
+script itself. If the name consists of a string @samp{level-}
+followed by a single decimal digit, that digit is taken as
+the dump level number. Thus, you may create a link from @code{backup}
+to @code{level-1} and then run @code{level-1} whenever you need to
+create a level one dump.}
+
+The @option{--time} option determines when should the backup be
+run. @var{Time} may take three forms:
+
+@table @asis
+@item @var{hh}:@var{mm}
+
+The dump must be run at @var{hh} hours @var{mm} minutes.
+
+@item @var{hh}
+
+The dump must be run at @var{hh} hours
+
+@item now
+
+The dump must be run immediately.
+@end table
You should start a script with a tape or disk mounted. Once you
start a script, it prompts you for new tapes or disks as it
needs them. Media volumes don't have to correspond to archive
-files---a multi-volume archive can be started in the middle of a
+files --- a multi-volume archive can be started in the middle of a
tape that already contains the end of another multi-volume archive.
The @code{restore} script prompts for media by its archive volume,
so to avoid an error message you should keep track of which tape
-(or disk) contains which volume of the archive. @FIXME{There is
-no such restore script!} @FIXME-xref{Scripted Restoration}
-@FIXME{Have file names changed?}
+(or disk) contains which volume of the archive (@pxref{Scripted
+Restoration}).
The backup scripts write two files on the file system. The first is a
record file in @file{/etc/tar-backup/}, which is used by the scripts
messages that were generated, as well as how much space was left in
the media volume after the last volume of the archive was written.
You should check this log file after every backup. The file name is
-@file{log-@var{mmm-ddd-yyyy}-level-1} or
-@file{log-@var{mmm-ddd-yyyy}-full}.
+@file{log-@var{mmm-ddd-yyyy}-level-@var{n}}, where @var{n} represents
+current dump level number.
The script also prints the name of each system being dumped to the
standard output.
+Following is the full list of options accepted by @code{backup}
+script:
+
+@table @option
+@item -l @var{level}
+@itemx --level=@var{level}
+Do backup level @var{level} (default 0).
+
+@item -f
+@itemx --force
+Force backup even if today's log file already exists.
+
+@item -v@var{level}
+@itemx --verbose[=@var{level}]
+Set verbosity level. The higher the level is, the more debugging
+information will be output during execution. Devault @var{level}
+is 100, which means the highest debugging level.
+
+@item -t @var{start-time}
+@itemx --time=@var{start-time}
+Wait till @var{time}, then do backup.
+
+@item -h
+@itemx --help
+Display short help message and exit.
+
+@item -L
+@itemx --license
+Display program license and exit.
+
+@item -V
+@itemx --version
+Display program version and exit.
+@end table
+
+
@node Scripted Restoration
@section Using the Restore Script
-@UNREVISED
-@ifset PUBLISH
+To restore files that were archived using a scripted backup, use the
+@code{restore} script. Its usage is quite straightforward. In the
+simplest form, invoke @command{restore} without options, it will
+then restore all the filesystems and files specified in
+@file{backup-specs} (@pxref{General-Purpose Variables,BACKUP_DIRS}).
-The @command{tar} distribution does not provide restoring scripts.
+You may select the filesystems (and/or files) to restore by
+giving @code{restore} list of @dfn{patterns} in its command
+line. For example, running
-@end ifset
+@smallexample
+restore 'albert:*'
+@end smallexample
-@ifclear PUBLISH
+@noindent
+will restore all filesystems on the machine @samp{albert}. A more
+complicated example:
-@quotation
-@strong{Warning:} The @GNUTAR{} distribution does @emph{not}
-provide any such @code{restore} script yet. This section is only
-listed here for documentation maintenance purposes. In any case,
-all contents is subject to change as things develop.
-@end quotation
+@smallexample
+restore 'albert:*' '*:/var'
+@end smallexample
-@FIXME{A section on non-scripted restore may be a good idea.}
+@noindent
+This command will restore all filesystems on the machine @samp{albert}
+as well as @file{/var} filesystem on all machines.
-To restore files that were archived using a scripted backup, use the
-@code{restore} script. The syntax for the script is:
+By default @code{restore} will start restoring files from the lowest
+available dump level (usually zero) and will continue through
+all available dump levels. There may be situations where such a
+thorough restore is not necessary. For example, you may wish to
+restore only files from the recent level one backup. To do so,
+use @option{--level} option, as shown in the example below:
+
+@smallexample
+restore --level=1
+@end smallexample
-where ***** are the file systems to restore from, and
-***** is a regular expression which specifies which files to
-restore. If you specify --all, the script restores all the files
-in the file system.
+The full list of options accepted by @code{restore} follows:
+
+@table @option
+@item -l @var{level}
+@itemx --level=@var{level}
+Start restoring from the given backup level, instead of the default 0.
+
+@item -v@var{level}
+@itemx --verbose[=@var{level}]
+Set verbosity level. The higher the level is, the more debugging
+information will be output during execution. Devault @var{level}
+is 100, which means the highest debugging level.
+
+@item -h
+@itemx --help
+Display short help message and exit.
+
+@item -L
+@itemx --license
+Display program license and exit.
+
+@item -V
+@itemx --version
+Display program version and exit.
+@end table
You should start the restore script with the media containing the
first volume of the archive mounted. The script will prompt for other
the tape as needed. @FIXME-xref{Media, for a discussion of tape
positioning.}
-If you specify @samp{--all} as the @var{files} argument, the
-@code{restore} script extracts all the files in the archived file
-system into the active file system.
-
@quotation
@strong{Warning:} The script will delete files from the active file
system if they were not in the file system when the archive was made.
@value{xref-incremental}, and @value{ref-listed-incremental},
for an explanation of how the script makes that determination.
-@FIXME{this may be an option, not a given}
-
-@end ifclear
-
@node Choosing
@chapter Choosing Files and Names for @command{tar}
@UNREVISED
@table @asis
@item gnu
Format used by @GNUTAR{} versions up to 1.13.25. This format derived
-from an early POSIX standard, adding some improvements such as
+from an early @acronym{POSIX} standard, adding some improvements such as
sparse file handling and incremental archives. Unfortunately these
features were implemented in a way incompatible with other archive
formats.
Automake prior to 1.9.
@item ustar
-Archive format defined by POSIX.1-1988 specification. It stores
+Archive format defined by @acronym{POSIX.1-1988} specification. It stores
symbolic ownership information. It is also able to store
special files. However, it imposes several restrictions as well:
currently does not produce them.
@item posix
-Archive format defined by POSIX.1-2001 specification. This is the
+Archive format defined by @acronym{POSIX.1-2001} specification. This is the
most flexible and feature-rich format. It does not impose any
restrictions on file sizes or filename lengths. This format is quite
recent, so not all tar implementations are able to handle it properly.
* Portable Names:: Portable Names
* dereference:: Symbolic Links
* old:: Old V7 Archives
+* ustar:: Ustar Archives
* gnu:: GNU and old GNU format archives.
-* posix:: @sc{posix} archives
+* posix:: @acronym{POSIX} archives
* Checksumming:: Checksumming Problems
* Large or Negative Values:: Large files, negative time stamps, etc.
@end menu
group and user IDs instead of group and user names.
When updating an archive, do not use @value{op-format-v7}
-unless the archive was created with using this option.
+unless the archive was created using this option.
In most cases, a @emph{new} format archive can be read by an @emph{old}
@command{tar} program without serious trouble, so this option should
able to read old format archives, so it might be safer for you to
always use @value{op-format-v7} for your distributions.
+@node ustar
+@subsection Ustar Archive Format
+
+Archive format defined by @acronym{POSIX}.1-1988 specification is called
+@code{ustar}. Although it is more flexible than the V7 format, it
+still has many restrictions (@xref{Formats,ustar}, for the detailed
+description of @code{ustar} format). Along with V7 format,
+@code{ustar} format is a good choice for archives intended to be read
+with other implementations of @command{tar}.
+
+To create archive in @code{ustar} format, use @value{op-format-ustar}
+option in conjunction with the @value{op-create}.
+
@node gnu
@subsection @acronym{GNU} and old @GNUTAR{} format
@GNUTAR{} was based on an early draft of the
-@sc{posix} 1003.1 @code{ustar} standard. @acronym{GNU} extensions to
+@acronym{POSIX} 1003.1 @code{ustar} standard. @acronym{GNU} extensions to
@command{tar}, such as the support for file names longer than 100
characters, use portions of the @command{tar} header record which were
-specified in that @sc{posix} draft as unused. Subsequent changes in
-@sc{posix} have allocated the same parts of the header record for
+specified in that @acronym{POSIX} draft as unused. Subsequent changes in
+@acronym{POSIX} have allocated the same parts of the header record for
other purposes. As a result, @GNUTAR{} format is
-incompatible with the current @sc{posix} specification, and with
+incompatible with the current @acronym{POSIX} specification, and with
@command{tar} programs that follow it.
In the majority of cases, @command{tar} will be configured to create
-this format by default. This may change in the future, since we plan
-to make @samp{posix} format the default.
+this format by default. This will change in the future releases, since
+we plan to make @samp{posix} format the default.
To force creation a @GNUTAR{} archive, use option
@value{op-format-gnu}.
@item @value{op-label}, when used with @value{op-create}.
@item @value{op-incremental}
@item @value{op-multi-volume}
-@item @value{op-sparse}
@end itemize
These options will be re-implemented for the @samp{posix} archive
format in the future.
@node posix
-@subsection @GNUTAR{} and @sc{posix} @command{tar}
+@subsection @GNUTAR{} and @acronym{POSIX} @command{tar}
The version @value{VERSION} of @GNUTAR{} is able
-to read and create archives conforming to @sc{posix.1-2001} standard.
+to read and create archives conforming to @acronym{POSIX.1-2001} standard.
-A @sc{posix} conformant archive will be created if @command{tar}
+A @acronym{POSIX} conformant archive will be created if @command{tar}
was given @value{op-format-posix} option.
Notice, that currently @acronym{GNU} extensions are not
allowed with this format. Following is the list of options that
@item @value{op-label}, when used with @value{op-create}.
@item @value{op-incremental}
@item @value{op-multi-volume}
-@item @value{op-sparse}
@end itemize
This restriction will disappear in the future versions.
@GNUTAR{} and containing non-ASCII file names, that
is, file names having characters with the eight bit set, because they
use signed checksums, while @GNUTAR{} uses unsigned
-checksums while creating archives, as per @sc{posix} standards. On
+checksums while creating archives, as per @acronym{POSIX} standards. On
reading, @GNUTAR{} computes both checksums and
accept any. It is somewhat worrying that a lot of people may go
around doing backup of their files using faulty (or at least
@cindex future time stamps
@cindex negative time stamps
-@sc{posix} @command{tar} format uses fixed-sized unsigned octal strings
+@acronym{POSIX} @command{tar} format uses fixed-sized unsigned octal strings
to represent numeric values. User and group IDs and device major and
minor numbers have unsigned 21-bit representations, and file sizes and
times have unsigned 33-bit representations. @GNUTAR{}
-generates @sc{posix} representations when possible, but for values
-outside the @sc{posix} range it generates two's-complement base-256
+generates @acronym{POSIX} representations when possible, but for values
+outside the @acronym{POSIX} range it generates two's-complement base-256
strings: uids, gids, and device numbers have signed 57-bit
representations, and file sizes and times have signed 89-bit
-representations. These representations are an extension to @sc{posix}
+representations. These representations are an extension to @acronym{POSIX}
@command{tar} format, so they are not universally portable.
The most common portability problems with out-of-range numeric values
are large files and future or negative time stamps.
-Portable archives should avoid members of 8 GB or larger, as @sc{posix}
+Portable archives should avoid members of 8 GB or larger, as @acronym{POSIX}
@command{tar} format cannot represent them.
-Portable archives should avoid time stamps from the future. @sc{posix}
+Portable archives should avoid time stamps from the future. @acronym{POSIX}
@command{tar} format can represent time stamps in the range 1970-01-01
00:00:00 through 2242-03-16 12:56:31 @sc{utc}. However, many current
hosts use a signed 32-bit @code{time_t}, or internal time stamp format,
portable archives must avoid these time stamps for many years to come.
Portable archives should also avoid time stamps before 1970. These time
-stamps are a common @sc{posix} extension but their @code{time_t}
+stamps are a common @acronym{POSIX} extension but their @code{time_t}
representations are negative. Many traditional @command{tar}
implementations generate a two's complement representation for negative
time stamps that assumes a signed 32-bit @code{time_t}; hence they
The Unix man page on @command{tar} was totally confused about this.
When I wrote @code{PD TAR}, I used the historically correct terminology
(@command{tar} writes data records, which are grouped into blocks).
-It appears that the bogus terminology made it into @sc{posix} (no surprise
+It appears that the bogus terminology made it into @acronym{POSIX} (no surprise
here), and now Fran@,{c}ois has migrated that terminology back
into the source code too.
@end quotation