[1] | 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 *************************/
|
---|