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
 # The script is designed to create or restore an image of a virtual machine kvm (c) 2018
2
 # The script is designed to create or restore an image of a virtual machine kvm (c) 2018
3
 # author Koshuba V.O.
3
 # author Koshuba V.O.
4
 # license: MIT
4
 # license: MIT
5
-# version: 4.0.10
5
+# version: 5.0.1
6
 ##
6
 ##
7
 
7
 
8
 #<manual_parameters>
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
 #</manual_parameters>
15
 #</manual_parameters>
21
 
16
 
22
 #<script_value>
17
 #<script_value>
23
 version="4.0.10";
18
 version="4.0.10";
24
-owner="(c) script by Koshuba V.O. 2018";
19
+owner="(c) script by Koshuba V.O. 2021";
25
 msg_dat=( '"Script to save or restore the image KVM" "Скрипт сохранения или восстановления образа KVM"'
20
 msg_dat=( '"Script to save or restore the image KVM" "Скрипт сохранения или восстановления образа KVM"'
26
           '"MAIN MENU" "ГЛАВНОЕ МЕНЮ"'
21
           '"MAIN MENU" "ГЛАВНОЕ МЕНЮ"'
27
           '"RESTORE KVM MACHINE" "ВОССТАНОВЛЕНИЕ ГОСТЕВОЙ МАШИНЫ KVM"'
22
           '"RESTORE KVM MACHINE" "ВОССТАНОВЛЕНИЕ ГОСТЕВОЙ МАШИНЫ KVM"'
@@ -40,7 +35,7 @@ msg_dat=( '"Script to save or restore the image KVM" "Скрипт сохран
40
           '"Starting kvm-snapshot script." "Запуск скрипта kvm-snapshot."'
35
           '"Starting kvm-snapshot script." "Запуск скрипта kvm-snapshot."'
41
           '"Ending work kvm-snapshot script." "Окончание работы скрипта kvm-snapshot."'
36
           '"Ending work kvm-snapshot script." "Окончание работы скрипта kvm-snapshot."'
42
           '"Not found save images!" "Не найдены сохраненные образы!"'
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
 	  # msg[17]
39
 	  # msg[17]
45
 msg=();											# set current messages
40
 msg=();											# set current messages
46
 esc_title="";										# title escape menu
41
 esc_title="";										# title escape menu
@@ -76,7 +71,7 @@ operation_exit=( "clear" "endproc" "exit" );
76
 
71
 
77
 
72
 
78
 #<tools_script>
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
 #</tools_script>
75
 #</tools_script>
81
 
76
 
82
 
77
 
@@ -364,10 +359,6 @@ function saveKvm() {
364
 local save_kvm="${path_kvm[$set_kvm]}";
359
 local save_kvm="${path_kvm[$set_kvm]}";
365
 local save_bak="${path_bak[$set_kvm]}/$rdate";
360
 local save_bak="${path_bak[$set_kvm]}/$rdate";
366
 local save_img="${img_dev[$set_kvm]}";
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
 local set_loop_main="$(losetup -f|grep -v loop-control|sed 's/\/\dev\///g')";
362
 local set_loop_main="$(losetup -f|grep -v loop-control|sed 's/\/\dev\///g')";
372
 losetup /dev/$set_loop_main $save_kvm/$save_img;
363
 losetup /dev/$set_loop_main $save_kvm/$save_img;
373
 
364
 
@@ -378,34 +369,7 @@ fi
378
 
369
 
379
 sfdisk -d /dev/$set_loop_main >$save_bak/info_sfdisk.txt;
370
 sfdisk -d /dev/$set_loop_main >$save_bak/info_sfdisk.txt;
380
 sfdisk -l /dev/$set_loop_main >$save_bak/info_disk.txt;
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
 losetup -d /dev/$set_loop_main;
373
 losetup -d /dev/$set_loop_main;
410
 }
374
 }
411
 
375
 
@@ -413,38 +377,9 @@ function restoreKvm() {
413
 local rest_kvm="${path_kvm[$set_kvm]}";
377
 local rest_kvm="${path_kvm[$set_kvm]}";
414
 local rest_bak="${path_bak[$set_kvm]}/$set_img";
378
 local rest_bak="${path_bak[$set_kvm]}/$set_img";
415
 local rest_img="${img_dev[$set_kvm]}";
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
 local set_loop_rmain="$(losetup -f|grep -v loop-control|sed 's/\/\dev\///g')";
380
 local set_loop_rmain="$(losetup -f|grep -v loop-control|sed 's/\/\dev\///g')";
421
 losetup /dev/$set_loop_rmain $rest_kvm/$rest_img;
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
 losetup -d /dev/$set_loop_rmain;
383
 losetup -d /dev/$set_loop_rmain;
449
 }
384
 }
450
 
385