Changeset 1902 in MondoRescue
- Timestamp:
- Apr 9, 2008, 12:05:24 AM (17 years ago)
- Location:
- branches/2.2.6
- Files:
-
- 1 deleted
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.2.6/mindi/deplist.txt
r1840 r1902 27 27 fstab raidtab modules.conf conf.modules mondorestore modules.conf.local 28 28 /etc/mdadm/mdadm.conf /etc/mdadm.conf 29 /sbin/ldconfig 29 30 afio star ntfsclone parted ms-sys file getfattr setfattr getfacl setfacl 30 31 buffer … … 56 57 57 58 # For Debug mode 58 # gdb 59 # gdb valgrind /usr/lib/valgrind 59 60 60 61 #----------------- For all you LVM users out there, much love ----------------- -
branches/2.2.6/mindi/mindi
r1901 r1902 141 141 AddFileToCfgIfExists() { 142 142 [ -e "$1" ] && echo -en "$2 `cat $1`\n" >> $3 143 }144 145 146 AddFileToDir() {147 local filename minidir_root noof_disks diskno res filesize would_occupy zipsize complevel cutoff compressed_fname siz148 filename=$1149 minidir_root=$2150 noof_disks=$3151 152 diskno=$noof_disks153 mkdir -p $minidir_root/$diskno154 [ "$LAST_COMPRESSED_SIZE" = "" ] && LAST_COMPRESSED_SIZE=0155 if [ ! -e "$filename" ] ; then156 if [ -h "$filename" ] ; then157 cp --parents -pRdf $filename $minidir_root/$diskno 2>> $LOGFILE158 return $noof_disks159 else160 Die "AddFileToDir asked me to add $filename, which does not exist. Oops! Did you run out of disk space or is your Linux distro severely broken?"161 fi162 fi163 164 # move to the disk that has room on it (or end up using the last, if all full)165 while [ "$diskno" -lt $MAX_DISKS ] ; do166 mkdir -p $minidir_root/$diskno167 filesize=`du -sk $filename | cut -f1`168 cp --parents -Rdf $filename $minidir_root/$diskno 2>> $LOGFILE169 if [ "$filesize" -le "4" ] ; then170 siz=$filesize171 elif [ ! -f "$filename" ] ; then172 siz=0173 else174 siz=`grep -m 1 "$filename.gz$" $minidir_root/compressed/compressed.txt | cut -f1`175 [ "$siz" = "" ] && Die "FIXME - can't find $filename's size."176 siz=$(($siz-2));# to allow for sectors & the fact that they round up177 fi178 [ ! "$siz" ] && siz=4179 [ "$siz" -lt "0" ] && siz=0180 LAST_COMPRESSED_SIZE=$(($LAST_COMPRESSED_SIZE+$siz))181 [ "$LAST_COMPRESSED_SIZE" -le "$MAX_COMPRESSED_SIZE" ] &&return $diskno182 echo "disk=$diskno siz=$LAST_COMPRESSED_SIZE" >> $LOGFILE183 LAST_COMPRESSED_SIZE=0184 rm -f $minidir_root/$diskno/$filename185 diskno=$(($diskno+1))186 done187 return 0 ; # failed188 143 } 189 144 … … 377 332 done 378 333 echo $r 379 }380 381 382 CreateDataDiskImagesFromTarballs() {383 local tardir outdir diskno noof_disks kp384 tardir=$1385 outdir=$2386 noof_disks=$3387 388 mkdir -p $outdir389 diskno=1390 echo -en "Creating data disk "391 while [ "$diskno" -le "$noof_disks" ] ; do392 echo -en "#$diskno..."393 cp -f $tardir/$diskno.tar.gz $outdir 2>> $LOGFILE || LogIt "[line 424] Cannot copy $tardir/$diskno.tar.gz to $outdir"394 CreateOneDataDiskImage $tardir/$diskno.tar.gz $outdir/mindi-data-$diskno.img $diskno $noof_disks395 diskno=$(($diskno+1))396 done397 mv -f $tardir/all.tar.gz $outdir398 du -sk $outdir/*gz >> $LOGFILE399 echo -e "$DONE"400 }401 402 403 404 CreateOneDataDiskImage() {405 local tarball imagefile dev diskno noof_disks mountpoint406 tarball=$1407 imagefile=$2408 diskno=$3409 noof_disks=$4410 411 mountpoint=$MINDI_TMP/mountpoint.$$412 mkdir -p $mountpoint413 dd if=/dev/zero of=$imagefile bs=1k count=1440 &> /dev/null || LogIt "Cannot dd (CODI)"414 echo "Creating ext2 filesystem on $imagefile" >> $LOGFILE415 mke2fs -N 12 -F $imagefile >> $LOGFILE 2>> $LOGFILE || Die "Unable to create an ext2 file system on $imagefile"416 mount -t ext2 -o loop $imagefile $mountpoint || Die "Can't loopmount $imagefile to $mountpoint! The reason may be missing support for loopfs or ext2 (or both) in the running kernel."417 mv $tarball $mountpoint/418 if [ "$?" -ne "0" ] ; then419 umount $mountpoint420 rmdir $mountpoint421 Die "Tarball $tarball is too big for disk! (CODI)\nAdjust mindi_max_compressed_size in your $MINDI_CONFIG"422 fi423 [ "$diskno" -eq "$noof_disks" ] && echo "This is the last disk ($diskno=$noof_disks)" >> $mountpoint/LAST-DISK424 umount $mountpoint || LogIt "Cannot umount (CODI)"425 rmdir $mountpoint || LogIt "Cannot rmdir (CODI)"426 334 } 427 335 … … 1604 1512 1605 1513 1606 MoveHyperlinkSensibly() {1607 local filename minidir_root resides_on_diskno noof_disks old_diskno d old_pwd1608 filename=$11609 minidir_root=$21610 resides_on_diskno=$31611 noof_disks=$41612 1613 [ -h "$minidir_root/$resides_on_diskno/$filename" ] || Die "$filename isn't a softlink (or doesn't exist): how can I move it sensibly?"1614 1615 old_diskno=$resides_on_diskno1616 d=11617 while [ "$d" -le "$noof_disks" ] ; do1618 if [ "$d" -ne "$old_diskno" ] ; then1619 old_pwd=`pwd`1620 cd $minidir_root/$old_diskno1621 cp --parents -Rdf $filename $minidir_root/$d/ 2>> $LOGFILE || Die "Can't move $filename (sensibly) from $old_diskno to $d"1622 rm -f $filename1623 cd $old_pwd1624 fi1625 # when the softlink is resolvable, our work here is done1626 [ -e "$minidir_root/$d/$filename" ] && return 01627 old_diskno=$d1628 d=$(($d+1))1629 done1630 return 11631 }1632 1633 1634 1514 OfferToMakeBootableISO() { 1635 1515 local i old_pwd … … 1825 1705 fi 1826 1706 echo -en "." 1827 }1828 1829 1830 PluralOrNot() {1831 [ "$1" -gt "1" ] && echo -en "s"1832 1707 } 1833 1708 … … 2168 2043 2169 2044 PrepareDataDiskImages() { 2170 local needlist bigdir minidir_root tardirdiskdir imagesdir res i j k old_pwd lines lfiles2045 local needlist bigdir diskdir imagesdir res i j k old_pwd lines lfiles 2171 2046 2172 2047 imagesdir=$1 2173 rm -f $imagesdir/mindi -*.img $imagesdir/[0-9]*.tar.gz $imagesdir/mindi.iso2048 rm -f $imagesdir/mindi.iso 2174 2049 needlist=$MINDI_TMP/what-we-need.txt 2175 2050 bigdir=$MINDI_TMP/bigdir 2176 minidir_root=$MINDI_TMP/minidir2177 mkdir -p $minidir_root2178 2051 mkdir -p $bigdir/usr/bin 2179 tardir=$MINDI_TMP/tardir2180 2052 2181 2053 lfiles="$DEPLIST_FILE" … … 2213 2085 fi 2214 2086 if [ "$res" -ne "0" ] ; then 2215 Die "You have $res file `PluralOrNot $res`present in dependency list\nbut absent from filesystem."2087 Die "You have $res files present in dependency list\nbut absent from filesystem." 2216 2088 fi 2217 2089 FindAndAddUserKeyboardMappingFile … … 2263 2135 echo -e "$DONE" 2264 2136 TOTAL_BIGDIR_SIZE=`du -sk $bigdir | cut -f1` 2265 SplitDirectoryIntoMinidirs $bigdir $minidir_root2266 noof_disks=$?2267 [ "$noof_disks" -eq "0" ] && Die "Too much stuff!"2268 2137 MakeMountlist $MINDI_TMP/mountlist.txt 2269 mkdir -p $ minidir_root/$noof_disks/tmp2270 cp -f $MINDI_TMP/mountlist.txt $ minidir_root/$noof_disks/tmp/mountlist.txt 2> /dev/null || Die "Cannot copy mountlist.txt from $MINDI_TMP to data disk"2138 mkdir -p $bigdir/tmp 2139 cp -f $MINDI_TMP/mountlist.txt $bigdir/tmp/mountlist.txt 2> /dev/null || Die "Cannot copy mountlist.txt from $MINDI_TMP to data disk" 2271 2140 if [ _"$MONDO_SHARE" != _"" ]; then 2272 cp -f $minidir_root/$noof_disks/tmp/mountlist.txt $MINDI_TMP/. 2>> $LOGFILE 2273 fi 2274 [ $LVM != "false" ] && $MINDI_LIB/analyze-my-lvm > $minidir_root/$noof_disks/tmp/i-want-my-lvm || LVM="false" 2275 cat $minidir_root/$noof_disks/tmp/mountlist.txt >> $LOGFILE 2276 ZipMinidirsIntoTarballs $minidir_root $tardir $noof_disks 2277 CreateDataDiskImagesFromTarballs $tardir $imagesdir $noof_disks 2141 cp -f $bigdir/tmp/mountlist.txt $MINDI_TMP/. 2>> $LOGFILE 2142 fi 2143 [ $LVM != "false" ] && $MINDI_LIB/analyze-my-lvm > $bigdir/tmp/i-want-my-lvm || LVM="false" 2144 cat $bigdir/tmp/mountlist.txt >> $LOGFILE 2145 echo -en "$FILES_IN_FILELIST" > $bigdir/FILES-IN-FILELIST 2> /dev/null 2146 echo -en "$LAST_FILELIST_NUMBER" > $bigdir/LAST-FILELIST-NUMBER 2> /dev/null 2147 if [ _"$MONDO_SHARE" != _"" ]; then 2148 for q in filelist.full.gz biggielist.txt ; do 2149 [ ! -e "$MINDI_TMP/$q" ] && Die "Cannot find $MINDI_TMP/$q" 2150 cp -pRdf $MINDI_TMP/$q $bigdir/tmp 2>> $LOGFILE 2151 done 2152 fi 2153 2154 echo -en "Tarring and zipping the data content..." 2155 size_of_all_tools=`du -sk $bigdir | cut -f1` 2156 (cd $bigdir ; tar -b 4096 -cf - . 2> /dev/null | gzip -9 > $imagesdir/all.tar.gz) 2157 du -sk $imagesdir/*gz >> $LOGFILE 2158 echo -e "$DONE" 2159 2278 2160 FRIENDLY_OUTSTRING="Boot and data disk images were created." 2279 # One 1.72MB boot disk, one 2.88MB boot disk and $noof_disks data disk images 2280 rmdir $tardir $bigdir 2161 rm -rf $bigdir 2281 2162 rm -f $needlist 2282 return $noof_disks2283 2163 } 2284 2164 … … 2332 2212 2333 2213 2334 RejigHyperlinks() {2335 local minidir_root noof_disks fname path diskno old_pwd awk_loc gawk_loc dir i2336 minidir_root=$12337 noof_disks=$22338 2339 old_pwd=`pwd`2340 diskno=12341 while [ "$diskno" -le "$noof_disks" ] ; do2342 mkdir -p $minidir_root/$diskno2343 cd $minidir_root/$diskno2344 for fname in `find -type d -o -print` ; do2345 [ -h "$minidir_root/$diskno/$fname" ] && MoveHyperlinkSensibly $fname $minidir_root $diskno $noof_disks2346 done2347 diskno=$(($diskno+1))2348 done2349 2350 cd $old_pwd2351 return2352 }2353 2354 2355 2214 ReplaceIndividualLine() { 2356 2215 local orig_file new_file lino newstring lines_total lines_remaining … … 2439 2298 2440 2299 2441 SplitDirectoryIntoMinidirs() {2442 local bigdir minidir_root i noof_disks old_pwd res2443 2444 bigdir=$12445 minidir_root=$22446 [ "$minidir_root" != "" ] && rm -Rf $minidir_root/*2447 2448 TryToFitDataIntoSeveralDirs $bigdir $minidir_root2449 noof_disks=$?2450 if [ "$noof_disks" -eq "0" ] ; then2451 echo "Failed to fit data into several dirs."2452 return 02453 fi2454 RejigHyperlinks $minidir_root $noof_disks2455 [ "$bigdir" != "" ] && rm -Rf $bigdir/*2456 return $noof_disks2457 }2458 2459 2300 2460 2301 StripExecutable() … … 2471 2312 fi 2472 2313 rm -f $tmpfile 2473 }2474 2475 2476 TemporarilyCompressAllFiles() {2477 local i orig_fname out_fname out_list2478 2479 i=02480 out_list=$2/compressed/compressed.txt2481 mkdir -p $2/compressed2482 > $out_list2483 for orig_fname in $1 ; do2484 out_fname=$2/compressed/$orig_fname.gz2485 mkdir -p $out_fname 2> /dev/null2486 rmdir $out_fname 2> /dev/null2487 gzip -c6 $orig_fname > $out_fname 2> /dev/null2488 i=$(((($i+1))%15))2489 [ "$i" -eq "0" ] && echo -en "."2490 du -sk $out_fname >> $out_list2491 done2492 2314 } 2493 2315 … … 2587 2409 fi 2588 2410 echo "$output" | tr -s ' ' '\n' | sort -u | tr '\n' ' ' 2589 }2590 2591 2592 TryToFitDataIntoSeveralDirs() {2593 local bigdir minidir_root noof_disks diskno list_of_files filename old_pwd progress2594 local i retval noof_disks total_files list_of_devs2595 2596 bigdir=$12597 minidir_root=$22598 BIG_CLUNKY_SIZE_COUNTER=02599 retval=02600 noof_disks=12601 2602 echo -en "\r \rDividing data into several groups..."2603 old_pwd=`pwd`2604 cd $bigdir2605 list_of_files=`GetFileSizeList . | sort -nr | cut -f2 | grep -Fv "/dev/"`2606 progress=02607 total_files=`CountItemsIn "$list_of_files"`2608 if [ "`echo "$filename" | grep -x "/dev/.*"`" ] ; then2609 filesize=12610 fi2611 mkdir -p $minidir_root/$noof_disks2612 if [ -e "dev" ] ; then2613 echo "Copying dev/* to $minidir_root/$noof_disks" >> $LOGFILE2614 cp --parents -pRdf dev $minidir_root/$noof_disks 2>> $LOGFILE2615 fi2616 TemporarilyCompressAllFiles "$list_of_files" $minidir_root2617 for filename in $list_of_files ; do2618 AddFileToDir $filename $minidir_root $noof_disks2619 i=$?2620 if [ "$i" -gt "$noof_disks" ] ; then2621 noof_disks=$i2622 echo -en "\r\t\t\t\t\t\t($noof_disks disks)"2623 fi2624 if [ "$i" -eq "0" ] ; then2625 LogIt "Cannot add file $filename to minidir $minidir_root"2626 retval=$(($retval+1))2627 fi2628 progress=$(($progress+1))2629 echo -en "\r\t\t\t\t\t\t\t\t$(($progress*100/$total_files))% complete\r"2630 done2631 cd $old_pwd2632 echo -en "\rThe files have been subdivided into $noof_disks directories. \r"2633 [ "$minidir_root" != "" ] && rm -Rf $minidir_root/compressed2634 if [ "$retval" -gt "0" ] ; then2635 return 02636 else2637 return $noof_disks2638 fi2639 2411 } 2640 2412 … … 2905 2677 } 2906 2678 2907 2908 ZipMinidirsIntoTarballs() {2909 local minidir_root tardir noof_disks diskno old_pwd i2910 minidir_root=$12911 tardir=$22912 noof_disks=$32913 2914 echo -en "Tarring and zipping the group`PluralOrNot $noof_disks`..."2915 mkdir -p $tardir2916 mkdir -p $minidir_root/all2917 old_pwd=`pwd`2918 diskno=12919 while [ "$diskno" -le "$noof_disks" ] ; do2920 cd $minidir_root/$diskno || LogIt "WARNING - cannot cd to $minidir_root/$diskno"2921 tar -cf - . 2>> $LOGFILE | gzip -9 > $tardir/$diskno.tar.gz || Die "Can't tar/gzip disk#$diskno; please tell Dev Team -exactly- what the errors where."2922 diskno=$(($diskno+1))2923 echo -n "..."2924 cp -pRdf * $minidir_root/all 2>> $LOGFILE2925 done2926 mkdir -p $minidir_root/all/tmp2927 cd $minidir_root/all2928 size_of_all_tools=`du -sk . | cut -f1`2929 if [ _"$MONDO_SHARE" != _"" ]; then2930 for q in filelist.full.gz biggielist.txt ; do2931 [ ! -e "$MINDI_TMP/$q" ] && Die "Cannot find $MINDI_TMP/$q"2932 cp -pRdf $MINDI_TMP/$q tmp/ 2>> $LOGFILE2933 done2934 mkdir -p $minidir_root/all/tmp2935 echo -en "$FILES_IN_FILELIST" > $minidir_root/all/tmp/FILES-IN-FILELIST 2> /dev/null2936 echo -en "$LAST_FILELIST_NUMBER" > $minidir_root/all/tmp/LAST-FILELIST-NUMBER 2> /dev/null2937 fi2938 tar -b 4096 -cf - * 2> /dev/null | gzip -9 > $tardir/all.tar.gz2939 dd if=/dev/zero bs=1k count=64 >> $imagesdir/all.tar.gz 2> /dev/null2940 [ "`du -sm $imagesdir/all.tar.gz | cut -f1`" -ge "30" ] && Die "You have too many tools in your shed"2941 cd $old_pwd2942 [ "$minidir_root" != "" ] && rm -Rf $minidir_root2943 echo -e "$DONE"2944 }2945 2679 2946 2680 … … 3404 3138 3405 3139 PrepareDataDiskImages $MINDI_CACHE 3406 noof_disks=$?3407 3140 ramdisk_size=$(($size_of_all_tools+$EXTRA_SPACE)) 3408 3141 rds=$(($ramdisk_size-$((ramdisk_size%4096)))) -
branches/2.2.6/mindi/rootfs/sbin/install-additional-tools
r1841 r1902 20 20 mountdir=$GROOVY 21 21 # Should be the same as in mindi => conf param 22 MAX_DISKS=9923 22 mkdir -p $mountdir 24 diskno=125 23 res=0 26 24 if [ -e "/tmp/TAPEDEV-HAS-DATA-DISKS" ] ; then 27 25 LogIt "I am assuming the data disks' contents are already in $mountdir." 28 26 else 29 while [ "$diskno" -lt "$MAX_DISKS" ] ; do 30 LogIt "PLEASE WAIT. Untarring disk #$diskno" 2 31 untar $diskno $mountdir 32 res=$(($res+$?)) 33 [ -e "/LAST-DISK" ] && diskno=999 34 diskno=$(($diskno+1)) 35 [ -e "/tmp/CDROM-LIVES-HERE" ] && [ ! -f "/mnt/cdrom/images/$diskno.tar.gz" ] && break 36 done 27 LogIt "PLEASE WAIT. Untarring data content" 2 28 29 mountpoint=/dev/null 30 [ -e "/tmp/CDROM-LIVES-HERE" ] && mountpoint=/mnt/cdrom/images 31 tarball=$mountpoint/all.tar.gz 32 if [ -e "/tmp/CDROM-LIVES-HERE" ] ; then 33 [ -e "$tarball" ] || LogIt "Can't find CD's $tarball" 1 34 fi 35 36 old_pwd=`pwd` 37 cd $mountdir 38 counter=0 39 for fname in `tar -zxvf $tarball` ; do 40 counter=$(($counter+1)) 41 [ "$(($counter % 4))" -eq "0" ] && echo -en "\r\t\t\t\t\t\t\t\\" 42 [ "$(($counter % 4))" -eq "1" ] && echo -en "\r\t\t\t\t\t\t\t|" 43 [ "$(($counter % 4))" -eq "2" ] && echo -en "\r\t\t\t\t\t\t\t/" 44 [ "$(($counter % 4))" -eq "3" ] && echo -en "\r\t\t\t\t\t\t\t-" 45 done 46 cd $old_pwd 47 echo -e -n "\r" 48 [ ! -e "/tmp/CDROM-LIVES-HERE" ] && umount $mountpoint 49 sleep 1 37 50 fi 38 rm -f /LAST-DISK39 51 40 52 LogIt "Recombining large files..." 1 -
branches/2.2.6/mondo/src/mondorestore/mondo-restore.c
r1885 r1902 2961 2961 make_hole_for_dir(MONDO_CACHE); 2962 2962 2963 /* Backup original mountlist.txt */2963 /* Backup original mountlist.txt */ 2964 2964 sprintf(tmp, "%s.orig", g_mountlist_fname); 2965 2965 if (!does_file_exist(g_mountlist_fname)) { … … 2973 2973 } 2974 2974 2975 /* Init directories */2975 /* Init directories */ 2976 2976 make_hole_for_dir("/var/log"); 2977 2977 make_hole_for_dir("/tmp/tmpfs"); /* just in case... */ … … 2984 2984 run_program_and_log_output("rm -Rf /tmp/tmpfs/mondo.tmp.*", FALSE); 2985 2985 2986 /* Init GUI */2986 /* Init GUI */ 2987 2987 malloc_libmondo_global_strings(); 2988 2988 setup_newt_stuff(); /* call newtInit and setup screen log */ … … 2996 2996 iamhere("what time is it"); 2997 2997 2998 /* Process command-line parameters */2998 /* Process command-line parameters */ 2999 2999 if (argc == 2 && strcmp(argv[1], "--edit-mountlist") == 0) { 3000 3000 #ifdef __FreeBSD__
Note:
See TracChangeset
for help on using the changeset viewer.