|
@@ -2,22 +2,25 @@
|
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.5
|
|
|
|
|
5
|
+# version: 4.0.10
|
6
|
##
|
6
|
##
|
7
|
|
7
|
|
8
|
#<manual_parameters>
|
8
|
#<manual_parameters>
|
9
|
-path_kvm=( "/kvm/win2012" "/kvm/win2008" ); # path kvm machines
|
|
|
10
|
-path_bak=( "/backup/kvm/win2012" "/backup/kvm/win2008" ); # path backup kvm machines
|
|
|
|
|
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
|
11
|
img_dev=( "sda.img" "sda.img" ); # storage kvm
|
12
|
-img_part=( '"sda1" "sda2" "sda3" "sda4"' '"sda1"' ); # sections in media kvm
|
|
|
13
|
-img_type=( '"dd" "dd" "dd" "ntfsclone"' '"ntfsclone"' ); # type backup partition:dd[fat,EFI System,Windows recovery environment,Microsoft reserved],ntfsclone[ntfs,Microsoft basic data]
|
|
|
14
|
-img_size=( '"300" "99" "128"' '""' ); # size partition for dd (Mb)
|
|
|
|
|
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)
|
15
|
img_offset=( '"1048576" "315621376" "419430400" "553648128"'
|
18
|
img_offset=( '"1048576" "315621376" "419430400" "553648128"'
|
16
|
- '"1048576"' ); # offset for switch section media kvm
|
|
|
|
|
19
|
+ '"1048576" "315621376" "419430400" "553648128"' ); # offset for switch section media kvm
|
17
|
#</manual_parameters>
|
20
|
#</manual_parameters>
|
18
|
|
21
|
|
19
|
#<script_value>
|
22
|
#<script_value>
|
20
|
-version="4.0.5";
|
|
|
|
|
23
|
+version="4.0.10";
|
21
|
owner="(c) script by Koshuba V.O. 2018";
|
24
|
owner="(c) script by Koshuba V.O. 2018";
|
22
|
msg_dat=( '"Script to save or restore the image KVM" "Скрипт сохранения или восстановления образа KVM"'
|
25
|
msg_dat=( '"Script to save or restore the image KVM" "Скрипт сохранения или восстановления образа KVM"'
|
23
|
'"MAIN MENU" "ГЛАВНОЕ МЕНЮ"'
|
26
|
'"MAIN MENU" "ГЛАВНОЕ МЕНЮ"'
|
|
@@ -383,15 +386,15 @@ for ((iskvm=0; iskvm != ${#save_dev[@]}; iskvm++))
|
383
|
losetup -o ${save_offset[$iskvm]} /dev/$set_loop_dev /dev/$set_loop_main;
|
386
|
losetup -o ${save_offset[$iskvm]} /dev/$set_loop_dev /dev/$set_loop_main;
|
384
|
if [ "${save_type[$iskvm]}" == "ntfsclone" ];
|
387
|
if [ "${save_type[$iskvm]}" == "ntfsclone" ];
|
385
|
then
|
388
|
then
|
386
|
- ntfsclone --save-image -o - /dev/$set_loop_dev| pigz -p2 -c9>$save_bak/${save_dev[$iskvm]}.img.gz;
|
|
|
|
|
389
|
+ ntfsclone --save-image -o - /dev/$set_loop_dev| pigz -p2 -c9>$save_bak/${save_dev[$iskvm]}_ntfs.img.gz;
|
387
|
fi
|
390
|
fi
|
388
|
if [ "${save_type[$iskvm]}" == "dd" ];
|
391
|
if [ "${save_type[$iskvm]}" == "dd" ];
|
389
|
then
|
392
|
then
|
390
|
if [ "${save_size[$iskvm]}" != "" ];
|
393
|
if [ "${save_size[$iskvm]}" != "" ];
|
391
|
then
|
394
|
then
|
392
|
- dd if=/dev/$set_loop_dev of=$save_bak/${save_dev[$iskvm]}_dd.img.gz status=progress bs=${save_size[$iskvm]}M count=1;
|
|
|
|
|
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;
|
393
|
else
|
396
|
else
|
394
|
- echo "Warning! not found size partition ${save_dev[$iskvm]} for dd!";
|
|
|
|
|
397
|
+ dd if=/dev/$set_loop_dev status=progress|pigz -p4 -M -c9>$save_bak/${save_dev[$iskvm]}_dd.img.gz;
|
395
|
fi
|
398
|
fi
|
396
|
|
399
|
|
397
|
fi
|
400
|
fi
|
|
@@ -430,9 +433,9 @@ for ((irkvm=0; irkvm != ${#rest_dev[@]}; irkvm++))
|
430
|
then
|
433
|
then
|
431
|
if [ "${rest_size[$irkvm]}" != "" ];
|
434
|
if [ "${rest_size[$irkvm]}" != "" ];
|
432
|
then
|
435
|
then
|
433
|
- dd if=$rest_bak/${rest_dev[$irkvm]}_dd.img.gz of=/dev/$set_loop_rdev status=progress bs=${rest_size[$irkvm]}M count=1;
|
|
|
|
|
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;
|
434
|
else
|
437
|
else
|
435
|
- echo "Warning! not found size partition ${rest_dev[$irkvm]} for dd!";
|
|
|
|
|
438
|
+ pigz -p4 -c -d -M $rest_bak/${rest_dev[$irkvm]}_dd.img.gz|dd of=/dev/$set_loop_rdev status=progress;
|
436
|
fi
|
439
|
fi
|
437
|
fi
|
440
|
fi
|
438
|
if [ "${rest_type[$irkvm]}" != "ntfsclone" ] && [ "${rest_type[$irkvm]}" != "dd" ];
|
441
|
if [ "${rest_type[$irkvm]}" != "ntfsclone" ] && [ "${rest_type[$irkvm]}" != "dd" ];
|