source: MondoRescue/branches/stable/website/monitas/monitasconcepts.html@ 798

Last change on this file since 798 was 354, checked in by bcornec, 18 years ago

import website content + contrib + monitas doc

File size: 44.0 KB
Line 
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>
7and the Monitas Team<A NAME="tex2html1"
8HREF="#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>
14This is a proposal how to design Monitas before actually start the
15coding. Collecting the ideas here will enforce to think about the
16structure before it is realized in code that cannot be modified later.
17With a little bit of luck this allows us to enhance Monitas' functionality
18quite easy in the future. And maybe we get a good user manual as side
19effect for free.
20
21<P>
22Revision 1.x of this <I>concept</I> paper is not describing the final
23version of the <I>software</I> that will be realized. It is loosely
24based on the existing alpha version&nbsp;0.1 of Monitas and shall be a
25step by step approach towards Monitas version&nbsp;0.99. If improvements
26to Monitas v0.x and this document will be in sync, we will have a
27good documentation of the internal system structure for Monitas&nbsp;v1.0
28(and then this will be called Revision 2.0 of this document). So in
29general the major revision number of the concept paper is 1 higher
30than of the software, the minor revision numbers are both increasing
31but there is no connection between the values.
32</DIV>
33<P>
34<BR>
35
36<H2><A NAME="SECTION00010000000000000000">
37Contents</A>
38</H2>
39<!--Table of Contents-->
40
41<UL>
42<LI><A NAME="tex2html60"
43HREF="MonitasConcepts.html">Contents</A>
44<LI><A NAME="tex2html61"
45HREF="MonitasConcepts.html#SECTION00020000000000000000">1 Basics</A>
46<LI><A NAME="tex2html62"
47HREF="MonitasConcepts.html#SECTION00030000000000000000">2 Requirements for Monitas</A>
48<UL>
49<LI><A NAME="tex2html63"
50HREF="MonitasConcepts.html#SECTION00031000000000000000">2.1 Start a backup from client</A>
51<LI><A NAME="tex2html64"
52HREF="MonitasConcepts.html#SECTION00032000000000000000">2.2 Start a backup from the server</A>
53<LI><A NAME="tex2html65"
54HREF="MonitasConcepts.html#SECTION00033000000000000000">2.3 Restore a backup from client</A>
55<LI><A NAME="tex2html66"
56HREF="MonitasConcepts.html#SECTION00034000000000000000">2.4 Restore a backup from the server</A>
57<LI><A NAME="tex2html67"
58HREF="MonitasConcepts.html#SECTION00035000000000000000">2.5 Compare backup from client</A>
59<LI><A NAME="tex2html68"
60HREF="MonitasConcepts.html#SECTION00036000000000000000">2.6 Compare from the server</A>
61</UL>
62<LI><A NAME="tex2html69"
63HREF="MonitasConcepts.html#SECTION00040000000000000000">3 System structure</A>
64<LI><A NAME="tex2html70"
65HREF="MonitasConcepts.html#SECTION00050000000000000000">4 Message Flows</A>
66<UL>
67<LI><A NAME="tex2html71"
68HREF="MonitasConcepts.html#SECTION00051000000000000000">4.1 Flows between Server and Client (<I>IFcs</I> and <I>IFsc</I>)</A>
69<LI><A NAME="tex2html72"
70HREF="MonitasConcepts.html#SECTION00052000000000000000">4.2 Message Flows between Client and (Graphical)User-Interface (<I>IFcg</I>)</A>
71<LI><A NAME="tex2html73"
72HREF="MonitasConcepts.html#SECTION00053000000000000000">4.3 Message Flows between Server and (Graphical)User-Interface (<I>IFsg</I>)</A>
73<LI><A NAME="tex2html74"
74HREF="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"
77HREF="MonitasConcepts.html#SECTION00060000000000000000">5 Interfaces</A>
78<UL>
79<LI><A NAME="tex2html76"
80HREF="MonitasConcepts.html#SECTION00061000000000000000">5.1 Interface <I>Im</I> to Mondo</A>
81<LI><A NAME="tex2html77"
82HREF="MonitasConcepts.html#SECTION00062000000000000000">5.2 Interface <I>In</I> between Client and Server</A>
83<LI><A NAME="tex2html78"
84HREF="MonitasConcepts.html#SECTION00063000000000000000">5.3 Interface <I>Ipc</I>, Client's pipe to the GUI</A>
85<LI><A NAME="tex2html79"
86HREF="MonitasConcepts.html#SECTION00064000000000000000">5.4 Interface <I>Ips</I>, Server's pipe to the GUI</A>
87<LI><A NAME="tex2html80"
88HREF="MonitasConcepts.html#SECTION00065000000000000000">5.5 Interface <I>Is</I>, IPC of server instances</A>
89</UL>
90<LI><A NAME="tex2html81"
91HREF="MonitasConcepts.html#SECTION00070000000000000000">6 Commands at the GUI interfaces</A>
92<UL>
93<LI><A NAME="tex2html82"
94HREF="MonitasConcepts.html#SECTION00071000000000000000">6.1 Message Structure</A>
95<LI><A NAME="tex2html83"
96HREF="MonitasConcepts.html#SECTION00072000000000000000">6.2 Implementation Detail</A>
97<LI><A NAME="tex2html84"
98HREF="MonitasConcepts.html#SECTION00073000000000000000">6.3 Defined Commands</A>
99</UL>
100<LI><A NAME="tex2html85"
101HREF="MonitasConcepts.html#SECTION00080000000000000000">7 Open Issues</A>
102<UL>
103<LI><A NAME="tex2html86"
104HREF="MonitasConcepts.html#SECTION00081000000000000000">7.1 Possible Extensions</A>
105</UL>
106<LI><A NAME="tex2html87"
107HREF="MonitasConcepts.html#SECTION00090000000000000000">About this document ...</A>
108</UL>
109<!--End of Table of Contents-->
110
111<P>
112
113<H1><A NAME="SECTION00020000000000000000">
1141 Basics</A>
115</H1>
116
117<P>
118Monitas is an extension to mondo/mindi to deal with remote backups
119between TCP/IP connected PCs. Monitas consists of two logical parts:
120a <I>&#34;client&#34;</I> that resides on the PC where the
121files (to backup/restore) are and a <I>&#34;server&#34;</I>
122on another (or the same) PC where the backup is stored.
123
124<P>
125The 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>
129Both together, server and client, will handle the backup and restore
130process in the background. Each is controlled via a pipe to send commands
131and to get status information back (error messages, progress information).
132Though it is possible to trigger the backup/restore process with these
133interfaces, they are mainly designed for graphical (or text based)
134front-ends which can dock there to control the process and interact
135with the user. These front-ends aren't described here, but the syntax
136and semantics of the interfaces.
137
138<P>
139We use a 1:<I>n</I> relation between the server and several clients
140on different PCs. That means there exists only one central server
141that serves all the clients out there.
142
143<P>
144Even if this document distinguishes between <I>server</I> and <I>client</I>
145and the different roles they play for the backup process, it is possible
146that both parts use the same executable as both parts have much code
147in common. Like <I>gzip</I>, which is compressing when executed as
148<TT>gzip</TT> and decompressing when executed as <TT>gunzip</TT>,
149Monitas will run as server when executed as <TT>monitas_server</TT>
150and 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>
1562 Requirements for Monitas
157</H1>
158
159<P>
160This chapter contains the basic requirements for the client and the
161server part of Monitas.
162
163<P>
164
165<H2><A NAME="SECTION00031000000000000000">
1662.1 Start a backup from client</A>
167</H2>
168
169<P>
170Necessary 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">
1882.2 Start a backup from the server</A>
189</H2>
190
191<P>
192Necessary 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">
2122.3 Restore a backup from client</A>
213</H2>
214
215<P>
216Necessary 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">
2302.4 Restore a backup from the server</A>
231</H2>
232
233<P>
234Necessary 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">
2502.5 Compare backup from client</A>
251</H2>
252
253<P>
254There are 2 reasons for a compares
255
256<P>
257&nbsp;&nbsp;a) to guarantee the correct backup (``<I>verify</I>'')
258
259<P>
260&nbsp;&nbsp;b) to find modifications of files since the last backup (``<I>compare</I>'')
261
262<P>
263In 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
265values of every original file and its backuped counterpart and compare
266the hashes (less network traffic).
267
268<P>
269To distinguish the different intentions, we call the comparison a)
270<I>Verify</I> as it's normally started directly after a backup, and
271call the case b) <I>Compare</I> as it is triggered to recognize modifications
272(perhaps to generate an incremental backup).
273
274<P>
275Necessary 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
285files in the backup]
286</LI>
287</OL>
288
289<P>
290
291<H2><A NAME="SECTION00036000000000000000">
2922.6 Compare from the server</A>
293</H2>
294
295<P>
296Necessary 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
306sub-chapter]
307</LI>
308<LI>files to compare [mode b) only; mode a) always compares all files
309in the backup]
310</LI>
311</OL>
312
313<P>
314
315<H1><A NAME="SECTION00040000000000000000"></A><A NAME="sec:SystemStructure"></A>
316<BR>
3173 System structure
318</H1>
319
320<P>
321Figure&nbsp;<A HREF="MonitasConcepts.html#fig:SystemStructure">3.1</A> gives an overview about the general
322structure of Monitas. Monitas' functionality is mainly split into
3232 independent parts: a <I>client</I> component on the PC where files
324are backuped or restored, and a <I>server</I> component to write the
325backup on an external medium or read previous backups from an external
326medium.
327
328<P>
329Both parts base on mondo/mindi for accessing files, doing (de)compression,
330creating 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>
338System structure</CAPTION>
339<TR><TD>
340<DIV ALIGN="CENTER"><!-- MATH
341$resizebox*{0.8columnwidth}{!}{includegraphics{diagrams/systemoverview.eps}}$
342-->
343<IMG
344WIDTH="444" HEIGHT="315" ALIGN="BOTTOM" BORDER="0"
345SRC="img1.png"
346ALT="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>
357At startup, a client connects to the server process to establish the
358connection: The client uses a predefined (``well known'') port
359where the server is listening. When receiving a message at this port
360the server duplicates itself by using the system call <TT>fork()</TT>
361or <TT>clone()</TT>. The child process will serve the connecting client
362on a new allocated port and the parent process will continue waiting
363for further clients.
364
365<P>
366By that mechanism we need only one predefined port number and only
367on the server PC. Details in the next chapter.
368
369<P>
370
371<H1><A NAME="SECTION00050000000000000000">
3724 Message Flows</A>
373</H1>
374
375<P>
376This chapter describes the information flow between Monitas' structural
377parts. The flows are designed to fulfill the requirements of chapter&nbsp;<A HREF="MonitasConcepts.html#sec:Requirements">2</A>.
378
379<P>
380
381<H2><A NAME="SECTION00051000000000000000">
3824.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">
3884.1.1 Connection Establishment</A>
389</H3>
390
391<P>
392Before any backup/restore can start, <I>client</I> and <I>server</I>
393must introduce each other. This message flow between (each) client
394process and the server (parent) process only takes place when a client
395process is started. The client calls the server to tell him &#34;Here
396am I&#34; whereupon the server is doubling itself via the <TT>fork()</TT>
397system call. The new created child of the server process will serve
398the new connected client from now on, while the parent process of
399the server continues waiting for other clients to connect. The connecting
400procedure is shown in Figure&nbsp;<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>
408A 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
414WIDTH="437" HEIGHT="480" ALIGN="BOTTOM" BORDER="0"
415SRC="img2.png"
416ALT="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">
4274.1.2 Backup and Restore Process</A>
428</H3>
429
430<P>
431The backup and restore procedures are handled between the client and
432its corresponding child of the server process. Both, backup and restore
433may be triggered from server or from client side. The message flow
434between server and client for the backup process is shown in Figure&nbsp;<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>
442Message 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
448WIDTH="434" HEIGHT="608" ALIGN="BOTTOM" BORDER="0"
449SRC="img3.png"
450ALT="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>
459The restore procedure shown in Figure&nbsp;<A HREF="MonitasConcepts.html#fig:RestoreClientServer">4.3</A>
460is very similar. It may be triggered either from server or from client
461side, 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>
469Message 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
475WIDTH="433" HEIGHT="657" ALIGN="BOTTOM" BORDER="0"
476SRC="img4.png"
477ALT="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">
4884.1.3 Connection Termination</A>
489</H3>
490
491<P>
492When a client has done its job or some errors occurred (or maybe the
493server wants to stop running or ...) the connection can be shutdown
494in the way that Figure&nbsp;<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>
502Terminating the connection between
503server and client</CAPTION>
504<TR><TD>
505<DIV ALIGN="CENTER"><!-- MATH
506$resizebox*{0.8columnwidth}{!}{includegraphics{diagrams/disconnect_client_server.eps}}$
507-->
508<IMG
509WIDTH="433" HEIGHT="668" ALIGN="BOTTOM" BORDER="0"
510SRC="img5.png"
511ALT="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">
5224.1.4 List backups</A>
523</H3>
524
525<P>
526Before restoring files, a client can inquire the server which backups
527are available. Since there are several locations where the server
528may store a backup (on CD, in local file(s), (in the future: in a
529database,) ...) the client can use the message flow defined
530in Figure&nbsp;<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>
539Get list of accessible backups
540from server</CAPTION>
541<TR><TD>
542<DIV ALIGN="CENTER"><!-- MATH
543$resizebox*{0.8columnwidth}{!}{includegraphics{diagrams/list_backups_client_server.eps}}$
544-->
545<IMG
546WIDTH="434" HEIGHT="246" ALIGN="BOTTOM" BORDER="0"
547SRC="img6.png"
548ALT="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">
5594.1.5 List content of a backup</A>
560</H3>
561
562<P>
563When doing a <I>nuke restore</I> it's sufficient to address a total
564backup. But in all other cases you want to know which files are in
565the backup, what their sizes, modification dates are and what other
566info is available. To inquire the content of a specific backup file,
567the client uses the flows in Figure&nbsp;<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>
575Get content of a specific
576backup 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
582WIDTH="434" HEIGHT="246" ALIGN="BOTTOM" BORDER="0"
583SRC="img7.png"
584ALT="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>
5964.2 Message Flows between Client and (Graphical)User-Interface (<I>IFcg</I>)
597</H2>
598
599<P>
600To interact with the client process running silently in the background,
601the 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>
605The messages sent through the pipe are text based commands, so the
606most primitive user interface will be a console with I/O redirect
607to the pipe.
608
609<P>
610The predefined commands are shown in Chapter&nbsp;<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>
6164.2.1 (Re-)Connect to a server
617</H3>
618
619<P>
620Figure&nbsp;<A HREF="MonitasConcepts.html#fig:GuiClientConnect">4.7</A> shows how the connection between
621a client and the server is established from the Client GUI. If there
622exists a previous connection, that connection is closed before building
623up the new one, as every client can be connected to <I>one</I> server
624only 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>
632Enable 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
638WIDTH="438" HEIGHT="278" ALIGN="BOTTOM" BORDER="0"
639SRC="img8.png"
640ALT="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">
6514.2.2 Start a Backup</A>
652</H3>
653
654<P>
655When starting a backup, the client needs to know which files to backup
656and 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,...).
659The message flow is in Figure&nbsp;<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>
667Start 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
673WIDTH="434" HEIGHT="368" ALIGN="BOTTOM" BORDER="0"
674SRC="img9.png"
675ALT="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">
6864.2.3 Start a Restore</A>
687</H3>
688
689<P>
690If a client knows (by other procedures, see chapter&nbsp;<A HREF="MonitasConcepts.html#sec:GuiClientListBackups">4.2.4</A>
691and <A HREF="MonitasConcepts.html#sec:GuiClientListBackupContent">4.2.5</A>) that a certain backup exists
692on the server (and the client may access it), it can start restoring
693specified files like shown in Figure&nbsp;<A HREF="MonitasConcepts.html#fig:GuiClientRestore">4.9</A>.
694The files can be addressed by their exact path/name (as stored in
695the backup) or as wildcards (path/* or path/name* - may be extended
696in 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>
704Start 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
710WIDTH="430" HEIGHT="440" ALIGN="BOTTOM" BORDER="0"
711SRC="img10.png"
712ALT="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>
7244.2.4 Get list of previous, accessible Backups
725</H3>
726
727<P>
728To get a list of available backups the client must ask the server
729which are available (maybe specific to the requesting client/user).
730The message flow is in Figure&nbsp;<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>
738Ask 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
744WIDTH="433" HEIGHT="187" ALIGN="BOTTOM" BORDER="0"
745SRC="img11.png"
746ALT="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>
7584.2.5 Get content (files) of a specified Backup
759</H3>
760
761<P>
762The client knows (maybe via the flow in Chapter&nbsp;<A HREF="MonitasConcepts.html#sec:GuiClientListBackups">4.2.4</A>)
763which backup(s) are available at the server. To view the content (the
764file names, -sizes,...) of a specific backup the client can
765ask the server to deliver this information. The message flow is shown
766in Figure&nbsp;<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>
774Ask Server for the content
775of 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
781WIDTH="433" HEIGHT="187" ALIGN="BOTTOM" BORDER="0"
782SRC="img12.png"
783ALT="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">
7944.2.6 Start a Verify</A>
795</H3>
796
797<P>
798&lt;to be defined&gt;
799
800<P>
801
802<H3><A NAME="SECTION00052700000000000000">
8034.2.7 Start a Compare</A>
804</H3>
805
806<P>
807&lt;to be defined&gt;
808
809<P>
810
811<H3><A NAME="SECTION00052800000000000000">
8124.2.8 Terminate Client</A>
813</H3>
814
815<P>
816It doesn't make sense to close the client-server connection without
817terminating the client. Either the client must be connected to another
818server (procedure see chapter&nbsp;<A HREF="MonitasConcepts.html#sec:GuiClientConnect">4.2.1</A>) if it
819shall do other backups/restores or the client just keeps connected
820to the same server (so no changes are necessary :-). Nevertheless
821if the client has done its job, it must be shutdown but that concerns
822both, the connection and the client . This procedure is shown in Figure&nbsp;<A HREF="MonitasConcepts.html#fig:GuiClientTerminate">4.12</A>.
823
824<P>
825Of course you can simply close the GUI of the client. But this won't
826have 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>
834Terminate the client</CAPTION>
835<TR><TD>
836<DIV ALIGN="CENTER"><!-- MATH
837$resizebox*{0.8columnwidth}{!}{includegraphics{diagrams/terminate_GUI_client.eps}}$
838-->
839<IMG
840WIDTH="434" HEIGHT="257" ALIGN="BOTTOM" BORDER="0"
841SRC="img13.png"
842ALT="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">
8534.3 Message Flows between Server and (Graphical)User-Interface (<I>IFsg</I>)</A>
854</H2>
855
856<P>
857&lt;to be defined&gt; 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
863from 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
870to 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">
8834.4 Message Flows between Server and its Child (<I>IFss</I> and <I>IFsm</I>)</A>
884</H2>
885
886<P>
887&lt;to be defined&gt; Ideas:
888
889<P>
890<DL>
891<DT><STRONG>GetClientInfo</STRONG></DT>
892<DD>Server asks server child for info about the connection
893to 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
900it will terminate now.
901</DD>
902<DT><STRONG>N.N.</STRONG></DT>
903<DD>All backup/verify/compare/restore procedures that are requested
904to the server, but must be executed from a server's child.
905</DD>
906</DL>
907
908<P>
909
910<H1><A NAME="SECTION00060000000000000000">
9115 Interfaces</A>
912</H1>
913
914<P>
915Figure&nbsp;<A HREF="MonitasConcepts.html#fig:SystemStructure">3.1</A> in Section&nbsp;<A HREF="MonitasConcepts.html#sec:SystemStructure">3</A>
916(System Structure) names the defined interfaces in respect of their
917location. E.g. the interface between the server and the client is
918called <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
920is continued in the software, but of course the 2 parts must fit together
921to transmit the information.
922
923<P>
924To describe this common part (e.g. the format of the data structures)
925we introduce a second naming scheme here that denominates the matter
926inbetween. These names are used in the sources, too. So pay attention
927to understand the difference: The common parts of the interfaces are
928named <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>
935Interfaces</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> (&#34;Mondo&#34;)</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> (&#34;Network&#34;)</TD>
944<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=325>client and server, <I>IFcs &lt;-&gt;</I> <I>IFsc</I></TD>
945</TR>
946<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=175><I>Ipc</I> (&#34;Pipe in Client&#34;)</TD>
947<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=325>client to GUI, <I>IFcg &lt;-&gt;</I> external</TD>
948</TR>
949<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=175><I>Ips</I> (&#34;Pipe in Server&#34;)</TD>
950<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=325>server to GUI, <I>IFsg</I> &lt;-&gt; external</TD>
951</TR>
952<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=175><I>Is</I> (&#34;Server interprocess&#34;)</TD>
953<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=325>Server's parent instance with the child instances, <I>IFss</I> &lt;-&gt;
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">
9675.1 Interface <I>Im</I> to Mondo</A>
968</H2>
969
970<P>
971&lt;to be defined&gt;
972
973<P>
974
975<H3><A NAME="SECTION00061100000000000000">
9765.1.1 <I>Im</I> in Server</A>
977</H3>
978
979<P>
980
981<H3><A NAME="SECTION00061200000000000000">
9825.1.2 <I>Im</I> in Client</A>
983</H3>
984
985<P>
986
987<H2><A NAME="SECTION00062000000000000000">
9885.2 Interface <I>In</I> between Client and Server</A>
989</H2>
990
991<P>
992&lt;to be defined&gt;
993
994<P>
995
996<H2><A NAME="SECTION00063000000000000000">
9975.3 Interface <I>Ipc</I>, Client's pipe to the GUI</A>
998</H2>
999
1000<P>
1001&lt;to be defined&gt;
1002
1003<P>
1004
1005<H2><A NAME="SECTION00064000000000000000">
10065.4 Interface <I>Ips</I>, Server's pipe to the GUI</A>
1007</H2>
1008
1009<P>
1010&lt;to be defined&gt;
1011
1012<P>
1013
1014<H2><A NAME="SECTION00065000000000000000">
10155.5 Interface <I>Is</I>, IPC of server instances</A>
1016</H2>
1017
1018<P>
1019&lt;to be defined&gt;
1020
1021<P>
1022
1023<H1><A NAME="SECTION00070000000000000000"></A><A NAME="sec:GuiCommands"></A>
1024<BR>
10256 Commands at the GUI interfaces
1026</H1>
1027
1028<P>
1029To interact from a Graphical User Interface (GUI) to the server or
1030client process running locally, silently in the background, every
1031client and the server (parent process) sets up a named pipe when it
1032starts. A Graphical User Interface (GUI) can dock to that pipe and
1033control the client/server.
1034
1035<P>
1036If not otherwise specified, the server's pipe is <TT>/var/run/monitas/server</TT>
1037and a client's pipe is <TT>/var/run/monitas/client_<I>nnn</I></TT>
1038with <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>
1042i.e. 12-digits IP address, dash, 5-digits port of the server's child
1043for that connection).
1044
1045<P>
1046This allows us to run more than one client on a PC (maybe more than
10471 user is logged in) that can be connected to the same server (IP
1048address) with different ports (server's child's port number) or to
1049different servers (different IP addresses). Only one server per PC
1050is allowed, but it can handle several connections in parallel (by
1051several child processes). In most cases, the backup medium is a very
1052limiting resource (only 1, 2... CD-Writer, Tape-Streamer, Database,
1053...) that can be managed much easier by one central instance.
1054Otherwise we had to expand the resource management (that is already
1055necessary between parent server and child processes) with more danger
1056to run into dead-locks, race-conditions and other difficult-to-debug
1057stuff.
1058
1059<P>
1060If not denoted otherwise, the description in this chapter is valid
1061for the messages at the client GUI <I>and</I> the messages at the
1062server GUI.
1063
1064<P>
1065
1066<H2><A NAME="SECTION00071000000000000000">
10676.1 Message Structure</A>
1068</H2>
1069
1070<P>
1071The messages sent through the pipe are text based commands, so the
1072most primitive user interface will be a console with I/O redirect
1073to the pipe.
1074
1075<P>
1076The used semantic is:
1077
1078<P>
1079<TT>COMMAND [ARG [...]]&#92;n</TT>
1080
1081<P>
1082where
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
1090number of mandatory arguments (some command additional might have
1091optional arguments)
1092</LI>
1093<LI>COMMAND and ARG is separated by one space (&nbsp;)
1094</LI>
1095<LI>ARGs are separated by one space (&nbsp;)
1096</LI>
1097<LI>ARGs contain of at least one printable character and/or whitespace
1098([ &#92;t&#92;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(&#92;) for their literal meaning:
1104
1105<P>
1106
1107<UL>
1108<LI>[&#92;']for literal single quote (')
1109</LI>
1110<LI>[&#92;&#92;]for the backslash (&#92;)
1111itself
1112</LI>
1113</UL>to use &lt;c:&#92;stefan's ``quote''> as one argument
1114use <TT>'c:&#92;&#92;stefan&#92;'s&nbsp;``quote'''</TT>
1115
1116<P>
1117</LI>
1118<LI>inside ``...'' you must not use the double quote character
1119(``)!
1120<BR>
1121There is no escape sequence defined for a literal meaning! Surprised?
1122But this kind of definition allows us to use the ARG &lt;c:&#92;hugo&nbsp;rabson's&nbsp;dir&#92;file.c&gt;
1123without further modification by simply surrounding it with double
1124quotes: <TT>``c:&#92;hugo&nbsp;rabson's&nbsp;dir&#92;file.c''</TT>
1125</LI>
1126<LI>if the ARG itself shall begin with a double quote (``) or single
1127quote (') then quote the whole argument with '...' (and escape
1128the ' at the beginning).
1129</LI>
1130<LI>if the ARG doesn't contain spaces but contains any quote character(s),
1131you needn't do anything
1132</LI>
1133<LI>COMMAND line is terminated by a newline character('&#92;n'),
1134an optional ASCII-Null ('&#92;0') can follow
1135</LI>
1136</UL>
1137Possible, future extension:
1138
1139<P>
1140
1141<UL>
1142<LI>Using '&#92;0' instead of '&nbsp;' to separate ARGs (and COMMAND)
1143will dispense with the nasty space quoting. The end of the command
1144line is then marked by two '&#92;0' instead of '&#92;n'.
1145To distinguish between old and new syntax, the client can look at
1146the first character behind the COMMAND: if it's a '&#92;0'
1147the GUI uses the new syntax and all responses to the COMMAND use the
1148new syntax, too. If the character is a space '&nbsp;' or newline '&#92;n'
1149we answer in old (above described) syntax and must pay attention to
1150the quoting
1151</LI>
1152</UL>
1153
1154<P>
1155
1156<H2><A NAME="SECTION00072000000000000000">
11576.2 Implementation Detail</A>
1158</H2>
1159
1160<P>
1161There is much work that is common to all the pipe interfaces that
1162use text based messages: extract the command, calculate the number
1163of mandatory parameters, split the arguments, parse for escape sequences,
1164check if an arguments fits the requested type (e.g. filename, IP address,
1165port number,... ), translate the textual argument into its machine
1166readable format, ... And equivalent steps are necessary when
1167we want to create and send a message. And different commands use the
1168same argument types that always must be parsed and checked in the
1169same way.
1170
1171<P>
1172At the moment the extent of the complete command set cannot be given,
1173so it would be the best to keep yet unknown extensions in mind and
1174implement 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
1181server/client commands?])
1182</LI>
1183<LI>each ``command'' entry contains the number of mandatory and optional
1184arguments
1185</LI>
1186<LI>each argument refers to a predefined type (not only <I>int</I>, <I>string</I>
1187but of finer granularity like <I>filename</I>, <I>dirname</I>, <I>devicename</I>,
1188<I>backupname</I>, <I>portnumber</I>, ...) that can be generated
1189and checked for validity by generic routines.
1190</LI>
1191</UL>
1192The tables can easily be extended and new commands can introduced
1193with less effort by reusing existing subroutines for the argument
1194handling. (B.t.w. the table contains all information that is necessary
1195for an generic help function to each defined message.) Of course this
1196only concerns the interface handling, not the new functionality. But
1197why reinvent the wheel twice?
1198
1199<P>
1200
1201<H2><A NAME="SECTION00073000000000000000">
12026.3 Defined Commands</A>
1203</H2>
1204
1205<P>
1206Table&nbsp;<A HREF="#tab:GuiCommands">6.1</A> shows the defined commands to the GUI.
1207
1208<P>
1209Currently there are only the messages from Figure&nbsp;<A HREF="MonitasConcepts.html#fig:GuiClientConnect">4.7</A>
1210and <A HREF="MonitasConcepts.html#fig:GuiClientBackup">4.8</A> entered in this table. But we recognize
1211that the messages <TT>notconnected</TT>, <TT>abort</TT> and <TT>backupdone</TT>
1212serve the same purpose. We should think about, if we want a streamline
1213small interface (replace the 3 messages by one) or accept the redundancy.
1214Perhaps that depends on the connected GUI. A simple command line interface
1215(that transfers the messages transparently to the user) benefits from
1216the different message names, a graphical user interface on the other
1217side must join the different messages to the same ``Not Done! Error''
1218requestor.
1219
1220<P>
1221<BR><P></P>
1222<DIV ALIGN="CENTER"><A NAME="476"></A>
1223<TABLE>
1224<CAPTION><STRONG>Table 6.1:</STRONG>
1225Commands 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>&nbsp; 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">&nbsp;</TD>
1242<TD ALIGN="CENTER">&nbsp;</TD>
1243<TD ALIGN="CENTER">&nbsp;</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">&nbsp;</TD>
1251<TD ALIGN="CENTER">&nbsp;</TD>
1252<TD ALIGN="CENTER">&nbsp;</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">&nbsp;</TD>
1258<TD ALIGN="CENTER">&nbsp;</TD>
1259<TD ALIGN="CENTER">&nbsp;</TD>
1260<TD ALIGN="CENTER">&nbsp;</TD>
1261<TD ALIGN="CENTER">&nbsp;</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">&nbsp;</TD>
1269<TD ALIGN="CENTER">&nbsp;</TD>
1270<TD ALIGN="CENTER">&nbsp;</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">&nbsp;</TD>
1286<TD ALIGN="CENTER">&nbsp;</TD>
1287<TD ALIGN="CENTER">&nbsp;</TD>
1288<TD ALIGN="CENTER">&nbsp;</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">&nbsp;</TD>
1296<TD ALIGN="CENTER">&nbsp;</TD>
1297<TD ALIGN="CENTER">&nbsp;</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">&nbsp;</TD>
1305<TD ALIGN="CENTER">&nbsp;</TD>
1306<TD ALIGN="CENTER">&nbsp;</TD>
1307</TR>
1308<TR><TD ALIGN="CENTER">&nbsp;</TD>
1309<TD ALIGN="CENTER">&nbsp;</TD>
1310<TD ALIGN="CENTER">&nbsp;</TD>
1311<TD ALIGN="CENTER">&nbsp;</TD>
1312<TD ALIGN="CENTER">&nbsp;</TD>
1313<TD ALIGN="CENTER">&nbsp;</TD>
1314<TD ALIGN="CENTER">&nbsp;</TD>
1315<TD ALIGN="CENTER">&nbsp;</TD>
1316</TR>
1317<TR><TD ALIGN="CENTER">&nbsp;</TD>
1318<TD ALIGN="CENTER">&nbsp;</TD>
1319<TD ALIGN="CENTER">&nbsp;</TD>
1320<TD ALIGN="CENTER">&nbsp;</TD>
1321<TD ALIGN="CENTER">&nbsp;</TD>
1322<TD ALIGN="CENTER">&nbsp;</TD>
1323<TD ALIGN="CENTER">&nbsp;</TD>
1324<TD ALIGN="CENTER">&nbsp;</TD>
1325</TR>
1326<TR><TD ALIGN="CENTER">&nbsp;</TD>
1327<TD ALIGN="CENTER">&nbsp;</TD>
1328<TD ALIGN="CENTER">&nbsp;</TD>
1329<TD ALIGN="CENTER">&nbsp;</TD>
1330<TD ALIGN="CENTER">&nbsp;</TD>
1331<TD ALIGN="CENTER">&nbsp;</TD>
1332<TD ALIGN="CENTER">&nbsp;</TD>
1333<TD ALIGN="CENTER">&nbsp;</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">&nbsp;</TD>
1341<TD ALIGN="CENTER">&nbsp;</TD>
1342<TD ALIGN="CENTER">&nbsp;</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">
13557 Open Issues</A>
1356</H1>
1357
1358<P>
1359Here I collect all the ideas that need further analysis. Some solutions
1360may be written here if they might have side effects to the system,
1361I must think about. Or if I hadn't have the time to insert them at
1362the correct place ;-)
1363
1364<P>
1365
1366<UL>
1367<LI>How to realize the daemon for client and server side?
1368
1369<P>
1370It should dock to the pipe between the GUI and the process, so it
1371can monitor if there is something going on, and if not it can do its
1372job.
1373
1374<P>
1375If a daemon triggered backup is running, no user interaction is possible,
1376so no mix up between two backups can happen.
1377
1378<P>
1379</LI>
1380<LI>Security
1381
1382<P>
1383What should the user be allowed? Start backups? If yes, what files?
1384Only files, he has access to, to prevent snooping system information.
1385
1386<P>
1387Show contents of other backups?
1388
1389<P>
1390Restore files? From which backups? To which destinations?
1391
1392<P>
1393Backup to CD? Necessary rights to write there? Maybe handled by mondo.
1394
1395<P>
1396Shall the client always run as root (to access all, if triggered from
1397outside)? If yes, how assure that no unprivileged user will abuse
1398this?
1399
1400<P>
1401Shall server run as root? Server child with lower privilege? Same
1402as user on client side - but then how to realize - user id's from
1403client 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">
14147.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
1426at 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)
1436and extract (new destination for file(s) possible).
1437</LI>
1438</UL>
1439
1440<P>
1441
1442<H1><A NAME="SECTION00090000000000000000">
1443About this document ...</A>
1444</H1>
1445<STRONG>Concept paper for Monitas</STRONG><P>
1446This 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>
1449Copyright &#169; 1993, 1994, 1995, 1996,
1450<A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>,
1451Computer Based Learning Unit, University of Leeds.
1452<BR>
1453Copyright &#169; 1997, 1998, 1999,
1454<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>,
1455Mathematics Department, Macquarie University, Sydney.
1456<P>
1457The 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>
1460The 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"
1464HREF="MonitasConcepts.html#tex2html1"><SUP>1</SUP></A>
1465<DD>Editor of this document is Stefan Hübner &lt;shuebner.mondo@gmx.de&gt;.
1466Please send comments, extensions and proposals to him.
1467
1468
1469</DL><HR>
1470
1471<ADDRESS>
1472Stefan
14732002-08-17
1474</ADDRESS>
1475</BODY>
1476</HTML>
Note: See TracBrowser for help on using the repository browser.