[354] | 1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
---|
| 2 |
|
---|
| 3 | <!--Converted with LaTeX2HTML 99.2beta8 (1.43)
|
---|
| 4 | original version by: Nikos Drakos, CBLU, University of Leeds
|
---|
| 5 | * revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
---|
| 6 | * with significant contributions from:
|
---|
| 7 | Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
---|
| 8 | <HTML>
|
---|
| 9 | <HEAD>
|
---|
| 10 | <TITLE>Concept paper for Monitas</TITLE>
|
---|
| 11 | <META NAME="description" CONTENT="Concept paper for Monitas">
|
---|
| 12 | <META NAME="keywords" CONTENT="MonitasConcepts">
|
---|
| 13 | <META NAME="resource-type" CONTENT="document">
|
---|
| 14 | <META NAME="distribution" CONTENT="global">
|
---|
| 15 |
|
---|
| 16 | <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
---|
| 17 | <META NAME="Generator" CONTENT="LaTeX2HTML v99.2beta8">
|
---|
| 18 | <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
---|
| 19 |
|
---|
| 20 | <LINK REL="STYLESHEET" HREF="MonitasConcepts.css">
|
---|
| 21 |
|
---|
| 22 | </HEAD>
|
---|
| 23 |
|
---|
| 24 | <BODY >
|
---|
| 25 |
|
---|
| 26 | <P>
|
---|
| 27 |
|
---|
| 28 | <P>
|
---|
| 29 |
|
---|
| 30 | <P>
|
---|
| 31 |
|
---|
| 32 | <P>
|
---|
| 33 | <H1 ALIGN="CENTER">Concept paper for Monitas</H1>
|
---|
| 34 | <P ALIGN="CENTER"><STRONG>from Stefan Hübner
|
---|
| 35 | <BR>
|
---|
| 36 | and the Monitas Team<A NAME="tex2html1"
|
---|
| 37 | HREF="#foot33"><SUP>1</SUP></A></STRONG></P>
|
---|
| 38 | <P ALIGN="CENTER"><STRONG>$Revision: 1.3 $, 2002-08-17
|
---|
| 39 | </STRONG></P>
|
---|
| 40 |
|
---|
| 41 | <H3>Abstract:</H3>
|
---|
| 42 | <DIV>
|
---|
| 43 | This is a proposal how to design Monitas before actually start the
|
---|
| 44 | coding. Collecting the ideas here will enforce to think about the
|
---|
| 45 | structure before it is realized in code that cannot be modified later.
|
---|
| 46 | With a little bit of luck this allows us to enhance Monitas' functionality
|
---|
| 47 | quite easy in the future. And maybe we get a good user manual as side
|
---|
| 48 | effect for free.
|
---|
| 49 |
|
---|
| 50 | <P>
|
---|
| 51 | Revision 1.x of this <I>concept</I> paper is not describing the final
|
---|
| 52 | version of the <I>software</I> that will be realized. It is loosely
|
---|
| 53 | based on the existing alpha version 0.1 of Monitas and shall be a
|
---|
| 54 | step by step approach towards Monitas version 0.99. If improvements
|
---|
| 55 | to Monitas v0.x and this document will be in sync, we will have a
|
---|
| 56 | good documentation of the internal system structure for Monitas v1.0
|
---|
| 57 | (and then this will be called Revision 2.0 of this document). So in
|
---|
| 58 | general the major revision number of the concept paper is 1 higher
|
---|
| 59 | than of the software, the minor revision numbers are both increasing
|
---|
| 60 | but there is no connection between the values.
|
---|
| 61 | </DIV>
|
---|
| 62 | <P>
|
---|
| 63 | <BR>
|
---|
| 64 |
|
---|
| 65 | <H2><A NAME="SECTION00010000000000000000">
|
---|
| 66 | Contents</A>
|
---|
| 67 | </H2>
|
---|
| 68 | <!--Table of Contents-->
|
---|
| 69 |
|
---|
| 70 | <UL>
|
---|
| 71 | <LI><A NAME="tex2html60"
|
---|
| 72 | HREF="MonitasConcepts.html">Contents</A>
|
---|
| 73 | <LI><A NAME="tex2html61"
|
---|
| 74 | HREF="MonitasConcepts.html#SECTION00020000000000000000">1 Basics</A>
|
---|
| 75 | <LI><A NAME="tex2html62"
|
---|
| 76 | HREF="MonitasConcepts.html#SECTION00030000000000000000">2 Requirements for Monitas</A>
|
---|
| 77 | <UL>
|
---|
| 78 | <LI><A NAME="tex2html63"
|
---|
| 79 | HREF="MonitasConcepts.html#SECTION00031000000000000000">2.1 Start a backup from client</A>
|
---|
| 80 | <LI><A NAME="tex2html64"
|
---|
| 81 | HREF="MonitasConcepts.html#SECTION00032000000000000000">2.2 Start a backup from the server</A>
|
---|
| 82 | <LI><A NAME="tex2html65"
|
---|
| 83 | HREF="MonitasConcepts.html#SECTION00033000000000000000">2.3 Restore a backup from client</A>
|
---|
| 84 | <LI><A NAME="tex2html66"
|
---|
| 85 | HREF="MonitasConcepts.html#SECTION00034000000000000000">2.4 Restore a backup from the server</A>
|
---|
| 86 | <LI><A NAME="tex2html67"
|
---|
| 87 | HREF="MonitasConcepts.html#SECTION00035000000000000000">2.5 Compare backup from client</A>
|
---|
| 88 | <LI><A NAME="tex2html68"
|
---|
| 89 | HREF="MonitasConcepts.html#SECTION00036000000000000000">2.6 Compare from the server</A>
|
---|
| 90 | </UL>
|
---|
| 91 | <LI><A NAME="tex2html69"
|
---|
| 92 | HREF="MonitasConcepts.html#SECTION00040000000000000000">3 System structure</A>
|
---|
| 93 | <LI><A NAME="tex2html70"
|
---|
| 94 | HREF="MonitasConcepts.html#SECTION00050000000000000000">4 Message Flows</A>
|
---|
| 95 | <UL>
|
---|
| 96 | <LI><A NAME="tex2html71"
|
---|
| 97 | HREF="MonitasConcepts.html#SECTION00051000000000000000">4.1 Flows between Server and Client (<I>IFcs</I> and <I>IFsc</I>)</A>
|
---|
| 98 | <LI><A NAME="tex2html72"
|
---|
| 99 | HREF="MonitasConcepts.html#SECTION00052000000000000000">4.2 Message Flows between Client and (Graphical)User-Interface (<I>IFcg</I>)</A>
|
---|
| 100 | <LI><A NAME="tex2html73"
|
---|
| 101 | HREF="MonitasConcepts.html#SECTION00053000000000000000">4.3 Message Flows between Server and (Graphical)User-Interface (<I>IFsg</I>)</A>
|
---|
| 102 | <LI><A NAME="tex2html74"
|
---|
| 103 | HREF="MonitasConcepts.html#SECTION00054000000000000000">4.4 Message Flows between Server and its Child (<I>IFss</I> and <I>IFsm</I>)</A>
|
---|
| 104 | </UL>
|
---|
| 105 | <LI><A NAME="tex2html75"
|
---|
| 106 | HREF="MonitasConcepts.html#SECTION00060000000000000000">5 Interfaces</A>
|
---|
| 107 | <UL>
|
---|
| 108 | <LI><A NAME="tex2html76"
|
---|
| 109 | HREF="MonitasConcepts.html#SECTION00061000000000000000">5.1 Interface <I>Im</I> to Mondo</A>
|
---|
| 110 | <LI><A NAME="tex2html77"
|
---|
| 111 | HREF="MonitasConcepts.html#SECTION00062000000000000000">5.2 Interface <I>In</I> between Client and Server</A>
|
---|
| 112 | <LI><A NAME="tex2html78"
|
---|
| 113 | HREF="MonitasConcepts.html#SECTION00063000000000000000">5.3 Interface <I>Ipc</I>, Client's pipe to the GUI</A>
|
---|
| 114 | <LI><A NAME="tex2html79"
|
---|
| 115 | HREF="MonitasConcepts.html#SECTION00064000000000000000">5.4 Interface <I>Ips</I>, Server's pipe to the GUI</A>
|
---|
| 116 | <LI><A NAME="tex2html80"
|
---|
| 117 | HREF="MonitasConcepts.html#SECTION00065000000000000000">5.5 Interface <I>Is</I>, IPC of server instances</A>
|
---|
| 118 | </UL>
|
---|
| 119 | <LI><A NAME="tex2html81"
|
---|
| 120 | HREF="MonitasConcepts.html#SECTION00070000000000000000">6 Commands at the GUI interfaces</A>
|
---|
| 121 | <UL>
|
---|
| 122 | <LI><A NAME="tex2html82"
|
---|
| 123 | HREF="MonitasConcepts.html#SECTION00071000000000000000">6.1 Message Structure</A>
|
---|
| 124 | <LI><A NAME="tex2html83"
|
---|
| 125 | HREF="MonitasConcepts.html#SECTION00072000000000000000">6.2 Implementation Detail</A>
|
---|
| 126 | <LI><A NAME="tex2html84"
|
---|
| 127 | HREF="MonitasConcepts.html#SECTION00073000000000000000">6.3 Defined Commands</A>
|
---|
| 128 | </UL>
|
---|
| 129 | <LI><A NAME="tex2html85"
|
---|
| 130 | HREF="MonitasConcepts.html#SECTION00080000000000000000">7 Open Issues</A>
|
---|
| 131 | <UL>
|
---|
| 132 | <LI><A NAME="tex2html86"
|
---|
| 133 | HREF="MonitasConcepts.html#SECTION00081000000000000000">7.1 Possible Extensions</A>
|
---|
| 134 | </UL>
|
---|
| 135 | <LI><A NAME="tex2html87"
|
---|
| 136 | HREF="MonitasConcepts.html#SECTION00090000000000000000">About this document ...</A>
|
---|
| 137 | </UL>
|
---|
| 138 | <!--End of Table of Contents-->
|
---|
| 139 |
|
---|
| 140 | <P>
|
---|
| 141 |
|
---|
| 142 | <H1><A NAME="SECTION00020000000000000000">
|
---|
| 143 | 1 Basics</A>
|
---|
| 144 | </H1>
|
---|
| 145 |
|
---|
| 146 | <P>
|
---|
| 147 | Monitas is an extension to mondo/mindi to deal with remote backups
|
---|
| 148 | between TCP/IP connected PCs. Monitas consists of two logical parts:
|
---|
| 149 | a <I>"client"</I> that resides on the PC where the
|
---|
| 150 | files (to backup/restore) are and a <I>"server"</I>
|
---|
| 151 | on another (or the same) PC where the backup is stored.
|
---|
| 152 |
|
---|
| 153 | <P>
|
---|
| 154 | The backup may be written to/read from a CD, to a file on a hard-disk
|
---|
| 155 | (or later to a revision controlled database).
|
---|
| 156 |
|
---|
| 157 | <P>
|
---|
| 158 | Both together, server and client, will handle the backup and restore
|
---|
| 159 | process in the background. Each is controlled via a pipe to send commands
|
---|
| 160 | and to get status information back (error messages, progress information).
|
---|
| 161 | Though it is possible to trigger the backup/restore process with these
|
---|
| 162 | interfaces, they are mainly designed for graphical (or text based)
|
---|
| 163 | front-ends which can dock there to control the process and interact
|
---|
| 164 | with the user. These front-ends aren't described here, but the syntax
|
---|
| 165 | and semantics of the interfaces.
|
---|
| 166 |
|
---|
| 167 | <P>
|
---|
| 168 | We use a 1:<I>n</I> relation between the server and several clients
|
---|
| 169 | on different PCs. That means there exists only one central server
|
---|
| 170 | that serves all the clients out there.
|
---|
| 171 |
|
---|
| 172 | <P>
|
---|
| 173 | Even if this document distinguishes between <I>server</I> and <I>client</I>
|
---|
| 174 | and the different roles they play for the backup process, it is possible
|
---|
| 175 | that both parts use the same executable as both parts have much code
|
---|
| 176 | in common. Like <I>gzip</I>, which is compressing when executed as
|
---|
| 177 | <TT>gzip</TT> and decompressing when executed as <TT>gunzip</TT>,
|
---|
| 178 | Monitas will run as server when executed as <TT>monitas_server</TT>
|
---|
| 179 | and will run as client when started as <TT>monitas_client</TT>.
|
---|
| 180 |
|
---|
| 181 | <P>
|
---|
| 182 |
|
---|
| 183 | <H1><A NAME="SECTION00030000000000000000"></A><A NAME="sec:Requirements"></A>
|
---|
| 184 | <BR>
|
---|
| 185 | 2 Requirements for Monitas
|
---|
| 186 | </H1>
|
---|
| 187 |
|
---|
| 188 | <P>
|
---|
| 189 | This chapter contains the basic requirements for the client and the
|
---|
| 190 | server part of Monitas.
|
---|
| 191 |
|
---|
| 192 | <P>
|
---|
| 193 |
|
---|
| 194 | <H2><A NAME="SECTION00031000000000000000">
|
---|
| 195 | 2.1 Start a backup from client</A>
|
---|
| 196 | </H2>
|
---|
| 197 |
|
---|
| 198 | <P>
|
---|
| 199 | Necessary input:
|
---|
| 200 |
|
---|
| 201 | <P>
|
---|
| 202 |
|
---|
| 203 | <OL>
|
---|
| 204 | <LI>files to backup
|
---|
| 205 | </LI>
|
---|
| 206 | <LI>type of the backup (CD, ISO-file, ...)
|
---|
| 207 | </LI>
|
---|
| 208 | <LI>name of the backup (if not CD)
|
---|
| 209 | </LI>
|
---|
| 210 | <LI>compression (method, client or server-side)
|
---|
| 211 | </LI>
|
---|
| 212 | </OL>
|
---|
| 213 |
|
---|
| 214 | <P>
|
---|
| 215 |
|
---|
| 216 | <H2><A NAME="SECTION00032000000000000000">
|
---|
| 217 | 2.2 Start a backup from the server</A>
|
---|
| 218 | </H2>
|
---|
| 219 |
|
---|
| 220 | <P>
|
---|
| 221 | Necessary input:
|
---|
| 222 |
|
---|
| 223 | <P>
|
---|
| 224 |
|
---|
| 225 | <OL>
|
---|
| 226 | <LI>client to address (IP address or name)
|
---|
| 227 | </LI>
|
---|
| 228 | <LI>files to backup
|
---|
| 229 | </LI>
|
---|
| 230 | <LI>type of the backup (CD, ISO-file, ...)
|
---|
| 231 | </LI>
|
---|
| 232 | <LI>name of the backup (if not CD)
|
---|
| 233 | </LI>
|
---|
| 234 | <LI>compression (method, client or server-side)
|
---|
| 235 | </LI>
|
---|
| 236 | </OL>
|
---|
| 237 |
|
---|
| 238 | <P>
|
---|
| 239 |
|
---|
| 240 | <H2><A NAME="SECTION00033000000000000000">
|
---|
| 241 | 2.3 Restore a backup from client</A>
|
---|
| 242 | </H2>
|
---|
| 243 |
|
---|
| 244 | <P>
|
---|
| 245 | Necessary input:
|
---|
| 246 |
|
---|
| 247 | <P>
|
---|
| 248 |
|
---|
| 249 | <OL>
|
---|
| 250 | <LI>files to restore
|
---|
| 251 | </LI>
|
---|
| 252 | <LI>name/location of the backup (CD, ISO-file, ...)
|
---|
| 253 | </LI>
|
---|
| 254 | </OL>
|
---|
| 255 |
|
---|
| 256 | <P>
|
---|
| 257 |
|
---|
| 258 | <H2><A NAME="SECTION00034000000000000000">
|
---|
| 259 | 2.4 Restore a backup from the server</A>
|
---|
| 260 | </H2>
|
---|
| 261 |
|
---|
| 262 | <P>
|
---|
| 263 | Necessary input:
|
---|
| 264 |
|
---|
| 265 | <P>
|
---|
| 266 |
|
---|
| 267 | <OL>
|
---|
| 268 | <LI>client to address (IP address or name)
|
---|
| 269 | </LI>
|
---|
| 270 | <LI>files to restore
|
---|
| 271 | </LI>
|
---|
| 272 | <LI>name/location of the backup (CD, ISO-file, ...)
|
---|
| 273 | </LI>
|
---|
| 274 | </OL>
|
---|
| 275 |
|
---|
| 276 | <P>
|
---|
| 277 |
|
---|
| 278 | <H2><A NAME="SECTION00035000000000000000">
|
---|
| 279 | 2.5 Compare backup from client</A>
|
---|
| 280 | </H2>
|
---|
| 281 |
|
---|
| 282 | <P>
|
---|
| 283 | There are 2 reasons for a compares
|
---|
| 284 |
|
---|
| 285 | <P>
|
---|
| 286 | a) to guarantee the correct backup (``<I>verify</I>'')
|
---|
| 287 |
|
---|
| 288 | <P>
|
---|
| 289 | b) to find modifications of files since the last backup (``<I>compare</I>'')
|
---|
| 290 |
|
---|
| 291 | <P>
|
---|
| 292 | In case a) we must do a bit-compare between original files and their
|
---|
| 293 | (decompressed) backup, in case b) it's sufficient to generate hash
|
---|
| 294 | values of every original file and its backuped counterpart and compare
|
---|
| 295 | the hashes (less network traffic).
|
---|
| 296 |
|
---|
| 297 | <P>
|
---|
| 298 | To distinguish the different intentions, we call the comparison a)
|
---|
| 299 | <I>Verify</I> as it's normally started directly after a backup, and
|
---|
| 300 | call the case b) <I>Compare</I> as it is triggered to recognize modifications
|
---|
| 301 | (perhaps to generate an incremental backup).
|
---|
| 302 |
|
---|
| 303 | <P>
|
---|
| 304 | Necessary input:
|
---|
| 305 |
|
---|
| 306 | <P>
|
---|
| 307 |
|
---|
| 308 | <OL>
|
---|
| 309 | <LI>name of the backup
|
---|
| 310 | </LI>
|
---|
| 311 | <LI>mode of compare [a) or b)]
|
---|
| 312 | </LI>
|
---|
| 313 | <LI>files to compare [mode b) only; mode a) will always compare all
|
---|
| 314 | files in the backup]
|
---|
| 315 | </LI>
|
---|
| 316 | </OL>
|
---|
| 317 |
|
---|
| 318 | <P>
|
---|
| 319 |
|
---|
| 320 | <H2><A NAME="SECTION00036000000000000000">
|
---|
| 321 | 2.6 Compare from the server</A>
|
---|
| 322 | </H2>
|
---|
| 323 |
|
---|
| 324 | <P>
|
---|
| 325 | Necessary input:
|
---|
| 326 |
|
---|
| 327 | <P>
|
---|
| 328 |
|
---|
| 329 | <OL>
|
---|
| 330 | <LI>client to address (IP address or name)
|
---|
| 331 | </LI>
|
---|
| 332 | <LI>name of the backup
|
---|
| 333 | </LI>
|
---|
| 334 | <LI>mode of compare [a) or b), the modes were described in previous
|
---|
| 335 | sub-chapter]
|
---|
| 336 | </LI>
|
---|
| 337 | <LI>files to compare [mode b) only; mode a) always compares all files
|
---|
| 338 | in the backup]
|
---|
| 339 | </LI>
|
---|
| 340 | </OL>
|
---|
| 341 |
|
---|
| 342 | <P>
|
---|
| 343 |
|
---|
| 344 | <H1><A NAME="SECTION00040000000000000000"></A><A NAME="sec:SystemStructure"></A>
|
---|
| 345 | <BR>
|
---|
| 346 | 3 System structure
|
---|
| 347 | </H1>
|
---|
| 348 |
|
---|
| 349 | <P>
|
---|
| 350 | Figure <A HREF="MonitasConcepts.html#fig:SystemStructure">3.1</A> gives an overview about the general
|
---|
| 351 | structure of Monitas. Monitas' functionality is mainly split into
|
---|
| 352 | 2 independent parts: a <I>client</I> component on the PC where files
|
---|
| 353 | are backuped or restored, and a <I>server</I> component to write the
|
---|
| 354 | backup on an external medium or read previous backups from an external
|
---|
| 355 | medium.
|
---|
| 356 |
|
---|
| 357 | <P>
|
---|
| 358 | Both parts base on mondo/mindi for accessing files, doing (de)compression,
|
---|
| 359 | creating ISO-files, writing them to CD/DVD, ...
|
---|
| 360 |
|
---|
| 361 | <P>
|
---|
| 362 |
|
---|
| 363 | <P></P>
|
---|
| 364 | <DIV ALIGN="CENTER"><A NAME="fig:SystemStructure"></A><A NAME="429"></A>
|
---|
| 365 | <TABLE>
|
---|
| 366 | <CAPTION ALIGN="BOTTOM"><STRONG>Figure 3.1:</STRONG>
|
---|
| 367 | System structure</CAPTION>
|
---|
| 368 | <TR><TD>
|
---|
| 369 | <DIV ALIGN="CENTER"><!-- MATH
|
---|
| 370 | $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/systemoverview.eps}}$
|
---|
| 371 | -->
|
---|
| 372 | <IMG
|
---|
| 373 | WIDTH="444" HEIGHT="315" ALIGN="BOTTOM" BORDER="0"
|
---|
| 374 | SRC="img1.png"
|
---|
| 375 | ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/systemoverview.eps}}"> </DIV>
|
---|
| 376 | <P>
|
---|
| 377 | <DIV ALIGN="CENTER"></DIV>
|
---|
| 378 |
|
---|
| 379 | <P></TD></TR>
|
---|
| 380 | </TABLE>
|
---|
| 381 | </DIV><P></P>
|
---|
| 382 |
|
---|
| 383 | <P>
|
---|
| 384 | <BR>
|
---|
| 385 | <BR>
|
---|
| 386 | At startup, a client connects to the server process to establish the
|
---|
| 387 | connection: The client uses a predefined (``well known'') port
|
---|
| 388 | where the server is listening. When receiving a message at this port
|
---|
| 389 | the server duplicates itself by using the system call <TT>fork()</TT>
|
---|
| 390 | or <TT>clone()</TT>. The child process will serve the connecting client
|
---|
| 391 | on a new allocated port and the parent process will continue waiting
|
---|
| 392 | for further clients.
|
---|
| 393 |
|
---|
| 394 | <P>
|
---|
| 395 | By that mechanism we need only one predefined port number and only
|
---|
| 396 | on the server PC. Details in the next chapter.
|
---|
| 397 |
|
---|
| 398 | <P>
|
---|
| 399 |
|
---|
| 400 | <H1><A NAME="SECTION00050000000000000000">
|
---|
| 401 | 4 Message Flows</A>
|
---|
| 402 | </H1>
|
---|
| 403 |
|
---|
| 404 | <P>
|
---|
| 405 | This chapter describes the information flow between Monitas' structural
|
---|
| 406 | parts. The flows are designed to fulfill the requirements of chapter <A HREF="MonitasConcepts.html#sec:Requirements">2</A>.
|
---|
| 407 |
|
---|
| 408 | <P>
|
---|
| 409 |
|
---|
| 410 | <H2><A NAME="SECTION00051000000000000000">
|
---|
| 411 | 4.1 Flows between Server and Client (<I>IFcs</I> and <I>IFsc</I>)</A>
|
---|
| 412 | </H2>
|
---|
| 413 |
|
---|
| 414 | <P>
|
---|
| 415 |
|
---|
| 416 | <H3><A NAME="SECTION00051100000000000000">
|
---|
| 417 | 4.1.1 Connection Establishment</A>
|
---|
| 418 | </H3>
|
---|
| 419 |
|
---|
| 420 | <P>
|
---|
| 421 | Before any backup/restore can start, <I>client</I> and <I>server</I>
|
---|
| 422 | must introduce each other. This message flow between (each) client
|
---|
| 423 | process and the server (parent) process only takes place when a client
|
---|
| 424 | process is started. The client calls the server to tell him "Here
|
---|
| 425 | am I" whereupon the server is doubling itself via the <TT>fork()</TT>
|
---|
| 426 | system call. The new created child of the server process will serve
|
---|
| 427 | the new connected client from now on, while the parent process of
|
---|
| 428 | the server continues waiting for other clients to connect. The connecting
|
---|
| 429 | procedure is shown in Figure <A HREF="MonitasConcepts.html#fig:ClientConnect">4.1</A>.
|
---|
| 430 |
|
---|
| 431 | <P>
|
---|
| 432 |
|
---|
| 433 | <P></P>
|
---|
| 434 | <DIV ALIGN="CENTER"><A NAME="fig:ClientConnect"></A><A NAME="432"></A>
|
---|
| 435 | <TABLE>
|
---|
| 436 | <CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.1:</STRONG>
|
---|
| 437 | A client connects to the server process</CAPTION>
|
---|
| 438 | <TR><TD>
|
---|
| 439 | <DIV ALIGN="CENTER"><!-- MATH
|
---|
| 440 | $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/connect_client.eps}}$
|
---|
| 441 | -->
|
---|
| 442 | <IMG
|
---|
| 443 | WIDTH="437" HEIGHT="480" ALIGN="BOTTOM" BORDER="0"
|
---|
| 444 | SRC="img2.png"
|
---|
| 445 | ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/connect_client.eps}}"> </DIV>
|
---|
| 446 | <P>
|
---|
| 447 | <DIV ALIGN="CENTER"></DIV>
|
---|
| 448 |
|
---|
| 449 | <P></TD></TR>
|
---|
| 450 | </TABLE>
|
---|
| 451 | </DIV><P></P>
|
---|
| 452 |
|
---|
| 453 | <P>
|
---|
| 454 |
|
---|
| 455 | <H3><A NAME="SECTION00051200000000000000">
|
---|
| 456 | 4.1.2 Backup and Restore Process</A>
|
---|
| 457 | </H3>
|
---|
| 458 |
|
---|
| 459 | <P>
|
---|
| 460 | The backup and restore procedures are handled between the client and
|
---|
| 461 | its corresponding child of the server process. Both, backup and restore
|
---|
| 462 | may be triggered from server or from client side. The message flow
|
---|
| 463 | between server and client for the backup process is shown in Figure <A HREF="MonitasConcepts.html#fig:BackupClientServer">4.2</A>.
|
---|
| 464 |
|
---|
| 465 | <P>
|
---|
| 466 |
|
---|
| 467 | <P></P>
|
---|
| 468 | <DIV ALIGN="CENTER"><A NAME="fig:BackupClientServer"></A><A NAME="434"></A>
|
---|
| 469 | <TABLE>
|
---|
| 470 | <CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.2:</STRONG>
|
---|
| 471 | Message flow for Backup</CAPTION>
|
---|
| 472 | <TR><TD>
|
---|
| 473 | <DIV ALIGN="CENTER"><!-- MATH
|
---|
| 474 | $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/backup_client_server.eps}}$
|
---|
| 475 | -->
|
---|
| 476 | <IMG
|
---|
| 477 | WIDTH="434" HEIGHT="608" ALIGN="BOTTOM" BORDER="0"
|
---|
| 478 | SRC="img3.png"
|
---|
| 479 | ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/backup_client_server.eps}}"> </DIV>
|
---|
| 480 | <P>
|
---|
| 481 | <DIV ALIGN="CENTER"></DIV>
|
---|
| 482 |
|
---|
| 483 | <P></TD></TR>
|
---|
| 484 | </TABLE>
|
---|
| 485 | </DIV><P></P>
|
---|
| 486 |
|
---|
| 487 | <P>
|
---|
| 488 | The restore procedure shown in Figure <A HREF="MonitasConcepts.html#fig:RestoreClientServer">4.3</A>
|
---|
| 489 | is very similar. It may be triggered either from server or from client
|
---|
| 490 | side, too.
|
---|
| 491 |
|
---|
| 492 | <P>
|
---|
| 493 |
|
---|
| 494 | <P></P>
|
---|
| 495 | <DIV ALIGN="CENTER"><A NAME="fig:RestoreClientServer"></A><A NAME="436"></A>
|
---|
| 496 | <TABLE>
|
---|
| 497 | <CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.3:</STRONG>
|
---|
| 498 | Message flow for Restore</CAPTION>
|
---|
| 499 | <TR><TD>
|
---|
| 500 | <DIV ALIGN="CENTER"><!-- MATH
|
---|
| 501 | $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/restore_client_server.eps}}$
|
---|
| 502 | -->
|
---|
| 503 | <IMG
|
---|
| 504 | WIDTH="433" HEIGHT="657" ALIGN="BOTTOM" BORDER="0"
|
---|
| 505 | SRC="img4.png"
|
---|
| 506 | ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/restore_client_server.eps}}"> </DIV>
|
---|
| 507 | <P>
|
---|
| 508 | <DIV ALIGN="CENTER"></DIV>
|
---|
| 509 |
|
---|
| 510 | <P></TD></TR>
|
---|
| 511 | </TABLE>
|
---|
| 512 | </DIV><P></P>
|
---|
| 513 |
|
---|
| 514 | <P>
|
---|
| 515 |
|
---|
| 516 | <H3><A NAME="SECTION00051300000000000000">
|
---|
| 517 | 4.1.3 Connection Termination</A>
|
---|
| 518 | </H3>
|
---|
| 519 |
|
---|
| 520 | <P>
|
---|
| 521 | When a client has done its job or some errors occurred (or maybe the
|
---|
| 522 | server wants to stop running or ...) the connection can be shutdown
|
---|
| 523 | in the way that Figure <A HREF="MonitasConcepts.html#fig:DisconnectServerClient">4.4</A> shows.
|
---|
| 524 |
|
---|
| 525 | <P>
|
---|
| 526 |
|
---|
| 527 | <P></P>
|
---|
| 528 | <DIV ALIGN="CENTER"><A NAME="fig:DisconnectServerClient"></A><A NAME="438"></A>
|
---|
| 529 | <TABLE>
|
---|
| 530 | <CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.4:</STRONG>
|
---|
| 531 | Terminating the connection between
|
---|
| 532 | server and client</CAPTION>
|
---|
| 533 | <TR><TD>
|
---|
| 534 | <DIV ALIGN="CENTER"><!-- MATH
|
---|
| 535 | $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/disconnect_client_server.eps}}$
|
---|
| 536 | -->
|
---|
| 537 | <IMG
|
---|
| 538 | WIDTH="433" HEIGHT="668" ALIGN="BOTTOM" BORDER="0"
|
---|
| 539 | SRC="img5.png"
|
---|
| 540 | ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/disconnect_client_server.eps}}"> </DIV>
|
---|
| 541 | <P>
|
---|
| 542 | <DIV ALIGN="CENTER"></DIV>
|
---|
| 543 |
|
---|
| 544 | <P></TD></TR>
|
---|
| 545 | </TABLE>
|
---|
| 546 | </DIV><P></P>
|
---|
| 547 |
|
---|
| 548 | <P>
|
---|
| 549 |
|
---|
| 550 | <H3><A NAME="SECTION00051400000000000000">
|
---|
| 551 | 4.1.4 List backups</A>
|
---|
| 552 | </H3>
|
---|
| 553 |
|
---|
| 554 | <P>
|
---|
| 555 | Before restoring files, a client can inquire the server which backups
|
---|
| 556 | are available. Since there are several locations where the server
|
---|
| 557 | may store a backup (on CD, in local file(s), (in the future: in a
|
---|
| 558 | database,) ...) the client can use the message flow defined
|
---|
| 559 | in Figure <A HREF="MonitasConcepts.html#fig:ListBackupsClientServer">4.5</A> to get a list of all
|
---|
| 560 | (for this client) accessible backups.
|
---|
| 561 |
|
---|
| 562 | <P>
|
---|
| 563 |
|
---|
| 564 | <P></P>
|
---|
| 565 | <DIV ALIGN="CENTER"><A NAME="fig:ListBackupsClientServer"></A><A NAME="440"></A>
|
---|
| 566 | <TABLE>
|
---|
| 567 | <CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.5:</STRONG>
|
---|
| 568 | Get list of accessible backups
|
---|
| 569 | from server</CAPTION>
|
---|
| 570 | <TR><TD>
|
---|
| 571 | <DIV ALIGN="CENTER"><!-- MATH
|
---|
| 572 | $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/list_backups_client_server.eps}}$
|
---|
| 573 | -->
|
---|
| 574 | <IMG
|
---|
| 575 | WIDTH="434" HEIGHT="246" ALIGN="BOTTOM" BORDER="0"
|
---|
| 576 | SRC="img6.png"
|
---|
| 577 | ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/list_backups_client_server.eps}}"> </DIV>
|
---|
| 578 | <P>
|
---|
| 579 | <DIV ALIGN="CENTER"></DIV>
|
---|
| 580 |
|
---|
| 581 | <P></TD></TR>
|
---|
| 582 | </TABLE>
|
---|
| 583 | </DIV><P></P>
|
---|
| 584 |
|
---|
| 585 | <P>
|
---|
| 586 |
|
---|
| 587 | <H3><A NAME="SECTION00051500000000000000">
|
---|
| 588 | 4.1.5 List content of a backup</A>
|
---|
| 589 | </H3>
|
---|
| 590 |
|
---|
| 591 | <P>
|
---|
| 592 | When doing a <I>nuke restore</I> it's sufficient to address a total
|
---|
| 593 | backup. But in all other cases you want to know which files are in
|
---|
| 594 | the backup, what their sizes, modification dates are and what other
|
---|
| 595 | info is available. To inquire the content of a specific backup file,
|
---|
| 596 | the client uses the flows in Figure <A HREF="MonitasConcepts.html#fig:ListBackupcontentClientServer">4.6</A>.
|
---|
| 597 |
|
---|
| 598 | <P>
|
---|
| 599 |
|
---|
| 600 | <P></P>
|
---|
| 601 | <DIV ALIGN="CENTER"><A NAME="fig:ListBackupcontentClientServer"></A><A NAME="442"></A>
|
---|
| 602 | <TABLE>
|
---|
| 603 | <CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.6:</STRONG>
|
---|
| 604 | Get content of a specific
|
---|
| 605 | backup from server</CAPTION>
|
---|
| 606 | <TR><TD>
|
---|
| 607 | <DIV ALIGN="CENTER"><!-- MATH
|
---|
| 608 | $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/list_backupcontent_client_server.eps}}$
|
---|
| 609 | -->
|
---|
| 610 | <IMG
|
---|
| 611 | WIDTH="434" HEIGHT="246" ALIGN="BOTTOM" BORDER="0"
|
---|
| 612 | SRC="img7.png"
|
---|
| 613 | ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/list_backupcontent_client_server.eps}}"> </DIV>
|
---|
| 614 | <P>
|
---|
| 615 | <DIV ALIGN="CENTER"></DIV>
|
---|
| 616 |
|
---|
| 617 | <P></TD></TR>
|
---|
| 618 | </TABLE>
|
---|
| 619 | </DIV><P></P>
|
---|
| 620 |
|
---|
| 621 | <P>
|
---|
| 622 |
|
---|
| 623 | <H2><A NAME="SECTION00052000000000000000"></A><A NAME="sec:GuiClient"></A>
|
---|
| 624 | <BR>
|
---|
| 625 | 4.2 Message Flows between Client and (Graphical)User-Interface (<I>IFcg</I>)
|
---|
| 626 | </H2>
|
---|
| 627 |
|
---|
| 628 | <P>
|
---|
| 629 | To interact with the client process running silently in the background,
|
---|
| 630 | the client sets up a named pipe when it starts. A Graphical User Interface
|
---|
| 631 | (GUI) can dock to that pipe and control the client.
|
---|
| 632 |
|
---|
| 633 | <P>
|
---|
| 634 | The messages sent through the pipe are text based commands, so the
|
---|
| 635 | most primitive user interface will be a console with I/O redirect
|
---|
| 636 | to the pipe.
|
---|
| 637 |
|
---|
| 638 | <P>
|
---|
| 639 | The predefined commands are shown in Chapter <A HREF="MonitasConcepts.html#sec:GuiCommands">6</A>.
|
---|
| 640 |
|
---|
| 641 | <P>
|
---|
| 642 |
|
---|
| 643 | <H3><A NAME="SECTION00052100000000000000"></A><A NAME="sec:GuiClientConnect"></A>
|
---|
| 644 | <BR>
|
---|
| 645 | 4.2.1 (Re-)Connect to a server
|
---|
| 646 | </H3>
|
---|
| 647 |
|
---|
| 648 | <P>
|
---|
| 649 | Figure <A HREF="MonitasConcepts.html#fig:GuiClientConnect">4.7</A> shows how the connection between
|
---|
| 650 | a client and the server is established from the Client GUI. If there
|
---|
| 651 | exists a previous connection, that connection is closed before building
|
---|
| 652 | up the new one, as every client can be connected to <I>one</I> server
|
---|
| 653 | only at the same time.
|
---|
| 654 |
|
---|
| 655 | <P>
|
---|
| 656 |
|
---|
| 657 | <P></P>
|
---|
| 658 | <DIV ALIGN="CENTER"><A NAME="fig:GuiClientConnect"></A><A NAME="446"></A>
|
---|
| 659 | <TABLE>
|
---|
| 660 | <CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.7:</STRONG>
|
---|
| 661 | Enable Connection from Client GUI</CAPTION>
|
---|
| 662 | <TR><TD>
|
---|
| 663 | <DIV ALIGN="CENTER"><!-- MATH
|
---|
| 664 | $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/connect_GUI_client.eps}}$
|
---|
| 665 | -->
|
---|
| 666 | <IMG
|
---|
| 667 | WIDTH="438" HEIGHT="278" ALIGN="BOTTOM" BORDER="0"
|
---|
| 668 | SRC="img8.png"
|
---|
| 669 | ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/connect_GUI_client.eps}}"> </DIV>
|
---|
| 670 | <P>
|
---|
| 671 | <DIV ALIGN="CENTER"></DIV>
|
---|
| 672 |
|
---|
| 673 | <P></TD></TR>
|
---|
| 674 | </TABLE>
|
---|
| 675 | </DIV><P></P>
|
---|
| 676 |
|
---|
| 677 | <P>
|
---|
| 678 |
|
---|
| 679 | <H3><A NAME="SECTION00052200000000000000">
|
---|
| 680 | 4.2.2 Start a Backup</A>
|
---|
| 681 | </H3>
|
---|
| 682 |
|
---|
| 683 | <P>
|
---|
| 684 | When starting a backup, the client needs to know which files to backup
|
---|
| 685 | and some information about the backup itself: what type of backup
|
---|
| 686 | (boot-able CD-ROM, ISO-File,...), the name/location (/dev/cdwriter,
|
---|
| 687 | /usr/bkup/file.tgz,...) and the mode of the backup (compress_clientside=gzip,...).
|
---|
| 688 | The message flow is in Figure <A HREF="MonitasConcepts.html#fig:GuiClientBackup">4.8</A>.
|
---|
| 689 |
|
---|
| 690 | <P>
|
---|
| 691 |
|
---|
| 692 | <P></P>
|
---|
| 693 | <DIV ALIGN="CENTER"><A NAME="fig:GuiClientBackup"></A><A NAME="448"></A>
|
---|
| 694 | <TABLE>
|
---|
| 695 | <CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.8:</STRONG>
|
---|
| 696 | Start Backup from Client GUI</CAPTION>
|
---|
| 697 | <TR><TD>
|
---|
| 698 | <DIV ALIGN="CENTER"><!-- MATH
|
---|
| 699 | $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/backup_GUI_client.eps}}$
|
---|
| 700 | -->
|
---|
| 701 | <IMG
|
---|
| 702 | WIDTH="434" HEIGHT="368" ALIGN="BOTTOM" BORDER="0"
|
---|
| 703 | SRC="img9.png"
|
---|
| 704 | ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/backup_GUI_client.eps}}"> </DIV>
|
---|
| 705 | <P>
|
---|
| 706 | <DIV ALIGN="CENTER"></DIV>
|
---|
| 707 |
|
---|
| 708 | <P></TD></TR>
|
---|
| 709 | </TABLE>
|
---|
| 710 | </DIV><P></P>
|
---|
| 711 |
|
---|
| 712 | <P>
|
---|
| 713 |
|
---|
| 714 | <H3><A NAME="SECTION00052300000000000000">
|
---|
| 715 | 4.2.3 Start a Restore</A>
|
---|
| 716 | </H3>
|
---|
| 717 |
|
---|
| 718 | <P>
|
---|
| 719 | If a client knows (by other procedures, see chapter <A HREF="MonitasConcepts.html#sec:GuiClientListBackups">4.2.4</A>
|
---|
| 720 | and <A HREF="MonitasConcepts.html#sec:GuiClientListBackupContent">4.2.5</A>) that a certain backup exists
|
---|
| 721 | on the server (and the client may access it), it can start restoring
|
---|
| 722 | specified files like shown in Figure <A HREF="MonitasConcepts.html#fig:GuiClientRestore">4.9</A>.
|
---|
| 723 | The files can be addressed by their exact path/name (as stored in
|
---|
| 724 | the backup) or as wildcards (path/* or path/name* - may be extended
|
---|
| 725 | in the future).
|
---|
| 726 |
|
---|
| 727 | <P>
|
---|
| 728 |
|
---|
| 729 | <P></P>
|
---|
| 730 | <DIV ALIGN="CENTER"><A NAME="fig:GuiClientRestore"></A><A NAME="450"></A>
|
---|
| 731 | <TABLE>
|
---|
| 732 | <CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.9:</STRONG>
|
---|
| 733 | Start Restore from Client GUI</CAPTION>
|
---|
| 734 | <TR><TD>
|
---|
| 735 | <DIV ALIGN="CENTER"><!-- MATH
|
---|
| 736 | $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/restore_GUI_client.eps}}$
|
---|
| 737 | -->
|
---|
| 738 | <IMG
|
---|
| 739 | WIDTH="430" HEIGHT="440" ALIGN="BOTTOM" BORDER="0"
|
---|
| 740 | SRC="img10.png"
|
---|
| 741 | ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/restore_GUI_client.eps}}"> </DIV>
|
---|
| 742 | <P>
|
---|
| 743 | <DIV ALIGN="CENTER"></DIV>
|
---|
| 744 |
|
---|
| 745 | <P></TD></TR>
|
---|
| 746 | </TABLE>
|
---|
| 747 | </DIV><P></P>
|
---|
| 748 |
|
---|
| 749 | <P>
|
---|
| 750 |
|
---|
| 751 | <H3><A NAME="SECTION00052400000000000000"></A><A NAME="sec:GuiClientListBackups"></A>
|
---|
| 752 | <BR>
|
---|
| 753 | 4.2.4 Get list of previous, accessible Backups
|
---|
| 754 | </H3>
|
---|
| 755 |
|
---|
| 756 | <P>
|
---|
| 757 | To get a list of available backups the client must ask the server
|
---|
| 758 | which are available (maybe specific to the requesting client/user).
|
---|
| 759 | The message flow is in Figure <A HREF="MonitasConcepts.html#fig:GuiClientListBackups">4.10</A>.
|
---|
| 760 |
|
---|
| 761 | <P>
|
---|
| 762 |
|
---|
| 763 | <P></P>
|
---|
| 764 | <DIV ALIGN="CENTER"><A NAME="fig:GuiClientListBackups"></A><A NAME="453"></A>
|
---|
| 765 | <TABLE>
|
---|
| 766 | <CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.10:</STRONG>
|
---|
| 767 | Ask Server for available backups</CAPTION>
|
---|
| 768 | <TR><TD>
|
---|
| 769 | <DIV ALIGN="CENTER"><!-- MATH
|
---|
| 770 | $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/list_backups_GUI_client.eps}}$
|
---|
| 771 | -->
|
---|
| 772 | <IMG
|
---|
| 773 | WIDTH="433" HEIGHT="187" ALIGN="BOTTOM" BORDER="0"
|
---|
| 774 | SRC="img11.png"
|
---|
| 775 | ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/list_backups_GUI_client.eps}}"> </DIV>
|
---|
| 776 | <P>
|
---|
| 777 | <DIV ALIGN="CENTER"></DIV>
|
---|
| 778 |
|
---|
| 779 | <P></TD></TR>
|
---|
| 780 | </TABLE>
|
---|
| 781 | </DIV><P></P>
|
---|
| 782 |
|
---|
| 783 | <P>
|
---|
| 784 |
|
---|
| 785 | <H3><A NAME="SECTION00052500000000000000"></A><A NAME="sec:GuiClientListBackupContent"></A>
|
---|
| 786 | <BR>
|
---|
| 787 | 4.2.5 Get content (files) of a specified Backup
|
---|
| 788 | </H3>
|
---|
| 789 |
|
---|
| 790 | <P>
|
---|
| 791 | The client knows (maybe via the flow in Chapter <A HREF="MonitasConcepts.html#sec:GuiClientListBackups">4.2.4</A>)
|
---|
| 792 | which backup(s) are available at the server. To view the content (the
|
---|
| 793 | file names, -sizes,...) of a specific backup the client can
|
---|
| 794 | ask the server to deliver this information. The message flow is shown
|
---|
| 795 | in Figure <A HREF="MonitasConcepts.html#fig:GuiClientListBackupContent">4.11</A>.
|
---|
| 796 |
|
---|
| 797 | <P>
|
---|
| 798 |
|
---|
| 799 | <P></P>
|
---|
| 800 | <DIV ALIGN="CENTER"><A NAME="fig:GuiClientListBackupContent"></A><A NAME="456"></A>
|
---|
| 801 | <TABLE>
|
---|
| 802 | <CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.11:</STRONG>
|
---|
| 803 | Ask Server for the content
|
---|
| 804 | of a backup</CAPTION>
|
---|
| 805 | <TR><TD>
|
---|
| 806 | <DIV ALIGN="CENTER"><!-- MATH
|
---|
| 807 | $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/list_backupcontent_GUI_client.eps}}$
|
---|
| 808 | -->
|
---|
| 809 | <IMG
|
---|
| 810 | WIDTH="433" HEIGHT="187" ALIGN="BOTTOM" BORDER="0"
|
---|
| 811 | SRC="img12.png"
|
---|
| 812 | ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/list_backupcontent_GUI_client.eps}}"> </DIV>
|
---|
| 813 | <P>
|
---|
| 814 | <DIV ALIGN="CENTER"></DIV>
|
---|
| 815 |
|
---|
| 816 | <P></TD></TR>
|
---|
| 817 | </TABLE>
|
---|
| 818 | </DIV><P></P>
|
---|
| 819 |
|
---|
| 820 | <P>
|
---|
| 821 |
|
---|
| 822 | <H3><A NAME="SECTION00052600000000000000">
|
---|
| 823 | 4.2.6 Start a Verify</A>
|
---|
| 824 | </H3>
|
---|
| 825 |
|
---|
| 826 | <P>
|
---|
| 827 | <to be defined>
|
---|
| 828 |
|
---|
| 829 | <P>
|
---|
| 830 |
|
---|
| 831 | <H3><A NAME="SECTION00052700000000000000">
|
---|
| 832 | 4.2.7 Start a Compare</A>
|
---|
| 833 | </H3>
|
---|
| 834 |
|
---|
| 835 | <P>
|
---|
| 836 | <to be defined>
|
---|
| 837 |
|
---|
| 838 | <P>
|
---|
| 839 |
|
---|
| 840 | <H3><A NAME="SECTION00052800000000000000">
|
---|
| 841 | 4.2.8 Terminate Client</A>
|
---|
| 842 | </H3>
|
---|
| 843 |
|
---|
| 844 | <P>
|
---|
| 845 | It doesn't make sense to close the client-server connection without
|
---|
| 846 | terminating the client. Either the client must be connected to another
|
---|
| 847 | server (procedure see chapter <A HREF="MonitasConcepts.html#sec:GuiClientConnect">4.2.1</A>) if it
|
---|
| 848 | shall do other backups/restores or the client just keeps connected
|
---|
| 849 | to the same server (so no changes are necessary :-). Nevertheless
|
---|
| 850 | if the client has done its job, it must be shutdown but that concerns
|
---|
| 851 | both, the connection and the client . This procedure is shown in Figure <A HREF="MonitasConcepts.html#fig:GuiClientTerminate">4.12</A>.
|
---|
| 852 |
|
---|
| 853 | <P>
|
---|
| 854 | Of course you can simply close the GUI of the client. But this won't
|
---|
| 855 | have any influence to the running client...
|
---|
| 856 |
|
---|
| 857 | <P>
|
---|
| 858 |
|
---|
| 859 | <P></P>
|
---|
| 860 | <DIV ALIGN="CENTER"><A NAME="fig:GuiClientTerminate"></A><A NAME="458"></A>
|
---|
| 861 | <TABLE>
|
---|
| 862 | <CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.12:</STRONG>
|
---|
| 863 | Terminate the client</CAPTION>
|
---|
| 864 | <TR><TD>
|
---|
| 865 | <DIV ALIGN="CENTER"><!-- MATH
|
---|
| 866 | $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/terminate_GUI_client.eps}}$
|
---|
| 867 | -->
|
---|
| 868 | <IMG
|
---|
| 869 | WIDTH="434" HEIGHT="257" ALIGN="BOTTOM" BORDER="0"
|
---|
| 870 | SRC="img13.png"
|
---|
| 871 | ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/terminate_GUI_client.eps}}"> </DIV>
|
---|
| 872 | <P>
|
---|
| 873 | <DIV ALIGN="CENTER"></DIV>
|
---|
| 874 |
|
---|
| 875 | <P></TD></TR>
|
---|
| 876 | </TABLE>
|
---|
| 877 | </DIV><P></P>
|
---|
| 878 |
|
---|
| 879 | <P>
|
---|
| 880 |
|
---|
| 881 | <H2><A NAME="SECTION00053000000000000000">
|
---|
| 882 | 4.3 Message Flows between Server and (Graphical)User-Interface (<I>IFsg</I>)</A>
|
---|
| 883 | </H2>
|
---|
| 884 |
|
---|
| 885 | <P>
|
---|
| 886 | <to be defined> Ideas:
|
---|
| 887 |
|
---|
| 888 | <P>
|
---|
| 889 | <DL>
|
---|
| 890 | <DT><STRONG>N.N.</STRONG></DT>
|
---|
| 891 | <DD>All backup/verify/compare/restore procedures that can be triggered
|
---|
| 892 | from client side, too.
|
---|
| 893 | </DD>
|
---|
| 894 | <DT><STRONG>Status</STRONG></DT>
|
---|
| 895 | <DD>Show all current connections and its current status (activity).
|
---|
| 896 | </DD>
|
---|
| 897 | <DT><STRONG>Monitor</STRONG></DT>
|
---|
| 898 | <DD>Request server to generate (continuous) progress messages
|
---|
| 899 | to a specified connection.
|
---|
| 900 | </DD>
|
---|
| 901 | <DT><STRONG>Info</STRONG></DT>
|
---|
| 902 | <DD>Server notifies the user about internal processes.
|
---|
| 903 | </DD>
|
---|
| 904 | <DT><STRONG>Verbose</STRONG></DT>
|
---|
| 905 | <DD>Modify the level of server's verbosity.
|
---|
| 906 | </DD>
|
---|
| 907 | </DL>
|
---|
| 908 |
|
---|
| 909 | <P>
|
---|
| 910 |
|
---|
| 911 | <H2><A NAME="SECTION00054000000000000000">
|
---|
| 912 | 4.4 Message Flows between Server and its Child (<I>IFss</I> and <I>IFsm</I>)</A>
|
---|
| 913 | </H2>
|
---|
| 914 |
|
---|
| 915 | <P>
|
---|
| 916 | <to be defined> Ideas:
|
---|
| 917 |
|
---|
| 918 | <P>
|
---|
| 919 | <DL>
|
---|
| 920 | <DT><STRONG>GetClientInfo</STRONG></DT>
|
---|
| 921 | <DD>Server asks server child for info about the connection
|
---|
| 922 | to a client (IP:port, current activity).
|
---|
| 923 | </DD>
|
---|
| 924 | <DT><STRONG>TerminateConnection</STRONG></DT>
|
---|
| 925 | <DD>Server asks server child to terminate the connection.
|
---|
| 926 | </DD>
|
---|
| 927 | <DT><STRONG>TerminateNotification</STRONG></DT>
|
---|
| 928 | <DD>Server child notifies the parent server that
|
---|
| 929 | it will terminate now.
|
---|
| 930 | </DD>
|
---|
| 931 | <DT><STRONG>N.N.</STRONG></DT>
|
---|
| 932 | <DD>All backup/verify/compare/restore procedures that are requested
|
---|
| 933 | to the server, but must be executed from a server's child.
|
---|
| 934 | </DD>
|
---|
| 935 | </DL>
|
---|
| 936 |
|
---|
| 937 | <P>
|
---|
| 938 |
|
---|
| 939 | <H1><A NAME="SECTION00060000000000000000">
|
---|
| 940 | 5 Interfaces</A>
|
---|
| 941 | </H1>
|
---|
| 942 |
|
---|
| 943 | <P>
|
---|
| 944 | Figure <A HREF="MonitasConcepts.html#fig:SystemStructure">3.1</A> in Section <A HREF="MonitasConcepts.html#sec:SystemStructure">3</A>
|
---|
| 945 | (System Structure) names the defined interfaces in respect of their
|
---|
| 946 | location. E.g. the interface between the server and the client is
|
---|
| 947 | called <I>IFcs</I> if you see it as part of the client, and it's called
|
---|
| 948 | <I>IFsc</I> if it is described as part of the server. This naming
|
---|
| 949 | is continued in the software, but of course the 2 parts must fit together
|
---|
| 950 | to transmit the information.
|
---|
| 951 |
|
---|
| 952 | <P>
|
---|
| 953 | To describe this common part (e.g. the format of the data structures)
|
---|
| 954 | we introduce a second naming scheme here that denominates the matter
|
---|
| 955 | inbetween. These names are used in the sources, too. So pay attention
|
---|
| 956 | to understand the difference: The common parts of the interfaces are
|
---|
| 957 | named <I>Ixx</I>, their realization at the two ends are named <I>IFxy</I>.
|
---|
| 958 |
|
---|
| 959 | <P>
|
---|
| 960 | <BR><P></P>
|
---|
| 961 | <DIV ALIGN="CENTER"><A NAME="462"></A>
|
---|
| 962 | <TABLE>
|
---|
| 963 | <CAPTION><STRONG>Table 5.1:</STRONG>
|
---|
| 964 | Interfaces</CAPTION>
|
---|
| 965 | <TR><TD><TABLE CELLPADDING=3 BORDER="1">
|
---|
| 966 | <TR><TH ALIGN="LEFT" VALIGN="TOP" WIDTH=175><B>Interface</B></TH>
|
---|
| 967 | <TH ALIGN="LEFT" VALIGN="TOP" WIDTH=325><B>is connecting</B></TH>
|
---|
| 968 | </TR>
|
---|
| 969 | <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=175><I>Im</I> ("Mondo")</TD>
|
---|
| 970 | <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=325>server/client internally with mondo</TD>
|
---|
| 971 | </TR>
|
---|
| 972 | <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=175><I>In</I> ("Network")</TD>
|
---|
| 973 | <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=325>client and server, <I>IFcs <-></I> <I>IFsc</I></TD>
|
---|
| 974 | </TR>
|
---|
| 975 | <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=175><I>Ipc</I> ("Pipe in Client")</TD>
|
---|
| 976 | <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=325>client to GUI, <I>IFcg <-></I> external</TD>
|
---|
| 977 | </TR>
|
---|
| 978 | <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=175><I>Ips</I> ("Pipe in Server")</TD>
|
---|
| 979 | <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=325>server to GUI, <I>IFsg</I> <-> external</TD>
|
---|
| 980 | </TR>
|
---|
| 981 | <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=175><I>Is</I> ("Server interprocess")</TD>
|
---|
| 982 | <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=325>Server's parent instance with the child instances, <I>IFss</I> <->
|
---|
| 983 | <I>IFsm</I></TD>
|
---|
| 984 | </TR>
|
---|
| 985 | </TABLE>
|
---|
| 986 |
|
---|
| 987 | <P>
|
---|
| 988 | </TD></TR>
|
---|
| 989 | </TABLE>
|
---|
| 990 | </DIV><P></P>
|
---|
| 991 | <BR>
|
---|
| 992 |
|
---|
| 993 | <P>
|
---|
| 994 |
|
---|
| 995 | <H2><A NAME="SECTION00061000000000000000">
|
---|
| 996 | 5.1 Interface <I>Im</I> to Mondo</A>
|
---|
| 997 | </H2>
|
---|
| 998 |
|
---|
| 999 | <P>
|
---|
| 1000 | <to be defined>
|
---|
| 1001 |
|
---|
| 1002 | <P>
|
---|
| 1003 |
|
---|
| 1004 | <H3><A NAME="SECTION00061100000000000000">
|
---|
| 1005 | 5.1.1 <I>Im</I> in Server</A>
|
---|
| 1006 | </H3>
|
---|
| 1007 |
|
---|
| 1008 | <P>
|
---|
| 1009 |
|
---|
| 1010 | <H3><A NAME="SECTION00061200000000000000">
|
---|
| 1011 | 5.1.2 <I>Im</I> in Client</A>
|
---|
| 1012 | </H3>
|
---|
| 1013 |
|
---|
| 1014 | <P>
|
---|
| 1015 |
|
---|
| 1016 | <H2><A NAME="SECTION00062000000000000000">
|
---|
| 1017 | 5.2 Interface <I>In</I> between Client and Server</A>
|
---|
| 1018 | </H2>
|
---|
| 1019 |
|
---|
| 1020 | <P>
|
---|
| 1021 | <to be defined>
|
---|
| 1022 |
|
---|
| 1023 | <P>
|
---|
| 1024 |
|
---|
| 1025 | <H2><A NAME="SECTION00063000000000000000">
|
---|
| 1026 | 5.3 Interface <I>Ipc</I>, Client's pipe to the GUI</A>
|
---|
| 1027 | </H2>
|
---|
| 1028 |
|
---|
| 1029 | <P>
|
---|
| 1030 | <to be defined>
|
---|
| 1031 |
|
---|
| 1032 | <P>
|
---|
| 1033 |
|
---|
| 1034 | <H2><A NAME="SECTION00064000000000000000">
|
---|
| 1035 | 5.4 Interface <I>Ips</I>, Server's pipe to the GUI</A>
|
---|
| 1036 | </H2>
|
---|
| 1037 |
|
---|
| 1038 | <P>
|
---|
| 1039 | <to be defined>
|
---|
| 1040 |
|
---|
| 1041 | <P>
|
---|
| 1042 |
|
---|
| 1043 | <H2><A NAME="SECTION00065000000000000000">
|
---|
| 1044 | 5.5 Interface <I>Is</I>, IPC of server instances</A>
|
---|
| 1045 | </H2>
|
---|
| 1046 |
|
---|
| 1047 | <P>
|
---|
| 1048 | <to be defined>
|
---|
| 1049 |
|
---|
| 1050 | <P>
|
---|
| 1051 |
|
---|
| 1052 | <H1><A NAME="SECTION00070000000000000000"></A><A NAME="sec:GuiCommands"></A>
|
---|
| 1053 | <BR>
|
---|
| 1054 | 6 Commands at the GUI interfaces
|
---|
| 1055 | </H1>
|
---|
| 1056 |
|
---|
| 1057 | <P>
|
---|
| 1058 | To interact from a Graphical User Interface (GUI) to the server or
|
---|
| 1059 | client process running locally, silently in the background, every
|
---|
| 1060 | client and the server (parent process) sets up a named pipe when it
|
---|
| 1061 | starts. A Graphical User Interface (GUI) can dock to that pipe and
|
---|
| 1062 | control the client/server.
|
---|
| 1063 |
|
---|
| 1064 | <P>
|
---|
| 1065 | If not otherwise specified, the server's pipe is <TT>/var/run/monitas/server</TT>
|
---|
| 1066 | and a client's pipe is <TT>/var/run/monitas/client_<I>nnn</I></TT>
|
---|
| 1067 | with <TT><I>nnn</I></TT> depends upon the current connection.
|
---|
| 1068 |
|
---|
| 1069 | <P>
|
---|
| 1070 | (For IPv4 we could use the server's IP:port, e.g. <TT>client_192168001001-22345</TT>
|
---|
| 1071 | i.e. 12-digits IP address, dash, 5-digits port of the server's child
|
---|
| 1072 | for that connection).
|
---|
| 1073 |
|
---|
| 1074 | <P>
|
---|
| 1075 | This allows us to run more than one client on a PC (maybe more than
|
---|
| 1076 | 1 user is logged in) that can be connected to the same server (IP
|
---|
| 1077 | address) with different ports (server's child's port number) or to
|
---|
| 1078 | different servers (different IP addresses). Only one server per PC
|
---|
| 1079 | is allowed, but it can handle several connections in parallel (by
|
---|
| 1080 | several child processes). In most cases, the backup medium is a very
|
---|
| 1081 | limiting resource (only 1, 2... CD-Writer, Tape-Streamer, Database,
|
---|
| 1082 | ...) that can be managed much easier by one central instance.
|
---|
| 1083 | Otherwise we had to expand the resource management (that is already
|
---|
| 1084 | necessary between parent server and child processes) with more danger
|
---|
| 1085 | to run into dead-locks, race-conditions and other difficult-to-debug
|
---|
| 1086 | stuff.
|
---|
| 1087 |
|
---|
| 1088 | <P>
|
---|
| 1089 | If not denoted otherwise, the description in this chapter is valid
|
---|
| 1090 | for the messages at the client GUI <I>and</I> the messages at the
|
---|
| 1091 | server GUI.
|
---|
| 1092 |
|
---|
| 1093 | <P>
|
---|
| 1094 |
|
---|
| 1095 | <H2><A NAME="SECTION00071000000000000000">
|
---|
| 1096 | 6.1 Message Structure</A>
|
---|
| 1097 | </H2>
|
---|
| 1098 |
|
---|
| 1099 | <P>
|
---|
| 1100 | The messages sent through the pipe are text based commands, so the
|
---|
| 1101 | most primitive user interface will be a console with I/O redirect
|
---|
| 1102 | to the pipe.
|
---|
| 1103 |
|
---|
| 1104 | <P>
|
---|
| 1105 | The used semantic is:
|
---|
| 1106 |
|
---|
| 1107 | <P>
|
---|
| 1108 | <TT>COMMAND [ARG [...]]\n</TT>
|
---|
| 1109 |
|
---|
| 1110 | <P>
|
---|
| 1111 | where
|
---|
| 1112 |
|
---|
| 1113 | <P>
|
---|
| 1114 |
|
---|
| 1115 | <UL>
|
---|
| 1116 | <LI>COMMAND is a predefined (case insensitive) command, valid chars: [a-zA-Z]
|
---|
| 1117 | </LI>
|
---|
| 1118 | <LI>ARG is zero or more arguments for COMMAND, each COMMAND has a predefined
|
---|
| 1119 | number of mandatory arguments (some command additional might have
|
---|
| 1120 | optional arguments)
|
---|
| 1121 | </LI>
|
---|
| 1122 | <LI>COMMAND and ARG is separated by one space ( )
|
---|
| 1123 | </LI>
|
---|
| 1124 | <LI>ARGs are separated by one space ( )
|
---|
| 1125 | </LI>
|
---|
| 1126 | <LI>ARGs contain of at least one printable character and/or whitespace
|
---|
| 1127 | ([ \t\n])
|
---|
| 1128 | </LI>
|
---|
| 1129 | <LI>an ARG that contains spaces must be surrounded by '...' or ``...''
|
---|
| 1130 | </LI>
|
---|
| 1131 | <LI>inside '...' following characters must be escaped by a backslash
|
---|
| 1132 | (\) for their literal meaning:
|
---|
| 1133 |
|
---|
| 1134 | <P>
|
---|
| 1135 |
|
---|
| 1136 | <UL>
|
---|
| 1137 | <LI>[\']for literal single quote (')
|
---|
| 1138 | </LI>
|
---|
| 1139 | <LI>[\\]for the backslash (\)
|
---|
| 1140 | itself
|
---|
| 1141 | </LI>
|
---|
| 1142 | </UL>to use <c:\stefan's ``quote''> as one argument
|
---|
| 1143 | use <TT>'c:\\stefan\'s ``quote'''</TT>
|
---|
| 1144 |
|
---|
| 1145 | <P>
|
---|
| 1146 | </LI>
|
---|
| 1147 | <LI>inside ``...'' you must not use the double quote character
|
---|
| 1148 | (``)!
|
---|
| 1149 | <BR>
|
---|
| 1150 | There is no escape sequence defined for a literal meaning! Surprised?
|
---|
| 1151 | But this kind of definition allows us to use the ARG <c:\hugo rabson's dir\file.c>
|
---|
| 1152 | without further modification by simply surrounding it with double
|
---|
| 1153 | quotes: <TT>``c:\hugo rabson's dir\file.c''</TT>
|
---|
| 1154 | </LI>
|
---|
| 1155 | <LI>if the ARG itself shall begin with a double quote (``) or single
|
---|
| 1156 | quote (') then quote the whole argument with '...' (and escape
|
---|
| 1157 | the ' at the beginning).
|
---|
| 1158 | </LI>
|
---|
| 1159 | <LI>if the ARG doesn't contain spaces but contains any quote character(s),
|
---|
| 1160 | you needn't do anything
|
---|
| 1161 | </LI>
|
---|
| 1162 | <LI>COMMAND line is terminated by a newline character('\n'),
|
---|
| 1163 | an optional ASCII-Null ('\0') can follow
|
---|
| 1164 | </LI>
|
---|
| 1165 | </UL>
|
---|
| 1166 | Possible, future extension:
|
---|
| 1167 |
|
---|
| 1168 | <P>
|
---|
| 1169 |
|
---|
| 1170 | <UL>
|
---|
| 1171 | <LI>Using '\0' instead of ' ' to separate ARGs (and COMMAND)
|
---|
| 1172 | will dispense with the nasty space quoting. The end of the command
|
---|
| 1173 | line is then marked by two '\0' instead of '\n'.
|
---|
| 1174 | To distinguish between old and new syntax, the client can look at
|
---|
| 1175 | the first character behind the COMMAND: if it's a '\0'
|
---|
| 1176 | the GUI uses the new syntax and all responses to the COMMAND use the
|
---|
| 1177 | new syntax, too. If the character is a space ' ' or newline '\n'
|
---|
| 1178 | we answer in old (above described) syntax and must pay attention to
|
---|
| 1179 | the quoting
|
---|
| 1180 | </LI>
|
---|
| 1181 | </UL>
|
---|
| 1182 |
|
---|
| 1183 | <P>
|
---|
| 1184 |
|
---|
| 1185 | <H2><A NAME="SECTION00072000000000000000">
|
---|
| 1186 | 6.2 Implementation Detail</A>
|
---|
| 1187 | </H2>
|
---|
| 1188 |
|
---|
| 1189 | <P>
|
---|
| 1190 | There is much work that is common to all the pipe interfaces that
|
---|
| 1191 | use text based messages: extract the command, calculate the number
|
---|
| 1192 | of mandatory parameters, split the arguments, parse for escape sequences,
|
---|
| 1193 | check if an arguments fits the requested type (e.g. filename, IP address,
|
---|
| 1194 | port number,... ), translate the textual argument into its machine
|
---|
| 1195 | readable format, ... And equivalent steps are necessary when
|
---|
| 1196 | we want to create and send a message. And different commands use the
|
---|
| 1197 | same argument types that always must be parsed and checked in the
|
---|
| 1198 | same way.
|
---|
| 1199 |
|
---|
| 1200 | <P>
|
---|
| 1201 | At the moment the extent of the complete command set cannot be given,
|
---|
| 1202 | so it would be the best to keep yet unknown extensions in mind and
|
---|
| 1203 | implement the pipe interface as a generic one:
|
---|
| 1204 |
|
---|
| 1205 | <P>
|
---|
| 1206 |
|
---|
| 1207 | <UL>
|
---|
| 1208 | <LI>use tables for valid commands (different tables for server- and client-pipes
|
---|
| 1209 | [or flags in a common table to ease common syntax for equivalent
|
---|
| 1210 | server/client commands?])
|
---|
| 1211 | </LI>
|
---|
| 1212 | <LI>each ``command'' entry contains the number of mandatory and optional
|
---|
| 1213 | arguments
|
---|
| 1214 | </LI>
|
---|
| 1215 | <LI>each argument refers to a predefined type (not only <I>int</I>, <I>string</I>
|
---|
| 1216 | but of finer granularity like <I>filename</I>, <I>dirname</I>, <I>devicename</I>,
|
---|
| 1217 | <I>backupname</I>, <I>portnumber</I>, ...) that can be generated
|
---|
| 1218 | and checked for validity by generic routines.
|
---|
| 1219 | </LI>
|
---|
| 1220 | </UL>
|
---|
| 1221 | The tables can easily be extended and new commands can introduced
|
---|
| 1222 | with less effort by reusing existing subroutines for the argument
|
---|
| 1223 | handling. (B.t.w. the table contains all information that is necessary
|
---|
| 1224 | for an generic help function to each defined message.) Of course this
|
---|
| 1225 | only concerns the interface handling, not the new functionality. But
|
---|
| 1226 | why reinvent the wheel twice?
|
---|
| 1227 |
|
---|
| 1228 | <P>
|
---|
| 1229 |
|
---|
| 1230 | <H2><A NAME="SECTION00073000000000000000">
|
---|
| 1231 | 6.3 Defined Commands</A>
|
---|
| 1232 | </H2>
|
---|
| 1233 |
|
---|
| 1234 | <P>
|
---|
| 1235 | Table <A HREF="#tab:GuiCommands">6.1</A> shows the defined commands to the GUI.
|
---|
| 1236 |
|
---|
| 1237 | <P>
|
---|
| 1238 | Currently there are only the messages from Figure <A HREF="MonitasConcepts.html#fig:GuiClientConnect">4.7</A>
|
---|
| 1239 | and <A HREF="MonitasConcepts.html#fig:GuiClientBackup">4.8</A> entered in this table. But we recognize
|
---|
| 1240 | that the messages <TT>notconnected</TT>, <TT>abort</TT> and <TT>backupdone</TT>
|
---|
| 1241 | serve the same purpose. We should think about, if we want a streamline
|
---|
| 1242 | small interface (replace the 3 messages by one) or accept the redundancy.
|
---|
| 1243 | Perhaps that depends on the connected GUI. A simple command line interface
|
---|
| 1244 | (that transfers the messages transparently to the user) benefits from
|
---|
| 1245 | the different message names, a graphical user interface on the other
|
---|
| 1246 | side must join the different messages to the same ``Not Done! Error''
|
---|
| 1247 | requestor.
|
---|
| 1248 |
|
---|
| 1249 | <P>
|
---|
| 1250 | <BR><P></P>
|
---|
| 1251 | <DIV ALIGN="CENTER"><A NAME="476"></A>
|
---|
| 1252 | <TABLE>
|
---|
| 1253 | <CAPTION><STRONG>Table 6.1:</STRONG>
|
---|
| 1254 | Commands at the GUI Interfaces</CAPTION>
|
---|
| 1255 | <TR><TD><TABLE CELLPADDING=3 BORDER="1">
|
---|
| 1256 | <TR><TD ALIGN="CENTER" COLSPAN=1>If (from/to GUI)</TD>
|
---|
| 1257 | <TD ALIGN="CENTER" COLSPAN=1> Command</TD>
|
---|
| 1258 | <TD ALIGN="CENTER" COLSPAN=1>No of args (mnd/opt)</TD>
|
---|
| 1259 | <TD ALIGN="CENTER" COLSPAN=1>type of arg 1</TD>
|
---|
| 1260 | <TD ALIGN="CENTER" COLSPAN=1>type of arg 2</TD>
|
---|
| 1261 | <TD ALIGN="CENTER" COLSPAN=1>type of arg 3</TD>
|
---|
| 1262 | <TD ALIGN="CENTER" COLSPAN=1>type of arg 4</TD>
|
---|
| 1263 | <TD ALIGN="CENTER" COLSPAN=1>type of arg 5</TD>
|
---|
| 1264 | </TR>
|
---|
| 1265 | <TR><TD ALIGN="CENTER">C/-</TD>
|
---|
| 1266 | <TD ALIGN="CENTER"><TT>connect</TT></TD>
|
---|
| 1267 | <TD ALIGN="CENTER">1/1</TD>
|
---|
| 1268 | <TD ALIGN="CENTER">ServerIP</TD>
|
---|
| 1269 | <TD ALIGN="CENTER">Port</TD>
|
---|
| 1270 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1271 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1272 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1273 | </TR>
|
---|
| 1274 | <TR><TD ALIGN="CENTER">-/C</TD>
|
---|
| 1275 | <TD ALIGN="CENTER"><TT>disconnected</TT></TD>
|
---|
| 1276 | <TD ALIGN="CENTER">2/0</TD>
|
---|
| 1277 | <TD ALIGN="CENTER">ServerIP</TD>
|
---|
| 1278 | <TD ALIGN="CENTER">Port</TD>
|
---|
| 1279 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1280 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1281 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1282 | </TR>
|
---|
| 1283 | <TR><TD ALIGN="CENTER">-/C</TD>
|
---|
| 1284 | <TD ALIGN="CENTER"><TT>connected</TT></TD>
|
---|
| 1285 | <TD ALIGN="CENTER">0</TD>
|
---|
| 1286 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1287 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1288 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1289 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1290 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1291 | </TR>
|
---|
| 1292 | <TR><TD ALIGN="CENTER">-/C</TD>
|
---|
| 1293 | <TD ALIGN="CENTER"><TT>notconnected</TT></TD>
|
---|
| 1294 | <TD ALIGN="CENTER">1/1</TD>
|
---|
| 1295 | <TD ALIGN="CENTER">ErrNo</TD>
|
---|
| 1296 | <TD ALIGN="CENTER">ErrorMsg</TD>
|
---|
| 1297 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1298 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1299 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1300 | </TR>
|
---|
| 1301 | <TR><TD ALIGN="CENTER">C/-</TD>
|
---|
| 1302 | <TD ALIGN="CENTER"><TT>backup</TT></TD>
|
---|
| 1303 | <TD ALIGN="CENTER">4/*</TD>
|
---|
| 1304 | <TD ALIGN="CENTER">Bkup type</TD>
|
---|
| 1305 | <TD ALIGN="CENTER">name</TD>
|
---|
| 1306 | <TD ALIGN="CENTER">mode</TD>
|
---|
| 1307 | <TD ALIGN="CENTER">filepattern</TD>
|
---|
| 1308 | <TD ALIGN="CENTER">...</TD>
|
---|
| 1309 | </TR>
|
---|
| 1310 | <TR><TD ALIGN="CENTER">-/CS</TD>
|
---|
| 1311 | <TD ALIGN="CENTER"><TT>progress</TT></TD>
|
---|
| 1312 | <TD ALIGN="CENTER">1/0</TD>
|
---|
| 1313 | <TD ALIGN="CENTER">percent</TD>
|
---|
| 1314 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1315 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1316 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1317 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1318 | </TR>
|
---|
| 1319 | <TR><TD ALIGN="CENTER">-/CS</TD>
|
---|
| 1320 | <TD ALIGN="CENTER"><TT>abort</TT></TD>
|
---|
| 1321 | <TD ALIGN="CENTER">1/1</TD>
|
---|
| 1322 | <TD ALIGN="CENTER">ErrNo</TD>
|
---|
| 1323 | <TD ALIGN="CENTER">ErrorMsg</TD>
|
---|
| 1324 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1325 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1326 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1327 | </TR>
|
---|
| 1328 | <TR><TD ALIGN="CENTER">-/C</TD>
|
---|
| 1329 | <TD ALIGN="CENTER"><TT>backupdone</TT></TD>
|
---|
| 1330 | <TD ALIGN="CENTER">1/1</TD>
|
---|
| 1331 | <TD ALIGN="CENTER">ErrNo</TD>
|
---|
| 1332 | <TD ALIGN="CENTER">ErrorMsg</TD>
|
---|
| 1333 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1334 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1335 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1336 | </TR>
|
---|
| 1337 | <TR><TD ALIGN="CENTER"> </TD>
|
---|
| 1338 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1339 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1340 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1341 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1342 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1343 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1344 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1345 | </TR>
|
---|
| 1346 | <TR><TD ALIGN="CENTER"> </TD>
|
---|
| 1347 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1348 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1349 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1350 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1351 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1352 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1353 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1354 | </TR>
|
---|
| 1355 | <TR><TD ALIGN="CENTER"> </TD>
|
---|
| 1356 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1357 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1358 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1359 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1360 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1361 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1362 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1363 | </TR>
|
---|
| 1364 | <TR><TD ALIGN="CENTER">...</TD>
|
---|
| 1365 | <TD ALIGN="CENTER">Table</TD>
|
---|
| 1366 | <TD ALIGN="CENTER">is not</TD>
|
---|
| 1367 | <TD ALIGN="CENTER">complete</TD>
|
---|
| 1368 | <TD ALIGN="CENTER">...</TD>
|
---|
| 1369 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1370 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1371 | <TD ALIGN="CENTER"> </TD>
|
---|
| 1372 | </TR>
|
---|
| 1373 | </TABLE>
|
---|
| 1374 |
|
---|
| 1375 | <P>
|
---|
| 1376 | </TD></TR>
|
---|
| 1377 | </TABLE>
|
---|
| 1378 | </DIV><P></P>
|
---|
| 1379 | <BR>
|
---|
| 1380 |
|
---|
| 1381 | <P>
|
---|
| 1382 |
|
---|
| 1383 | <H1><A NAME="SECTION00080000000000000000">
|
---|
| 1384 | 7 Open Issues</A>
|
---|
| 1385 | </H1>
|
---|
| 1386 |
|
---|
| 1387 | <P>
|
---|
| 1388 | Here I collect all the ideas that need further analysis. Some solutions
|
---|
| 1389 | may be written here if they might have side effects to the system,
|
---|
| 1390 | I must think about. Or if I hadn't have the time to insert them at
|
---|
| 1391 | the correct place ;-)
|
---|
| 1392 |
|
---|
| 1393 | <P>
|
---|
| 1394 |
|
---|
| 1395 | <UL>
|
---|
| 1396 | <LI>How to realize the daemon for client and server side?
|
---|
| 1397 |
|
---|
| 1398 | <P>
|
---|
| 1399 | It should dock to the pipe between the GUI and the process, so it
|
---|
| 1400 | can monitor if there is something going on, and if not it can do its
|
---|
| 1401 | job.
|
---|
| 1402 |
|
---|
| 1403 | <P>
|
---|
| 1404 | If a daemon triggered backup is running, no user interaction is possible,
|
---|
| 1405 | so no mix up between two backups can happen.
|
---|
| 1406 |
|
---|
| 1407 | <P>
|
---|
| 1408 | </LI>
|
---|
| 1409 | <LI>Security
|
---|
| 1410 |
|
---|
| 1411 | <P>
|
---|
| 1412 | What should the user be allowed? Start backups? If yes, what files?
|
---|
| 1413 | Only files, he has access to, to prevent snooping system information.
|
---|
| 1414 |
|
---|
| 1415 | <P>
|
---|
| 1416 | Show contents of other backups?
|
---|
| 1417 |
|
---|
| 1418 | <P>
|
---|
| 1419 | Restore files? From which backups? To which destinations?
|
---|
| 1420 |
|
---|
| 1421 | <P>
|
---|
| 1422 | Backup to CD? Necessary rights to write there? Maybe handled by mondo.
|
---|
| 1423 |
|
---|
| 1424 | <P>
|
---|
| 1425 | Shall the client always run as root (to access all, if triggered from
|
---|
| 1426 | outside)? If yes, how assure that no unprivileged user will abuse
|
---|
| 1427 | this?
|
---|
| 1428 |
|
---|
| 1429 | <P>
|
---|
| 1430 | Shall server run as root? Server child with lower privilege? Same
|
---|
| 1431 | as user on client side - but then how to realize - user id's from
|
---|
| 1432 | client mustn't exist on server.
|
---|
| 1433 |
|
---|
| 1434 | <P>
|
---|
| 1435 | </LI>
|
---|
| 1436 | <LI>Use a secure tunnel as connection? How to establish/address tunnel?
|
---|
| 1437 | </LI>
|
---|
| 1438 | </UL>
|
---|
| 1439 |
|
---|
| 1440 | <P>
|
---|
| 1441 |
|
---|
| 1442 | <H2><A NAME="SECTION00081000000000000000">
|
---|
| 1443 | 7.1 Possible Extensions</A>
|
---|
| 1444 | </H2>
|
---|
| 1445 |
|
---|
| 1446 | <P>
|
---|
| 1447 |
|
---|
| 1448 | <UL>
|
---|
| 1449 | <LI>Wildcards for specifying which files to backup/restore
|
---|
| 1450 |
|
---|
| 1451 | <P>
|
---|
| 1452 |
|
---|
| 1453 | <UL>
|
---|
| 1454 | <LI>Step 1: Standard UNIX Expressions `*' `?' for filenames not only
|
---|
| 1455 | at the end of the name
|
---|
| 1456 | </LI>
|
---|
| 1457 | <LI>Step 2: also for directories (Q: does `/*/readme' match e.g.
|
---|
| 1458 | <BR>`/usr/local/share/packet/readme'?)
|
---|
| 1459 | </LI>
|
---|
| 1460 | <LI>Step 3: Regular Expressions (User has circumvent above question)
|
---|
| 1461 | </LI>
|
---|
| 1462 | </UL>
|
---|
| 1463 | </LI>
|
---|
| 1464 | <LI>Distinguish between restore (files are written to their old places)
|
---|
| 1465 | and extract (new destination for file(s) possible).
|
---|
| 1466 | </LI>
|
---|
| 1467 | </UL>
|
---|
| 1468 |
|
---|
| 1469 | <P>
|
---|
| 1470 |
|
---|
| 1471 | <H1><A NAME="SECTION00090000000000000000">
|
---|
| 1472 | About this document ...</A>
|
---|
| 1473 | </H1>
|
---|
| 1474 | <STRONG>Concept paper for Monitas</STRONG><P>
|
---|
| 1475 | This document was generated using the
|
---|
| 1476 | <A HREF="http://www-dsed.llnl.gov/files/programs/unix/latex2html/manual/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 99.2beta8 (1.43)
|
---|
| 1477 | <P>
|
---|
| 1478 | Copyright © 1993, 1994, 1995, 1996,
|
---|
| 1479 | <A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>,
|
---|
| 1480 | Computer Based Learning Unit, University of Leeds.
|
---|
| 1481 | <BR>
|
---|
| 1482 | Copyright © 1997, 1998, 1999,
|
---|
| 1483 | <A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>,
|
---|
| 1484 | Mathematics Department, Macquarie University, Sydney.
|
---|
| 1485 | <P>
|
---|
| 1486 | The command line arguments were: <BR>
|
---|
| 1487 | <STRONG>latex2html</STRONG> <TT>-no_subdir -split 0 -show_section_numbers /tmp/lyx_tmpdir2332Jk28dP/lyx_tmpbuf2332o2v6vO/MonitasConcepts.tex</TT>
|
---|
| 1488 | <P>
|
---|
| 1489 | The translation was initiated by Stefan on 2002-08-17
|
---|
| 1490 | <BR><HR><H4>Footnotes</H4>
|
---|
| 1491 | <DL>
|
---|
| 1492 | <DT><A NAME="foot33">... Team</A><A NAME="foot33"
|
---|
| 1493 | HREF="MonitasConcepts.html#tex2html1"><SUP>1</SUP></A>
|
---|
| 1494 | <DD>Editor of this document is Stefan Hübner <shuebner.mondo@gmx.de>.
|
---|
| 1495 | Please send comments, extensions and proposals to him.
|
---|
| 1496 |
|
---|
| 1497 |
|
---|
| 1498 | </DL><HR>
|
---|
| 1499 |
|
---|
| 1500 | <ADDRESS>
|
---|
| 1501 | Stefan
|
---|
| 1502 | 2002-08-17
|
---|
| 1503 | </ADDRESS>
|
---|
| 1504 | </BODY>
|
---|
| 1505 | </HTML>
|
---|