source: MondoRescue/trunk/mondo/mondo/mondo.dox@ 687

Last change on this file since 687 was 30, checked in by bcornec, 19 years ago

Id property added on files to allow for better conf. management

  • Property svn:keywords set to Id
File size: 11.3 KB
Line 
1// -*- C -*- mondo.dox
2// This file contains documentation definitions for stuff that just didn't fit anywhere else.
3
4
5
6/****************************** BEGIN MAIN PAGE ****************************/
7/**
8 * @mainpage
9 *
10 * Welcome to the Mondo Rescue API manual!
11 *
12 * Mondo Rescue is a backup/disaster recovery program and library
13 * intended to allow backups to be restored completely and simply
14 * even if the hard drive has been wiped. No data loss has been
15 * reported since mid-2000.
16 *
17 * <b>If you are not a Mondo developer, don't want to become one,
18 * don't want to write an add-on, and don't want to know about Mondo's
19 * internals for some other reason, <i>this page is not for you</i></b>.
20 * This is not a user manual; it is a developer's manual. This is our
21 * internal documentation. It's intended to be complete, not easily
22 * comprehensible by non-programmers. You have been warned.
23 *
24 * Currently all functions except those involved in prepping hard
25 * drives and restoring data have been placed into a shared library
26 * which can be used in add-ons to Mondo (for example, a new interface
27 * or network transparency). Generally you'll want to call
28 * backup_data() or verify_data() to do the work for you, but if you
29 * want to do the steps yourself, that's OK too. See the modules
30 * called "Mid-Level Backup Functions" and "Low-Level Backup
31 * Functions" for details.
32 *
33 * If you want to write a facelift for mondorestore, please note that
34 * the restore/prep functions are not in the shared library. If you
35 * wish to use those, please either:-
36 * - copy the code or file from the mondo/mondorestore directory to
37 * where you want to put your add-on, or
38 * - pester us at <mondo-devel@lists.sourceforge.net> (please
39 * subscribe first; see the Mondo "support" page for info on how) to
40 * add it to libmondo. This is on the TODO list but it's not a high
41 * priority, so if it's important please tell us. Hey, any work on
42 * something useful for the project is good work for us :-)
43 *
44 * There are two versions of the libmondo library. One is a generic
45 * version (you must link in Newt to use it, though it doesn't
46 * actually @e use newt) which requires a separate GUI library; the
47 * other is an X library rather tightly coupled to XMondo. See the
48 * source code in mondo/xmondo/*.cpp for more details. Currently only
49 * a Newt add-on GUI library is available for the "generic" library;
50 * if you want another please copy newt-specific.c and change the
51 * function bodies. (If you think your work might be useful to us,
52 * please email the list). To link with the generic Mondo library, add
53 * these flags to your link command: \n
54 * @code -I/usr/include/mondo -I/usr/local/include/mondo -lmondo -lmondo-newt @endcode \n
55 * and #include \<my-stuff.h\>, \<mondostructures.h\>, and any other
56 * Mondo header files you are using. A @c mondo-config script to
57 * generate the flags automatically may be coming; watch this space.
58 *
59 * To use the X library, compile with the flags as above but replace
60 * @c -lmondo @c -lmondo-net with @c -lXmondo. And <b>read the XMondo
61 * source code first</b>! Your problem may have already been solved.
62 *
63 * Mondo currently runs on i386 Linux and FreeBSD using a rather ugly
64 * mess of #ifdefs. Ports to other OSs may come someday, probably only
65 * if someone writes them.
66 *
67 * Mondo uses Mindi to create the boot disks. Mindi is rather system
68 * dependent; currently there are separate versions for each port (two),
69 * but eventually the two may be combined. The current version of Mindi
70 * is a shell script, but the next generation (goes live Nov. 1) is in
71 * Perl (and runs about 4 times faster). <b>If you are experiencing
72 * bugs related to the mountlist, or anything that happens before you
73 * get the mondorestore Newt screen, you should look at Mindi; Mondo
74 * does not control the boot process</b>.
75 *
76 * The s_bkpinfo structure (commonly referred to as "the bkpinfo") is
77 * the heart of Mondo. If you're new to the code, you really should read
78 * its documentation first. Trust us, that will help your understanding
79 * of the rest of it immensely. The functions in libmondo-archive.c are the
80 * most important; tackle those first. If you're writing an add-on, you may
81 * be able to get away with just those and the ones in newt-specific.c.
82 *
83 * Thank you for using Mondo Rescue, and good luck in your development!
84 *
85 * @section Glossary
86 * Here is a list of terms used throughout the documetation and what they mean.
87 * - @b afioball (or @b tarball): The @c afio archive for a particular fileset.
88 * Sometimes "tarball" is used, even though the archives were not made by @c
89 * tar. @c afio provides many benefits, including the ability to compress
90 * files individually so a bad block doesn't ruin the whole archive.
91 * - @b biggiefile (or @b bigfile): A file larger than 32MB. These are archived
92 * separately from the regular files; they are split into
93 * <tt>bkpinfo->optimal_set_size</tt>-sized chunks and compressed. The file's
94 * stat() information (name, modification date, mode, owner, group, etc.), as
95 * well as its checksum, is stored in the "zeroth" slice. This allows us to
96 * split large files over multiple CDs, without resorting to things like the
97 * "cutstream" method practiced by mkCDrec.
98 * - @b bkpinfo: The backup information structure (s_bkpinfo). This is
99 * discussed above, and also in the structure's documentation.
100 * - @b filelist (or @b fileset): The small "chunks" that the normal-sized
101 * files are divided up into. Each one is archived separately by afio, so we
102 * can provide a better progress meter, faster selective restore, and better
103 * reliability if an archive is corrupted. Filesets are usually about 8MB,
104 * but this is controlled by @c bkpinfo->optimal_set_size.
105 * - @b imagedev: A device that is backed up like a biggiefile instead of as
106 * individual files. Its size cannot be changed at restore-time. This is
107 * most useful for NTFS partitions.
108 * - @b isodir (When backing up to ISOs/NFS): The directory where the ISO
109 * images are to be stored (could be a remote NFS server).
110 * - @b mountlist: The list of all partitions on all hard drives. This is
111 * created so Mondo knows exactly how to recreate the partitions at
112 * restore-time.
113 * - @b raidlist: The list of RAID devices, along with additional information,
114 * in the mountlist. This is used to create /etc/raidtab.
115 * - @b scratchdir: The directory where the ISO image tree is created.
116 * This must be in a location with at least enough space for a complete
117 * CD.
118 * - @b stream: A tape device, CD stream, or "udev" (allows one to use
119 * stream format without an actual stream device). We give up speed and
120 * flexibility (no selective restores without Mondo present) in exchange
121 * for compatibility with some very common backup hardware.
122 * - @b tmpdir: The temporary directory where just-created files are kept
123 * while waiting to put them in the scratchdir (possibly creating a CD in
124 * the mean time).
125 */
126/***************************** END OF MAIN PAGE ****************************/
127
128
129
130
131
132/************************** BEGIN GROUP DEFINITIONS *************************
133 * The group hierarchy looks something like this:
134 * - Backup functions - mostly libmondo-archive.c
135 * - backup_data()
136 * - Mid-level general backup functions
137 * - Low-level general backup functions
138 * - Filelist creation functions
139 * - Verify functions
140 * - verify_data()
141 * - Low-level verify functions - libmondo-verify.c
142 * - Mountlist functions
143 * - libmondo-mountlist.c
144 * - RAID functions
145 * - libmondo-raid.c
146 * - Device functions
147 * - libmondo-devices.c
148 * - Tape functions
149 * - libmondo-stream.c
150 * - Utility functions
151 * - String functions
152 * - libmondo-string.c
153 * - File functions
154 * - libmondo-files.c
155 * - FIFO functions
156 * - libmondo-fifo.c
157 * - libmondo-tools.c
158 * - GUI functions
159 * - newt-specific.c
160 * - Global variables
161 ***************************************************************************/
162/**
163 * @defgroup archiveGroup Backup Functions
164 * Functions for backing up data.
165 */
166/**
167 * @defgroup MLarchiveGroup Mid-Level Backup Functions
168 * @ingroup archiveGroup
169 * Mid-level backup functions (the ones that backup_data calls directly).
170 */
171/**
172 * @defgroup LLarchiveGroup Low-Level Backup Functions
173 * @ingroup archiveGroup
174 * Low-level backup functions (the ones that do the actual work).
175 */
176/**
177 * @defgroup verifyGroup Verification Functions
178 * Functions for verifying data while booted from the hard drive (as opposed
179 * to a "compare", which is done while booted from CD/floppy).
180 */
181/**
182 * @defgroup LLverifyGroup Low-Level Verification Functions
183 * @ingroup verifyGroup
184 * Low-level verification functions (the ones that do the actual work).
185 */
186/**
187 * @defgroup compareGroup Compare Functions
188 * Functions for comparing data while booted from CD/floppy (as opposed
189 * to a "verify", which is done while booted from the hard drive).
190 */
191/**
192 * @defgroup LLcompareGroup Low-Level Compare Functions
193 * Low-level compare functions (the ones that do the actual work).
194 * @ingroup compareGroup
195 */
196/**
197 * @defgroup restoreGroup Restoration Functions
198 * Functions for restoring data.
199 */
200/**
201 * @defgroup prepGroup Disk Preparation Functions
202 * Functions for prepping disks (partitioning, formatting, mounting, slicing, dicing, etc.)
203 * @ingroup restoreGroup
204 */
205/**
206 * @defgroup restoreGuiGroup GUI Restore Functions
207 * Functions for editing mountlists, filelists, etc.
208 * @ingroup restoreGroup
209 */
210/**
211 * @defgroup LLrestoreGroup Low-Level Restoration Functions
212 * Functions for individual restoration of filesets/biggiefiles.
213 * @ingroup restoreGroup
214 */
215/**
216 * @defgroup restoreUtilityGroup Restore Utility Functions
217 * Utility functions to help with restores.
218 * @ingroup restoreGroup
219 */
220/**
221 * @defgroup filelistGroup Filelist Creation Functions
222 * Filelist preparation/chopping/other tasks done during backup.
223 */
224/**
225 * @defgroup mountlistGroup Mountlist Functions
226 * Functions for loading, manipulating, and saving mountlists (but not doing
227 * any prep work with them).
228 */
229/**
230 * @defgroup raidGroup Software RAID Functions
231 * Functions for dealing with software RAID (md devices on Linux; vinum
232 * on FreeBSD).
233 */
234/**
235 * @defgroup deviceGroup Device Manipulation Functions
236 * Functions for dealing with backup devices.
237 */
238/**
239 * @defgroup streamGroup Stream Functions
240 * @ingroup deviceGroup
241 * Functions for reading from and writing to tapes and other data streams.
242 */
243/**
244 * @defgroup utilityGroup Utility Functions
245 * General utility functions for doing small, specific, useful tasks.
246 */
247/**
248 * @defgroup stringGroup String Functions
249 * @ingroup utilityGroup
250 * Functions for working with strings.
251 */
252/**
253 * @defgroup fileGroup File Functions
254 * @ingroup utilityGroup
255 * Functions for working with files.
256 */
257/**
258 * @defgroup fifoGroup FIFO Functions
259 * @ingroup utilityGroup
260 * Functions for dealing with the buffering of data as it is read from and
261 * written to tape.
262 */
263/**
264 * @defgroup guiGroup GUI Functions
265 * GUI functions - things like progress indicators, dialog boxes, etc.
266 */
267/**
268 * @defgroup cliGroup Command-Line Interface Functions
269 * Functions for parsing command lines passed to mondoarchive. <b>Not in libmondo yet.</b>
270 */
271/**
272 * @defgroup globalGroup Global Variables
273 * Mondo's global variables.
274 */
275/*************************** END GROUP DEFINITIONS *************************/
Note: See TracBrowser for help on using the repository browser.