Thanks Jean...your idea works great......why hasn't this been 
incorporated previously by chance????


Don

Don Potter wrote:

> 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