备份文件

用途

将文件系统复制到临时存储介质上。

描述

文件系统的备份可提供保护,防止由于意外或错误而导致大量数据丢失。 备份 命令以 备份 文件格式写入文件系统备份,而 复原 命令则以相反方式读取文件系统备份。 备份文件包含几个不同类型的头记录以及备份的每个文件中的数据。

头记录

用于按名称备份的不同类型的头记录为:

头记录 (header record) 描述
FS_VOLUME 存在于每个卷上并保存卷标。
FS_NAME_X 保存通过名称备份的文件的描述。
FS_END 指示备份的结束时间。 此头显示在最后一个卷的末尾。

用于按索引节点和名称备份的不同类型的头记录为:

头记录 (header record) 描述
TS_TAPE 存在于每个卷上并保存卷标。
TS_BITS 描述目录结构。
TS_CLRI 描述备份系统上未使用的索引节点号。
TS_INODE 描述文件。
TS_ADDR 指示先前文件的连续状态。
结束 指示备份的结束时间。

用于 by-inode 备份的头结构字段的描述为:

头记录 (header record) 描述
c_type 头类型。
c_date 当前转储日期。
c_ddate 文件系统转储日期。
c_volume 卷号。
c_tapea 当前头记录的数量。
c_inumber 此记录上的索引节点号。
c_magic 神奇的数字
c_checksum 将使记录总和为 校验和 值的值。
bsd_c_dinode 出现在 BSD 文件系统上的 BSD 索引节点的副本。
c_count 以下项中的字符数:c_addr
c_addr 一个字符数组,用于描述要为文件转储的块。
xix_flag 如果执行文件系统的备份,请设置为 XIX_MAGAL 值。
xix_dinode 来自文件系统的真实双节点。

除最后一个卷外,每个卷都以磁带标记结束 (作为文件结束读取)。 最后一个卷以 结束 记录结束,然后是磁带标记。

按名称格式

按名称进行备份的格式为:

FS_VOLUME

FS_NAME_X (在每个文件之前)

文件数据

FS_END

按索引节点格式

下面是按索引节点备份的格式:

卷 (TS_VOLUME)

TS_BITS

TS_CLRI

TS_INODE

结束

以下是对 by-inode 头文件的详细描述:

union u_spcl {
    char dummy[TP_BSIZE];
    struct s_spcl {
        int       c_type;                         /* 4 */
        time_t    c_date;                         /* 8 * /
        time_t    c_ddate;                        /* 12 */
        int       c_volume;                       /* 16 */
        daddr_t   c_tapea;                        /* 20 */
        ino_t     c_inumber;                      /* 24 */
        int       c_magic;                        /* 28 */
        int       c_checksum;                     /* 32 */
        struct    bsd_dinode   bsd_c_dinode;      /* 160 */
        int       c_count;                        /* 164 */
        char      c_addr[TP_NINDIR];              /* 676 */
        int       xix_flag;                       /* 680 */
        struct    dinode       xix_dinode;        /* 800 */
    } s_spcl;
} u_spcl;

常量

用于区分这些不同类型的头和定义其他变量的常量是:

#define OSF_MAGIC    (int)60011
#define NFS_MAGIC    (int)60012    /* New File System Magic    */
#define XIX_MAGIC    (int)60013    /* Magic number for v3   */
#define BYNAME_MAGIC (int)60011    /* 2.x magic number         */
#define PACKED_MAGIC (int)60012    /* 2.x magic number for     */
                                   /* Huffman packed format    */
#define CHECKSUM     (int)84446    /* checksum magic number    */
#define TP_BSIZE     1024          /* tape block size          */
#define TP_NINDIR    (TP_BSIZE/2)  /* num of indirect pointers */
                                   /* in an inode record       */
#define FS_VOLUME    0             /* denotes a volume header  */
#define FS_END       7             /* denotes an end of backup */
#define FS_NAME_X    10            /* denotes file header      */
#define SIZSTR       16            /* string size in vol header*/
#define DUMNAME      4             /* dummy name length for    */
                                   /* FS_NAME_X                */
#define FXLEN        80            /* length of file index     */