1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
|
.TH DUMP 5
.UC 4
.SH NAME
dump, ddate \- incremental dump format
.SH SYNOPSIS
.B #include <sys/types.h>
.br
.B #include <sys/ino.h>
.br
.B #include <dumprestor.h>
.SH DESCRIPTION
Tapes used by
.I dump
and
.IR restor (1)
contain:
.nf
.IP ""
a header record
two groups of bit map records
a group of records describing directories
a group of records describing files
.fi
.PP
The format of the header record and of the first
record of each description as given in the
include file
.I <dumprestor.h>
is:
.PP
.nf
#define NTREC 10
#define MLEN 16
#define MSIZ 4096
#define TS_TAPE 1
#define TS_INODE 2
#define TS_BITS 3
#define TS_ADDR 4
#define TS_END 5
#define TS_CLRI 6
#define MAGIC (int) 60011
#define CHECKSUM (int) 84446
struct spcl {
int c_type;
time_t c_date;
time_t c_ddate;
int c_volume;
daddr_t c_tapea;
ino_t c_inumber;
int c_magic;
int c_checksum;
struct dinode c_dinode;
int c_count;
char c_addr[BSIZE];
} spcl;
struct idates {
char id_name[16];
char id_incno;
time_t id_ddate;
};
#define DUMPOUTFMT "%-16s %c %s" /* for printf */
/* name, incno, ctime(date) */
#define DUMPINFMT "%16s %c %[^\en]\en" /* inverse for scanf */
.fi
.PP
.I NTREC
is the number of 1024 byte records in a physical
tape block.
.I MLEN
is the number of bits in a bit map word.
.I MSIZ
is the number of bit map words.
.PP
The
.I TS_
entries are used in the
.I c_type
field to indicate what sort of header
this is.
The types and their meanings are as follows:
.TP 13
TS_TAPE
Tape volume label
.PD 0
.TP
TS_INODE
A file or directory follows.
The
.I c_dinode
field is a copy of the disk inode and contains
bits telling what sort of file this is.
.TP
TS_BITS
A bit map follows.
This bit map has a one bit
for each inode that was dumped.
.TP
TS_ADDR
A subrecord of a file description.
See
.I c_addr
below.
.TP
TS_END
End of tape record.
.TP
TS_CLRI
A bit map follows.
This bit map contains a zero bit for
all inodes that were empty on the file system when dumped.
.TP
MAGIC
All header records have this number in
.I c_magic.
.TP
CHECKSUM
Header records checksum to this value.
.PD
.PP
The fields of the header structure are as follows:
.TP 13
c_type
The type of the header.
.PD 0
.TP
c_date
The date the dump was taken.
.TP
c_ddate
The date the file system was dumped from.
.TP
c_volume
The current volume number of the dump.
.TP
c_tapea
The current number of this (1024-byte) record.
.TP
c_inumber
The number of the inode being dumped if this
is of type
.I TS_INODE.
.TP
c_magic
This contains the value
.I MAGIC
above, truncated as needed.
.TP
c_checksum
This contains whatever value is needed to
make the record sum to
.I CHECKSUM.
.TP
c_dinode
This is a copy of the inode as it appears on the
file system; see
.IR filsys (5).
.TP
c_count
The count of characters in
.I c_addr.
.TP
c_addr
An array of characters describing the blocks of the
dumped file.
A character is zero if the block associated with that character was not
present on the file system, otherwise the character is non-zero.
If the block was not present on the file system, no block was dumped;
the block will be restored as a hole in the file.
If there is not sufficient space in this record to describe
all of the blocks in a file,
.I TS_ADDR
records will be scattered through the file, each one
picking up where the last left off.
.PD
.PP
Each volume except the last ends with a tapemark (read as an end
of file).
The last volume ends with a
.I TS_END
record and then the tapemark.
.PP
The structure
.I idates
describes an entry of the file
.I /etc/ddate
where dump history is kept.
The fields of the structure are:
.TP \w'TS_INODE\ 'u
id_name
The dumped filesystem is
.RI `/dev/ id_nam'.
.PD 0
.TP
id_incno
The level number of the dump tape;
see
.IR dump (1).
.TP
id_ddate
The date of the incremental dump in system format
see
.IR types (5).
.PD
.SH FILES
/etc/ddate
.SH "SEE ALSO"
dump(8), dumpdir(8), restor(8), filsys(5), types(5)
|