Changeset 1977 in MondoRescue for branches/stable/mondo/src/mondorestore


Ignore:
Timestamp:
Jun 2, 2008, 10:49:01 AM (16 years ago)
Author:
Bruno Cornec
Message:

svn merge -r 1938:1976 $SVN_M/branches/2.2.6

Location:
branches/stable/mondo/src/mondorestore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/stable/mondo/src/mondorestore/mondo-rstr-tools.c

    r1939 r1977  
    5656
    5757extern void kill_anything_like_this(char *str);
     58extern int skip_obdr(void);
    5859
    5960/**
     
    7273    mr_free(g_mondo_cfg_file);
    7374    mr_free(g_mountlist_fname);
     75    mr_free(g_mondo_home);
    7476    mr_free(g_tmpfs_mountpt);
    7577    mr_free(g_isodir_device);
     
    887889        bkpinfo->use_star = TRUE;
    888890        mr_msg(1, "Goody! ... bkpinfo->use_star is now true.");
     891    }
     892
     893    read_cfg_var(cfg_file, "obdr", value);
     894    if (strstr(value, "yes")) {
     895        bkpinfo->use_obdr = TRUE;
     896        log_msg(1, "OBDR mode activated");
    889897    }
    890898
     
    17861794
    17871795/**
    1788  * Turn signal trapping on or off.
    1789  * @param on If TRUE, then do full cleanup when we receive a signal; if FALSE, then
    1790  * print a message and exit immediately.
    1791  */
    1792 void set_signals(int on)
    1793 {
    1794     int signals[] =
    1795         { SIGKILL, SIGPIPE, SIGTERM, SIGHUP, SIGTRAP, SIGABRT, SIGINT,
    1796         SIGSTOP, 0
    1797     };
    1798     int i;
    1799     for (i = 0; signals[i]; i++) {
    1800         if (on) {
    1801             signal(signals[i], terminate_daemon);
    1802         } else {
    1803             signal(signals[i], termination_in_progress);
    1804         }
    1805     }
    1806 }
    1807 
    1808 /**************************************************************************
    1809  *END_SET_SIGNALS                                                         *
    1810  **************************************************************************/
    1811 
    1812 
    1813 /**
    18141796 * malloc() and set sensible defaults for the mondorestore filename variables.
    18151797 * @param bkpinfo The backup information structure. Fields used:
     
    18951877/**************************************************************************
    18961878 *END_STREAMLINE_CHANGES_FILE                                             *
    1897  **************************************************************************/
    1898 
    1899 
    1900 /**
    1901  * Exit due to a signal (normal cleanup).
    1902  * @param sig The signal we're exiting due to.
    1903  */
    1904 void terminate_daemon(int sig)
    1905 {
    1906     log_to_screen
    1907         (_("Mondorestore is terminating in response to a signal from the OS"));
    1908     free_MR_global_filenames();
    1909     finish(254);
    1910 }
    1911 /**************************************************************************
    1912  *END_TERMINATE_DAEMON                                                    *
    19131879 **************************************************************************/
    19141880
     
    19411907/**************************************************************************
    19421908 *END_TWENTY_SECONDS_TIL_YIKES                                            *
    1943  **************************************************************************/
    1944 
    1945 
    1946 /**
    1947  * Exit due to a signal (no cleanup).
    1948  * @param sig The signal we're exiting due to.
    1949  */
    1950 void termination_in_progress(int sig)
    1951 {
    1952     mr_msg(1, "Termination in progress");
    1953     usleep(1000);
    1954     pthread_exit(0);
    1955 }
    1956 /**************************************************************************
    1957  *END_TERMINATION_IN_PROGRESS                                             *
    19581909 **************************************************************************/
    19591910
     
    20111962                                   "/mnt/.boot.d", 5);
    20121963    }
     1964
     1965    /* Unmounting the local /proc and /sys first */
     1966    run_program_and_log_output("umount " MNT_RESTORING "/proc",3);
     1967    run_program_and_log_output("umount " MNT_RESTORING "/sys",3);
     1968
    20131969    for (lino = mountlist->entries - 1; lino >= 0; lino--) {
    20141970        if (!strcmp(mountlist->el[lino].mountpoint, "lvm")) {
     
    20812037    // BERLIOS: below 32KB seems to block at least on RHAS 2.1 and MDK 10.0
    20822038
     2039    if (bkpinfo->use_obdr) {
     2040        skip_obdr();
     2041    }
    20832042    // tar -zxvf-
    20842043    mr_asprintf(&command,
  • branches/stable/mondo/src/mondorestore/mondorestore.c

    r1939 r1977  
    33243324
    33253325extern int partition_everything(struct mountlist_itself *mountlist);
    3326 
     3326extern int handle_incoming_parameters(int argc, char *argv[]);
    33273327
    33283328/**
     
    35453545    c = which_restore_mode();
    35463546    iamhere("post wrm");
    3547     if (c == 'I' || c == 'N' || c == 'C') {
     3547    if (c == 'I' || c == 'C') {
    35483548        interactively_obtain_media_parameters_from_user(FALSE);
     3549    } else if (c == 'N') {
     3550        // Auto mode nothing special to do
    35493551    } else {
    35503552        popup_and_OK("No restoring or comparing will take place today.");
     
    37103712        }
    37113713    }
    3712    
     3714
    37133715#ifdef __FreeBSD__
    37143716    if (strstr
     
    63986400    }
    63996401
    6400     if (argc == 3 && strcmp(argv[1], "-p") == 0) {
    6401         strcpy(bkpinfo->prefix,argv[2]);
    6402         log_msg(1,"Prefix forced to %s",bkpinfo->prefix);
    6403     }
    6404 
    6405     if (argc == 3 && strcmp(argv[1], "-K") == 0) {
    6406         g_loglevel = atoi(argv[2]);
    6407         log_msg(1,"Loglevel forced to %s",g_loglevel);
    6408     }
    6409 
    64106402    if (argc == 2 && strcmp(argv[1], "--live-grub") == 0) {
    64116403        retval = run_grub(FALSE, "/dev/hda");
     
    64196411        pause_and_ask_for_cdr(5, NULL);
    64206412        paranoid_MR_finish(0);
    6421     } else if (!bkpinfo->disaster_recovery) {   // live!
    6422         if (argc != 1) {
    6423             popup_and_OK
    6424                 ("Live mode doesn't support command-line parameters yet.");
    6425             paranoid_MR_finish(1);
    6426 //    return(1);
    6427         }
     6413    }
     6414    if ((argc == 2 && strcmp(argv[1], "--partition-only") == 0) && (bkpinfo->disaster_recovery)) {
     6415        log_msg(0, "Partitioning only.");
     6416        load_raidtab_into_raidlist(raidlist, RAIDTAB_FNAME);
     6417        strcpy(g_mountlist_fname, "/tmp/mountlist.txt");
     6418        load_mountlist(mountlist, g_mountlist_fname);
     6419        res = partition_everything(mountlist);
     6420        finish(res);
     6421    }
     6422
     6423    if ((argc == 2 && strcmp(argv[1], "--format-only") == 0) && (bkpinfo->disaster_recovery)) {
     6424        log_msg(0, "Formatting only.");
     6425        load_raidtab_into_raidlist(raidlist, RAIDTAB_FNAME);
     6426        strcpy(g_mountlist_fname, "/tmp/mountlist.txt");
     6427        load_mountlist(mountlist, g_mountlist_fname);
     6428        res = format_everything(mountlist, FALSE, raidlist);
     6429        finish(res);
     6430    }
     6431
     6432    if ((argc == 2 && strcmp(argv[1], "--stop-lvm-and-raid") == 0) && (bkpinfo->disaster_recovery)) {
     6433        log_msg(0, "Stopping LVM and RAID");
     6434        load_raidtab_into_raidlist(raidlist, RAIDTAB_FNAME);
     6435        strcpy(g_mountlist_fname, "/tmp/mountlist.txt");
     6436        load_mountlist(mountlist, g_mountlist_fname);
     6437        res = do_my_funky_lvm_stuff(TRUE, FALSE);
     6438        res += stop_all_raid_devices(mountlist);
     6439        finish(res);
     6440    }
     6441
     6442    if ((argc > 1 && strcmp(argv[argc - 1], "--live-from-cd") == 0) && (!bkpinfo->disaster_recovery)) {
     6443        g_restoring_live_from_cd = TRUE;
     6444    }
     6445
     6446    // Handle params here first
     6447    handle_incoming_parameters(argc,argv);
     6448
     6449    if (!bkpinfo->disaster_recovery) {  // live!
    64286450        log_msg(1, "I am in normal, live mode.");
    64296451        log_msg(2, "FYI, MOUNTLIST_FNAME = %s", g_mountlist_fname);
    64306452        mount_boot_if_necessary();  /* for Gentoo users */
    64316453        log_msg(2, "Still here.");
    6432         if (argc > 1 && strcmp(argv[argc - 1], "--live-from-cd") == 0) {
    6433             g_restoring_live_from_cd = TRUE;
    6434         }
    64356454        if (bkpinfo->backup_media_type == nfs) {
    64366455            g_restoring_live_from_nfs = TRUE;
     
    64396458            retval =
    64406459                restore_live_from_monitas_server(argv[2],
    6441                                                  argv[3], argv[4]);
     6460                                                argv[3], argv[4]);
    64426461        } else {
    64436462            log_msg(2, "Calling restore_to_live_filesystem()");
     
    64556474        log_msg(1, "I must be in disaster recovery mode.");
    64566475        log_msg(2, "FYI, MOUNTLIST_FNAME = %s ", g_mountlist_fname);
    6457         if (argc == 3 && strcmp(argv[1], "--monitas-memorex") == 0) {
    6458             log_to_screen("Uh, that hasn't been implemented yet.");
    6459             paranoid_MR_finish(1);
    6460         }
    64616476
    64626477        iamhere("About to call load_mountlist and load_raidtab");
     
    64686483            ("Returned from calling load_mountlist and load_raidtab successfully");
    64696484
    6470         if (argc > 1
    6471             && (strcmp(argv[1], "--compare") == 0
    6472                 || strcmp(argv[1], "--nuke") == 0)) {
     6485        // BCO:To be reviewed
     6486        if ((bkpinfo->restore_mode == compare) || (bkpinfo->restore_mode == nuke)) {
    64736487            if (bkpinfo->backup_media_type == nfs
    64746488                && !is_this_device_mounted(bkpinfo->nfs_mount)) {
     
    64826496        }
    64836497
    6484 
    64856498        if (retval) {
    64866499            log_to_screen
     
    64886501        }
    64896502
    6490 
    64916503        log_msg(1, "Send in the clowns.");
    64926504
    6493         if (argc == 2 && strcmp(argv[1], "--partition-only") == 0) {
    6494             log_msg(0, "Partitioning only.");
    6495             load_raidtab_into_raidlist(raidlist, RAIDTAB_FNAME);
    6496             strcpy(g_mountlist_fname, "/tmp/mountlist.txt");
    6497             load_mountlist(mountlist, g_mountlist_fname);
    6498             res = partition_everything(mountlist);
    6499             finish(res);
    6500         }
    6501 
    6502         if (argc == 2 && strcmp(argv[1], "--format-only") == 0) {
    6503             log_msg(0, "Formatting only.");
    6504             load_raidtab_into_raidlist(raidlist, RAIDTAB_FNAME);
    6505             strcpy(g_mountlist_fname, "/tmp/mountlist.txt");
    6506             load_mountlist(mountlist, g_mountlist_fname);
    6507             res = format_everything(mountlist, FALSE, raidlist);
    6508             finish(res);
    6509         }
    6510 
    6511         if (argc == 2 && strcmp(argv[1], "--stop-lvm-and-raid") == 0) {
    6512             log_msg(0, "Stopping LVM and RAID");
    6513             load_raidtab_into_raidlist(raidlist, RAIDTAB_FNAME);
    6514             strcpy(g_mountlist_fname, "/tmp/mountlist.txt");
    6515             load_mountlist(mountlist, g_mountlist_fname);
    6516             res = do_my_funky_lvm_stuff(TRUE, FALSE);
    6517             res += stop_all_raid_devices(mountlist);
    6518             finish(res);
    6519         }
    6520 
    6521         if (argc == 2 && strcmp(argv[1], "--nuke") == 0) {
     6505
     6506        if (bkpinfo->restore_mode == nuke) {
    65226507            iamhere("nuking");
    65236508            retval += nuke_mode(mountlist, raidlist);
    6524         } else if (argc == 2 && strcmp(argv[1], "--interactive") == 0) {
     6509        } else if (bkpinfo->restore_mode == interactive) {
    65256510            iamhere("catchall");
    65266511            retval += catchall_mode(mountlist, raidlist);
    6527         } else if (argc == 2 && strcmp(argv[1], "--compare") == 0) {
     6512        } else if (bkpinfo->restore_mode == compare) {
    65286513            iamhere("compare");
    65296514            retval += compare_mode(mountlist, raidlist);
    6530         } else if (argc == 2 && strcmp(argv[1], "--iso") == 0) {
     6515        } else if (bkpinfo->restore_mode == isoonly) {
    65316516            iamhere("iso");
    65326517            retval = iso_mode(mountlist, raidlist, FALSE);
    6533         } else if (argc == 2 && strcmp(argv[1], "--mbr") == 0) {
     6518        } else if (bkpinfo->restore_mode == mbr) {
    65346519            iamhere("mbr");
    65356520            retval = mount_all_devices(mountlist, TRUE);
     
    65416526                log_to_screen("Failed to write Master Boot Record");
    65426527            }
    6543         } else if (argc == 2 && strcmp(argv[1], "--isonuke") == 0) {
     6528        } else if (bkpinfo->restore_mode == isonuke) {
    65446529            iamhere("isonuke");
    65456530            retval = iso_mode(mountlist, raidlist, TRUE);
    6546         } else if (argc != 1) {
    6547             log_to_screen("Invalid paremeters");
    6548             paranoid_MR_finish(1);
    65496531        } else {
    65506532            iamhere("catchall (no mode specified in command-line call");
  • branches/stable/mondo/src/mondorestore/mondorestore.h

    r1663 r1977  
    99 */
    1010char *MONDO_LOGFILE = "/var/log/mondorestore.log";
     11char *MONDO_OPTIONS = "E:GI:J:K:QRT:UVZ:b:d:ef:gimn:op:tux:z";
    1112
    1213/* Busybox ps has no option and PID in first pos */
Note: See TracChangeset for help on using the changeset viewer.