Thanks I setup a cname for the interim which works well until I test out 
the hacked amrecover.

Looking at the diff..are you basically taking the extrapolation portion 
for the disk_regex to setup host_regex, so basically redoing the same 
procedure???

That is what I'm getting from this so far.

Don

Jean-Louis Martineau wrote:

>Hi Don,
>
>Try this patch on the client, it makes a stricker pattern by enclosing
>it in ^$
>
>Jean-Louis
>
>PS. The patch is untested.
>
>On Fri, Mar 15, 2002 at 10:35:34AM -0500, Don Potter wrote:
>
>>Being that I'm restricted to using only the name since the expresion is 
>>ported to amrestore when I do the "sethost <machine name>" is I can 
>>setup a cname for that machine (can't change the machine name since it 
>>is the mailhost) and adjust my disklist entry to reflect the cname.  And 
>>if I'm feeling really "randy" ( I always wanted to use that term in a 
>>email)...I can see about adjusting the code of amrecover to allow 
>>literal patterns as opposed to pattern matches (at least for the host 
>>portion.
>>
>>Don
>>
>>Don Potter wrote:
>>
>>>Whoops .....I forgot..but I think I have found the problem (not the 
>>>solution).  I've summized (sp???) that the amidxtaped is spawning an 
>>>amrestore and the host portion does a pattern search as opposed to a 
>>>literal search it fails  (follow my thinking):
>>>
>>>The machine I'm restoring is chg and the filesystem is /var..and when 
>>>I'm doing the amrecover it ouputs this:
>>>amrecover> add dpotter
>>>Added /mail/dpotter
>>>amrecover> extract
>>>Extracting files using tape drive /dev/rmt/0cn on host chgsfs.
>>>The following tapes are needed: Daily_10
>>>
>>>Restoring files into directory /var/adm/amanda/sbin
>>>Continue? [Y/n]: Y
>>>
>>>Load tape Daily_10 now
>>>Continue? [Y/n]: Y
>>>./mail/dpotter is not on volume
>>>set owner/mode for '.'? [yn]
>>>
>>>So at least I know that it is opening the correct index file.  Now 
>>>this is where it gets freaky, I'm only cuttin' and pastin'the tail 
>>>portion of the amrecover (since amrecover is working):
>>>amrecover: stream_client: connected to 152.3.165.105.10083
>>>amrecover: stream_client: our side is 0.0.0.0.750
>>>amrecover: try_socksize: receive buffer size is 65536
>>>Started amidxtaped with arguments "6 -h -p /dev/rmt/0cn chg ^/var$ 
>>>20020314"
>>>Exec'ing /usr/sbin/ufsrestore with arguments:
>>>       restore
>>>       xbf
>>>       2
>>>       -
>>>       /mail/dpotter
>>>
>>>Which then spawns the amidxtaped and then seems to run correctly, but 
>>>never gets past chgsfs (another machine) /var.
>>>
>>>more amidxtaped.20020315095725.debug
>>>amidxtaped: debug 1 pid 19244 ruid 9732 euid 9732 start time Fri Mar 
>>>15 09:57:25
>>>2002
>>>amidxtaped: version 2.4.2p2
>>>
>>>>SECURITY USER root
>>>>
>>>bsd security: remote host chgsfs.mc.duke.edu user root local user amanda
>>>amandahosts security check passed
>>>
>>>>6
>>>>
>>>amrestore_nargs=6
>>>
>>>>-h
>>>>-p
>>>>/dev/rmt/0cn
>>>>chg
>>>>^/var$
>>>>20020314
>>>>
>>>Ready to execv amrestore with:
>>>path = /var/adm/amanda/sbin/amrestore
>>>argv[0] = "amrestore"
>>>argv[1] = "-h"
>>>argv[2] = "-p"
>>>argv[3] = "/dev/rmt/0cn"
>>>argv[4] = "chg"  <======= Here is the kicker
>>>argv[5] = "^/var$"
>>>argv[6] = "20020314"
>>>amrestore:   0: skipping start of tape: date 20020314 label Daily_10
>>>amrestore:   1: skipping primer._export.20020314.1
>>>amrestore:   2: skipping intron._intron2.20020314.1
>>>amrestore:   3: skipping sibpair._app_oracle_product_8.0.5a.20020314.1
>>>amrestore:   4: skipping dnadoc.c0t0d0s0.20020314.1
>>>amrestore:   5: skipping pcr._pcr2.20020314.1
>>>amrestore:   6: skipping marker._var.20020314.1
>>>amrestore:   7: skipping chgsfs.c0t0d0s0.20020314.1
>>>amrestore:   8: skipping primer._usr.20020314.1
>>>amrestore:   9: skipping mitosis._var.20020314.1
>>>amrestore:  10: skipping sibpair._sibpair3.20020314.1
>>>amrestore:  11: skipping pcr._var.20020314.1
>>>amrestore:  12: skipping linkage._var.20020314.1
>>>amrestore:  13: skipping sibpair._app_oracle_product_8.1.7.20020314.1
>>>amrestore:  14: skipping wwwchg._usr.20020314.1
>>>amrestore:  15: skipping wwwchg.c0t0d0s0.20020314.1
>>>amrestore:  16: skipping locus._var.20020314.1
>>>amrestore:  17: skipping theta._var.20020314.1
>>>amrestore:  18: skipping allele._var.20020314.1
>>>amrestore:  19: skipping hybrid._var.20020314.1
>>>amrestore:  20: skipping primer._var.20020314.1
>>>amrestore:  21: skipping diploid._var.20020314.1
>>>amrestore:  22: skipping haldane._var.20020314.1
>>>amrestore:  23: skipping exon._var.20020314.1
>>>amrestore:  24: skipping weinberg._var.20020314.1
>>>amrestore:  25: skipping chimera._var.20020314.1
>>>amrestore:  26: skipping ligate._var.20020314.1
>>>amrestore:  27: skipping ligate._export_home.20020314.1
>>>amrestore:  28: skipping peptide._var.20020314.0
>>>amrestore:  29: skipping annotate._var.20020314.0
>>>amrestore:  30: skipping hybrid._export.20020314.2
>>>amrestore:  31: restoring chgsfs._var.20020314.1
>>>
>>>
>>>amrestore is my failing point..
>>>
>>>Does all that make sense????
>>>
>>>Don
>>>
>>>
>>>
>>>
>>>
>>>
>
>
>------------------------------------------------------------------------
>
>--- recover-src/extract_list.c.1       Fri Mar 15 10:53:00 2002
>+++ recover-src/extract_list.c Fri Mar 15 11:02:40 2002
>@@ -1067,6 +1067,7 @@
>     int my_port;
>     int tape_server_socket;
>     char *disk_regex = NULL;
>+    char *host_regex = NULL;
>     char *service_name = NULL;
>     char *line = NULL;
>     char *clean_datestamp, *ch, *ch1;
>@@ -1137,6 +1138,30 @@
> 
>     *ch1 = '\0';
> 
>+    host_regex = alloc(strlen(dump_hostname) * 2 + 3);
>+
>+    ch = dump_hostname;
>+    ch1 = host_regex;
>+
>+    /* we want to force amrestore to only match disk_name exactly */
>+    *(ch1++) = '^';
>+
>+    /* We need to escape some characters first... NT compatibilty crap */
>+    for (; *ch != 0; ch++, ch1++) {
>+      switch (*ch) {     /* done this way in case there are more */
>+      case '$':
>+          *(ch1++) = '\\';
>+          /* no break; we do want to fall through... */
>+      default:
>+          *ch1 = *ch;
>+      }
>+    }
>+
>+    /* we want to force amrestore to only match disk_name exactly */
>+    *(ch1++) = '$';
>+
>+    *ch1 = '\0';
>+
>     clean_datestamp = stralloc(dump_datestamp);
>     for(ch=ch1=clean_datestamp;*ch1 != '\0';ch1++) {
>       if(*ch1 != '-') {
>@@ -1158,14 +1183,15 @@
>     send_to_tape_server(tape_server_socket, "-h");
>     send_to_tape_server(tape_server_socket, "-p");
>     send_to_tape_server(tape_server_socket, dump_device_name);
>-    send_to_tape_server(tape_server_socket, dump_hostname);
>+    send_to_tape_server(tape_server_socket, host_regex);
>     send_to_tape_server(tape_server_socket, disk_regex);
>     send_to_tape_server(tape_server_socket, clean_datestamp);
> 
>     dbprintf(("Started amidxtaped with arguments \"6 -h -p %s %s %s %s\"\n",
>-            dump_device_name, dump_hostname, disk_regex, clean_datestamp));
>+            dump_device_name, host_regex, disk_regex, clean_datestamp));
> 
>     amfree(disk_regex);
>+    amfree(host_regex);
> 
>     return tape_server_socket;
> }
>
> Part 1.1
>
> Content-Type:
>
> text/plain
>
>
> ------------------------------------------------------------------------
> extract_list.c.host_regex.diff
>
> Content-Type:
>
> text/plain
>
>


Reply via email to