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