Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (4.2BSD)
Apropos / Subsearch:
optional field

TAR(5)                        File Formats Manual                       TAR(5)

       tar - tape archive file format

       Tar,  (the  tape  archive  command)  dumps several files into one, in a
       medium suitable for transportation.

       A ``tar tape'' or file is a series of blocks.  Each block  is  of  size
       TBLOCK.   A  file  on  the  tape is represented by a header block which
       describes the file, followed by zero or more blocks which give the con-
       tents  of  the file.  At the end of the tape are two blocks filled with
       binary zeros, as an end-of-file indicator.

       The blocks are grouped for physical I/O operations.  Each  group  of  n
       blocks (where n is set by the b keyletter on the tar(1) command line --
       default is 20 blocks) is written with a single system  call;  on  nine-
       track  tapes,  the  result  of this write is a single tape record.  The
       last group is always written at the full size, so blocks after the  two
       zero  blocks contain random data.  On reading, the specified or default
       group size is used for the first read, but if that  read  returns  less
       than  a  full  tape  block,  the reduced block size is used for further

       The header block looks like:

              #define TBLOCK 512
              #define NAMSIZ 100

              union hblock {
                   char dummy[TBLOCK];
                   struct header {
                        char name[NAMSIZ];
                        char mode[8];
                        char uid[8];
                        char gid[8];
                        char size[12];
                        char mtime[12];
                        char chksum[8];
                        char linkflag;
                        char linkname[NAMSIZ];
                   } dbuf;

       Name is a null-terminated string.  The  other  fields  are  zero-filled
       octal numbers in ASCII.  Each field (of width w) contains w-2 digits, a
       space, and a null, except size and mtime,  which  do  not  contain  the
       trailing  null.   Name is the name of the file, as specified on the tar
       command line.  Files dumped because they were in a directory which  was
       named  in the command line have the directory name as prefix and /file-
       name as suffix.  Mode is the file mode, with the top  bit  masked  off.
       Uid and gid are the user and group numbers which own the file.  Size is
       the size of the file in bytes.  Links and  symbolic  links  are  dumped
       with  this  field specified as zero.  Mtime is the modification time of
       the file at the time it was dumped.  Chksum is a  decimal  ASCII  value
       which  represents  the  sum of all the bytes in the header block.  When
       calculating the checksum, the chksum field is treated as if it were all
       blanks.   Linkflag  is ASCII `0' if the file is ``normal'' or a special
       file, ASCII `1' if it is an hard link, and ASCII `2' if it  is  a  sym-
       bolic  link.  The name linked-to, if any, is in linkname, with a trail-
       ing null.  Unused fields of  the  header  are  binary  zeros  (and  are
       included in the checksum).

       The first time a given i-node number is dumped, it is dumped as a regu-
       lar file.  The second and subsequent times, it  is  dumped  as  a  link
       instead.   Upon  retrieval,  if  a link entry is retrieved, but not the
       file it was linked to, an error message is printed and the tape must be
       manually re-scanned to retrieve the linked-to file.

       The encoding of the header is designed to be portable across machines.


       Names  or linknames longer than NAMSIZ produce error reports and cannot
       be dumped.

                                15 January 1983                         TAR(5)