Browse Source

recreate algoritm snapshot image. 01.12.21:23.39

root 3 years ago
parent
commit
391b0d6670
1 changed files with 12 additions and 77 deletions
  1. 12 77
      kvm-snapshot.sh

+ 12 - 77
kvm-snapshot.sh

@@ -2,26 +2,21 @@
2 2
 # The script is designed to create or restore an image of a virtual machine kvm (c) 2018
3 3
 # author Koshuba V.O.
4 4
 # license: MIT
5
-# version: 4.0.10
5
+# version: 5.0.1
6 6
 ##
7 7
 
8 8
 #<manual_parameters>
9
-path_kvm=( "/kvm/ms1" "/kvm/ms2" );				# path kvm machines
10
-path_bak=( "/backup/kvm/ms1" "/backup/kvm/ms2"  );		# path backup kvm machines
11
-img_dev=( "sda.img" "sda.img" );				# storage kvm
12
-img_part=( '"sda1" "sda2" "sda3" "sda4"'
13
-           '"sda1" "sda2" "sda3" "sda4"' );			# sections in media kvm
14
-img_type=( '"dd" "dd" "dd" "ntfsclone"'
15
-           '"dd" "dd" "dd" "ntfsclone"' );			# type backup partition:dd[fat,EFI System,Windows recovery environment,Microsoft reserved],ntfsclone[ntfs,Microsoft basic data]
16
-img_size=( '"300" "99" "128" ""'
17
-           '"300" "99" "128" ""' );				# size partition for dd (Mb)
18
-img_offset=( '"1048576" "315621376" "419430400" "553648128"'
19
-             '"1048576" "315621376" "419430400" "553648128"' );	# offset for switch section media kvm
9
+path_kvm=(	"/kvm/w2kbuh"
10
+	        "/kvm/w2ktbo" );			# path kvm machines
11
+path_bak=(	"/arhive/backup/kvm/w2kbuh" 
12
+		"/arhive/backup/kvm/w2ktbo"  );		# path backup kvm machines
13
+img_dev=(	"sda.img"
14
+		"sda.img" );				# storage kvm
20 15
 #</manual_parameters>
21 16
 
22 17
 #<script_value>
23 18
 version="4.0.10";
24
-owner="(c) script by Koshuba V.O. 2018";
19
+owner="(c) script by Koshuba V.O. 2021";
25 20
 msg_dat=( '"Script to save or restore the image KVM" "Скрипт сохранения или восстановления образа KVM"'
26 21
           '"MAIN MENU" "ГЛАВНОЕ МЕНЮ"'
27 22
           '"RESTORE KVM MACHINE" "ВОССТАНОВЛЕНИЕ ГОСТЕВОЙ МАШИНЫ KVM"'
@@ -40,7 +35,7 @@ msg_dat=( '"Script to save or restore the image KVM" "Скрипт сохран
40 35
           '"Starting kvm-snapshot script." "Запуск скрипта kvm-snapshot."'
41 36
           '"Ending work kvm-snapshot script." "Окончание работы скрипта kvm-snapshot."'
42 37
           '"Not found save images!" "Не найдены сохраненные образы!"'
43
-          '"The installed type was not found from the parameters for image processing - dd,ntfsclone,mrsrv!" "Не найден установленный тип из параметров для обработки образа - dd,ntfsclone,mrsrv!"' );
38
+	 );
44 39
 	  # msg[17]
45 40
 msg=();											# set current messages
46 41
 esc_title="";										# title escape menu
@@ -76,7 +71,7 @@ operation_exit=( "clear" "endproc" "exit" );
76 71
 
77 72
 
78 73
 #<tools_script>
79
-get_tools=( "ntfsclone" "pigz" "locale" "du" "ntfsfix" "gunzip" );           # tools for script
74
+get_tools=( "pigz" "locale" "du" "gunzip" "dd" );           # tools for script
80 75
 #</tools_script>
81 76
 
82 77
 
