[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Ideally, when tar
is creating an archive, it reads from a
file system that is not being modified, and encounters no errors or
inconsistencies while reading and writing. If this is the case, the
archive should faithfully reflect what was read. Similarly, when
extracting from an archive, ideally tar
ideally encounters
no errors and the extracted files faithfully reflect what was in the
archive.
However, when reading or writing real-world file systems, several things can go wrong; these include permissions problems, corruption of data, and race conditions.
10.1.1 Permissions Problems | ||
10.1.2 Data Corruption and Repair | ||
10.1.3 Race conditions |
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
If tar
encounters errors while reading or writing files, it
normally reports an error and exits with nonzero status. The work it
does may therefore be incomplete. For example, when creating an
archive, if tar
cannot read a file then it cannot copy the
file into the archive.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
If an archive becomes corrupted by an I/O error, this may corrupt the data in an extracted file. Worse, it may corrupt the file’s metadata, which may cause later parts of the archive to become misinterpreted. An tar-format archive contains a checksum that most likely will detect errors in the metadata, but it will not detect errors in the data.
If data corruption is a concern, you can compute and check your own
checksums of an archive by using other programs, such as
cksum
.
When attempting to recover from a read error or data corruption in an archive, you may need to skip past the questionable data and read the rest of the archive. This requires some expertise in the archive format and in other software tools.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
If some other process is modifying the file system while tar
is reading or writing files, the result may well be inconsistent due
to race conditions. For example, if another process creates some
files in a directory while tar
is creating an archive
containing the directory’s files, tar
may see some of the
files but not others, or it may see a file that is in the process of
being created. The resulting archive may not be a snapshot of the
file system at any point in time. If an application such as a
database system depends on an accurate snapshot, restoring from the
tar
archive of a live file system may therefore break that
consistency and may break the application. The simplest way to avoid
the consistency issues is to avoid making other changes to the file
system while tar is reading it or writing it.
When creating an archive, several options are available to avoid race
conditions. Some hosts have a way of snapshotting a file system, or
of temporarily suspending all changes to a file system, by (say)
suspending the only virtual machine that can modify a file system; if
you use these facilities and have tar -c
read from a
snapshot when creating an archive, you can avoid inconsistency
problems. More drastically, before starting tar
you could
suspend or shut down all processes other than tar
that have
access to the file system, or you could unmount the file system and
then mount it read-only.
When extracting from an archive, one approach to avoid race conditions is to create a directory that no other process can write to, and extract into that.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] |
This document was generated on August 23, 2023 using texi2html 5.0.