summaryrefslogtreecommitdiff
path: root/genbackupdata.1
blob: 342fbf5f91852be25820bb90b263386219c3edc1 (plain)
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
.TH GENBACKUPDATA 1
.SH NAME
genbackupdata \- generate backup test data
.SH SYNOPSIS
.B genbackupdata
.RI [ options "] " directory
.SH DESCRIPTION
.B genbackupdata
generates test data sets for performance testing of backup software.
It creates a directory tree filled with files of different sizes.
The total size and the distribution of sizes between small and big are
configurable.
The program can also modify an existing directory tree by creating new 
files, and deleting, renaming, or modifying existing files. 
This can be used to generate test data for successive generations of backups.
.PP
The program is deterministic: with a given set of parameters (and a given
pre-existing directory tree), it always creates the same output.
This way, it is possible to reproduce backup tests exactly, without having
to distribute the potentially very large test sets.
.PP
The data set consists of plain files and directories.
Files are either small text files or big binary files.
Text files contain the "lorem ipsum" stanza,
binary files contain randomly generated byte streams.
The percentage of file data that is small text or big binary files can be set,
as can the sizes of the respective file types.
.PP
Files and directories are named "fileXXXX" or "dirXXXX", where "XXXX"
is a successive integer, separate successions for files and directories.
There is an upper limit to how many files a directory may contain.
After the file limit is reached, a new sub-directory is created.
The first set of files go into the root directory of the test set.
.PP
You have to give one of the options
.BR \-\-create ,
.BR \-\-delete ,
.BR \-\-rename ,
or
.BR \-\-modify
for the program to do anything.
You can, however, give more than one of them, if
.I DIR
already exists.
(Giving the same option more than once means that only the last instance
is counted.)
.RI ( DIR )
is created if it doesn't exist already.
.SH OPTIONS
When giving file sizes
.RI ( SIZE 
below), 
the default unit is a byte.
The suffixes "K", "M", "G", and "T" (upper or lower) can be used to refer to
kibi-, mebi-, gibi-, and tebibytes, respectively
(2 to the power of 10, 20, 30, or 40).
.PP
When giving file counts
.RI ( COUNT 
below), the same suffixes may be used, but then they will
refer to kilo-, mega-, giga-, and tera- (10 to the power of 3, 6, 9, or 12).
.PP
When referring to a size or file count, when it makes sense to give a relative
size, the suffix "%" may be used to indicate percentage.
.PP
Numbers may be integer or floating point (using the locale's floating point
syntax).
.TP
\fB\-\-seed\fR=\fISEED\fR
Set the (integer) seed to the psuedo-random number generator.
Default: 0.
.TP
\fB\-\-max\-count\fR=\fICOUNT\fR
Set the maximum number of files in a directory.
Default: 256.
.TP
\fB\-p\fR, \fB\-\-percentage\-text\-data\fR=\fIPERCENTAGE\fR
Set the percentage of file data (not file count) in newly created files
(not modified files) allocated to small text files.
Default: 10%.
.TP
\fB\-t\fR, \fB\-\-text\-file\-size\fR=\fISIZE\fR
Set the size of text files.
Cannot be a relative size.
Default: 10 KiB.
.TP
\fB-b\fR, \fB\-\-binary\-file\-size\fR=\fISIZE\fR
Set the size of binary files.
Cannot be a relative size.
Default: 10 MiB.
.TP
\fB\-c\fR, \fB\-\-create\fR=\fISIZE\fR
Create 
.I SIZE
amount of new files.
A relative amount refers to the size of the pre-existing files.
.I DIR
is created if it doesn't exist already.
Default: 0.
.TP
\fB\-d\fR, \fB\-\-delete\fR=\fICOUNT\fR
Remove 
.I COUNT
pre-existing files.
A relative amount refers to the number of pre-existing files.
.I DIR
must exist already.
Default: 0.
.TP
\fB\-r\fR, \fB\-\-rename\fR=\fICOUNT\fR
Rename
.I COUNT
pre-existing files to new names, without changing the contents.
A relative amount refers to the number of pre-existing files.
.I DIR
must exist already.
Default: 0.
.TP
\fB\-l\fR, \fB\-\-link\fR=\fICOUNT\fR
Create 
.I COUNT
links to pre-existing files.
.TP
\fB\-m\fR, \fB\-\-modify\fR=\fISIZE\fR
Modify pre-existing files by appending to them.
The new data is divided into text and binary data as for 
.BR \-\-create ,
but no regard is given as to whether the file that receives the new data is
a text or binary file.
Files are picked by random among the pre-existing ones, and the size is
increased according to the percentage set by
.BR \-\-modify\-percentage .
A relative 
.I SIZE
refers to the total size of pre-existing files.
.I DIR
must exist already.
Default: 0.
.TP
\fB\-\-modify\-percentage\fR=\fIPERCENT\fR
Set the number of percent each file is grown when using
.BR \-\-modify .
Note that zero size files are not grown (X% of 0 is always 0).
Default: 10%.
.SH EXAMPLES
Create data for the first generation of a backup:
.PP
.RS
genbackupdata \-\-create=10G testdir
.RE
.PP
Modify an existing set of backup data to create a new generation:
.PP
.RS
genbackupdata \-c 5% \-d 2% \-m 5% \-r 0.5% testdir
.RE
.PP
The above command can be run for each new generation.