@@ -364,10 +359,6 @@ function saveKvm() {
364 359
 local save_kvm="${path_kvm[$set_kvm]}";
365 360
 local save_bak="${path_bak[$set_kvm]}/$rdate";
366 361
 local save_img="${img_dev[$set_kvm]}";
367
-eval local save_type="(" $(echo -e ${img_type[$set_kvm]}) ")";
368
-eval local save_size="(" $(echo -e ${img_size[$set_kvm]}) ")";
369
-eval local save_dev="(" $(echo -e ${img_part[$set_kvm]}) ")";
370
-eval local save_offset="(" "$(echo -e ${img_offset[$set_kvm]})" ")";
371 362
 local set_loop_main="$(losetup -f|grep -v loop-control|sed 's/\/\dev\///g')";
372 363
 losetup /dev/$set_loop_main $save_kvm/$save_img;
373 364
 
@@ -378,34 +369,7 @@ fi
378 369
 
379 370
 sfdisk -d /dev/$set_loop_main >$save_bak/info_sfdisk.txt;
380 371
 sfdisk -l /dev/$set_loop_main >$save_bak/info_disk.txt;
381
-dd if=/dev/$set_loop_main of=$save_bak/winboot.img bs=512 count=1;
382
-
383
-for ((iskvm=0; iskvm != ${#save_dev[@]}; iskvm++))
384
- do
385
-    local set_loop_dev="$(losetup -f|grep -v loop-control|sed 's/\/\dev\///g')";
386
-    losetup -o ${save_offset[$iskvm]} /dev/$set_loop_dev /dev/$set_loop_main;
387
-    if [ "${save_type[$iskvm]}" == "ntfsclone" ];
388
-	    then
389
-	    ntfsclone --save-image -o - /dev/$set_loop_dev| pigz -p2 -c9>$save_bak/${save_dev[$iskvm]}_ntfs.img.gz;
390
-	fi
391
-	if [ "${save_type[$iskvm]}" == "dd" ];
392
-	    then
393
-		if [ "${save_size[$iskvm]}" != "" ];
394
-		    then
395
-		    dd if=/dev/$set_loop_dev status=progress bs=${save_size[$iskvm]}M count=1|pigz -p4 -M -c9>$save_bak/${save_dev[$iskvm]}_dd.img.gz;
396
-		    else
397
-		    dd if=/dev/$set_loop_dev status=progress|pigz -p4 -M -c9>$save_bak/${save_dev[$iskvm]}_dd.img.gz;
398
-		fi
399
-	    
400
-	fi
401
-	if [ "${save_type[$iskvm]}" != "ntfsclone" ] && [ "${save_type[$iskvm]}" != "dd" ] && [ "${save_type[$iskvm]}" != "mrsrv" ];
402
-	    then
403
-		echo "[$save_bak/${save_dev[$irkvm]}_dd.img.gz]\n ${msg[18]} - >> /var/log/syslog";
404
-		echo "$(date) - kvm-snapshot: [$save_bak/${save_dev[$irkvm]}_dd.img.gz] \n ${msg[18]}" >> /var/log/syslog;
405
-	fi
406
-    
407
-    losetup -d /dev/$set_loop_dev;
408
-done
372
+dd if=/dev/$set_loop_main status=progress |pigz -p4 -M -c9>$save_bak/$save_img-dd.img.gz;
409 373
 losetup -d /dev/$set_loop_main;
410 374
 }
411 375
 
@@ -413,38 +377,9 @@ function restoreKvm() {
413 377
 local rest_kvm="${path_kvm[$set_kvm]}";
414 378
 local rest_bak="${path_bak[$set_kvm]}/$set_img";
415 379
 local rest_img="${img_dev[$set_kvm]}";
416
-eval local rest_type="(" $(echo -e ${img_type[$set_kvm]}) ")";
417
-eval local rest_size="(" $(echo -e ${img_size[$set_kvm]}) ")";
418
-eval local rest_dev="(" $(echo -e ${img_part[$set_kvm]}) ")";
419
-eval local rest_offset="(" "$(echo -e ${img_offset[$set_kvm]})" ")";
420 380
 local set_loop_rmain="$(losetup -f|grep -v loop-control|sed 's/\/\dev\///g')";
421 381
 losetup /dev/$set_loop_rmain $rest_kvm/$rest_img;
422
-dd if=$rest_bak/winboot.img of=/dev/$set_loop_rmain bs=512 count=1;
423
-sleep 1
424
-for ((irkvm=0; irkvm != ${#rest_dev[@]}; irkvm++))
425
- do
426
-    local set_loop_rdev="$(losetup -f|grep -v loop-control|sed 's/\/\dev\///g')";
427
-    losetup -o ${rest_offset[$irkvm]} /dev/$set_loop_rdev /dev/$set_loop_rmain;
428
-	if [ ${rest_type[$irkvm]} == "ntfsclone" ];
429
-	    then
430
-	    gunzip -c $rest_bak/${rest_dev[$irkvm]}_ntfs.img.gz|ntfsclone --restore-image -O /dev/$set_loop_rdev -;
431
-	fi
432
-	if [ "${rest_type[$irkvm]}" == "dd" ];
433
-	    then
434
-		if [ "${rest_size[$irkvm]}" != "" ];
435
-		    then
436
-		    pigz -p4 -c -d -M $rest_bak/${rest_dev[$irkvm]}_dd.img.gz|dd of=/dev/$set_loop_rdev status=progress bs=${rest_size[$irkvm]}M count=1;
437
-		    else
438
-		    pigz -p4 -c -d -M $rest_bak/${rest_dev[$irkvm]}_dd.img.gz|dd of=/dev/$set_loop_rdev status=progress;
439
-		fi
440
-	fi
441
-	if [ "${rest_type[$irkvm]}" != "ntfsclone" ] && [ "${rest_type[$irkvm]}" != "dd" ];
442
-	    then
443
-		echo "[$rest_bak/${rest_dev[$irkvm]}_dd.img.gz]\n ${msg[18]} - >> /var/log/syslog";
444
-		echo "$(date) - kvm-snapshot: [$rest_bak/${rest_dev[$irkvm]}_dd.img.gz] \n ${msg[18]}" >> /var/log/syslog;
445
-	fi
446
-    losetup -d /dev/$set_loop_rdev;
447
-done
382
+pigz -p4 -c -d -M $rest_bak/${rest_dev[$irkvm]}_dd.img.gz|dd of=/dev/$set_loop_rdev status=progress;
448 383
 losetup -d /dev/$set_loop_rmain;
449 384
 }
450 385