Changeset 1977 in MondoRescue for branches/stable/mondo/src/mondorestore
- Timestamp:
- Jun 2, 2008, 10:49:01 AM (17 years ago)
- Location:
- branches/stable/mondo/src/mondorestore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/stable/mondo/src/mondorestore/mondo-rstr-tools.c
r1939 r1977 56 56 57 57 extern void kill_anything_like_this(char *str); 58 extern int skip_obdr(void); 58 59 59 60 /** … … 72 73 mr_free(g_mondo_cfg_file); 73 74 mr_free(g_mountlist_fname); 75 mr_free(g_mondo_home); 74 76 mr_free(g_tmpfs_mountpt); 75 77 mr_free(g_isodir_device); … … 887 889 bkpinfo->use_star = TRUE; 888 890 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"); 889 897 } 890 898 … … 1786 1794 1787 1795 /** 1788 * Turn signal trapping on or off.1789 * @param on If TRUE, then do full cleanup when we receive a signal; if FALSE, then1790 * 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, 01797 };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 /**1814 1796 * malloc() and set sensible defaults for the mondorestore filename variables. 1815 1797 * @param bkpinfo The backup information structure. Fields used: … … 1895 1877 /************************************************************************** 1896 1878 *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_screen1907 (_("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 *1913 1879 **************************************************************************/ 1914 1880 … … 1941 1907 /************************************************************************** 1942 1908 *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 *1958 1909 **************************************************************************/ 1959 1910 … … 2011 1962 "/mnt/.boot.d", 5); 2012 1963 } 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 2013 1969 for (lino = mountlist->entries - 1; lino >= 0; lino--) { 2014 1970 if (!strcmp(mountlist->el[lino].mountpoint, "lvm")) { … … 2081 2037 // BERLIOS: below 32KB seems to block at least on RHAS 2.1 and MDK 10.0 2082 2038 2039 if (bkpinfo->use_obdr) { 2040 skip_obdr(); 2041 } 2083 2042 // tar -zxvf- 2084 2043 mr_asprintf(&command, -
branches/stable/mondo/src/mondorestore/mondorestore.c
r1939 r1977 3324 3324 3325 3325 extern int partition_everything(struct mountlist_itself *mountlist); 3326 3326 extern int handle_incoming_parameters(int argc, char *argv[]); 3327 3327 3328 3328 /** … … 3545 3545 c = which_restore_mode(); 3546 3546 iamhere("post wrm"); 3547 if (c == 'I' || c == ' N' || c == 'C') {3547 if (c == 'I' || c == 'C') { 3548 3548 interactively_obtain_media_parameters_from_user(FALSE); 3549 } else if (c == 'N') { 3550 // Auto mode nothing special to do 3549 3551 } else { 3550 3552 popup_and_OK("No restoring or comparing will take place today."); … … 3710 3712 } 3711 3713 } 3712 3714 3713 3715 #ifdef __FreeBSD__ 3714 3716 if (strstr … … 6398 6400 } 6399 6401 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 6410 6402 if (argc == 2 && strcmp(argv[1], "--live-grub") == 0) { 6411 6403 retval = run_grub(FALSE, "/dev/hda"); … … 6419 6411 pause_and_ask_for_cdr(5, NULL); 6420 6412 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! 6428 6450 log_msg(1, "I am in normal, live mode."); 6429 6451 log_msg(2, "FYI, MOUNTLIST_FNAME = %s", g_mountlist_fname); 6430 6452 mount_boot_if_necessary(); /* for Gentoo users */ 6431 6453 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 }6435 6454 if (bkpinfo->backup_media_type == nfs) { 6436 6455 g_restoring_live_from_nfs = TRUE; … … 6439 6458 retval = 6440 6459 restore_live_from_monitas_server(argv[2], 6441 6460 argv[3], argv[4]); 6442 6461 } else { 6443 6462 log_msg(2, "Calling restore_to_live_filesystem()"); … … 6455 6474 log_msg(1, "I must be in disaster recovery mode."); 6456 6475 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 }6461 6476 6462 6477 iamhere("About to call load_mountlist and load_raidtab"); … … 6468 6483 ("Returned from calling load_mountlist and load_raidtab successfully"); 6469 6484 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)) { 6473 6487 if (bkpinfo->backup_media_type == nfs 6474 6488 && !is_this_device_mounted(bkpinfo->nfs_mount)) { … … 6482 6496 } 6483 6497 6484 6485 6498 if (retval) { 6486 6499 log_to_screen … … 6488 6501 } 6489 6502 6490 6491 6503 log_msg(1, "Send in the clowns."); 6492 6504 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) { 6522 6507 iamhere("nuking"); 6523 6508 retval += nuke_mode(mountlist, raidlist); 6524 } else if ( argc == 2 && strcmp(argv[1], "--interactive") == 0) {6509 } else if (bkpinfo->restore_mode == interactive) { 6525 6510 iamhere("catchall"); 6526 6511 retval += catchall_mode(mountlist, raidlist); 6527 } else if ( argc == 2 && strcmp(argv[1], "--compare") == 0) {6512 } else if (bkpinfo->restore_mode == compare) { 6528 6513 iamhere("compare"); 6529 6514 retval += compare_mode(mountlist, raidlist); 6530 } else if ( argc == 2 && strcmp(argv[1], "--iso") == 0) {6515 } else if (bkpinfo->restore_mode == isoonly) { 6531 6516 iamhere("iso"); 6532 6517 retval = iso_mode(mountlist, raidlist, FALSE); 6533 } else if ( argc == 2 && strcmp(argv[1], "--mbr") == 0) {6518 } else if (bkpinfo->restore_mode == mbr) { 6534 6519 iamhere("mbr"); 6535 6520 retval = mount_all_devices(mountlist, TRUE); … … 6541 6526 log_to_screen("Failed to write Master Boot Record"); 6542 6527 } 6543 } else if ( argc == 2 && strcmp(argv[1], "--isonuke") == 0) {6528 } else if (bkpinfo->restore_mode == isonuke) { 6544 6529 iamhere("isonuke"); 6545 6530 retval = iso_mode(mountlist, raidlist, TRUE); 6546 } else if (argc != 1) {6547 log_to_screen("Invalid paremeters");6548 paranoid_MR_finish(1);6549 6531 } else { 6550 6532 iamhere("catchall (no mode specified in command-line call"); -
branches/stable/mondo/src/mondorestore/mondorestore.h
r1663 r1977 9 9 */ 10 10 char *MONDO_LOGFILE = "/var/log/mondorestore.log"; 11 char *MONDO_OPTIONS = "E:GI:J:K:QRT:UVZ:b:d:ef:gimn:op:tux:z"; 11 12 12 13 /* Busybox ps has no option and PID in first pos */
Note:
See TracChangeset
for help on using the changeset viewer.