|
@@ -1,21 +1,18 @@
|
1
|
1
|
#!/bin/bash
|
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) 2022
|
3
|
3
|
# author Koshuba V.O.
|
4
|
4
|
# license: MIT
|
5
|
|
-# version: 5.0.2
|
|
5
|
+# version: 5.1.0
|
6
|
6
|
##
|
7
|
7
|
|
8
|
8
|
#<manual_parameters>
|
9
|
|
-path_kvm=( "/kvm/vm1"
|
10
|
|
- "/kvm/vm2" ); # path kvm machines
|
11
|
|
-path_bak=( "/backup/kvm/vm1"
|
12
|
|
- "/backup/kvm/vm2" ); # path backup kvm machines
|
13
|
|
-img_dev=( "sda.img"
|
14
|
|
- "sda.img" ); # storage kvm
|
|
9
|
+path_kvm=( "/kvm/vm1" "/kvm/vm2" ); # path kvm machines
|
|
10
|
+path_bak=( "/backup/kvm/vm1" "/backup/kvm/vm2" ); # path backup kvm machines
|
|
11
|
+img_dev=( '"sda.img"' '"sda.img" "sdb.img"' ) # storage kvm (vm1 - sda.img; vm2 - sda.img,sdb.img)
|
15
|
12
|
#</manual_parameters>
|
16
|
13
|
|
17
|
14
|
#<script_value>
|
18
|
|
-version="5.0.2";
|
|
15
|
+version="5.1.0";
|
19
|
16
|
owner="(c) script by Koshuba V.O. 2021";
|
20
|
17
|
msg_dat=( '"Script to save or restore the image KVM" "Скрипт сохранения или восстановления образа KVM"'
|
21
|
18
|
'"MAIN MENU" "ГЛАВНОЕ МЕНЮ"'
|
|
@@ -357,30 +354,43 @@ done
|
357
|
354
|
|
358
|
355
|
function saveKvm() {
|
359
|
356
|
local save_kvm="${path_kvm[$set_kvm]}";
|
360
|
|
-local save_bak="${path_bak[$set_kvm]}/$rdate";
|
361
|
|
-local save_img=$(echo "${img_dev[$set_kvm]}"|sed 's/\./ /g'|awk '{print$1}');
|
362
|
|
-local set_loop_main="$(losetup -f|grep -v loop-control|sed 's/\/\dev\///g')";
|
363
|
|
-losetup /dev/$set_loop_main $save_kvm/$save_img.img;
|
|
357
|
+local save_bak="${path_bak[$set_kvm]}/$rdate"
|
|
358
|
+eval set_images="(" ${img_dev[$set_kvm]} ")";
|
364
|
359
|
|
365
|
|
-if [[ ! -d $save_bak ]];
|
366
|
|
- then
|
367
|
|
- mkdir -p $save_bak;
|
368
|
|
-fi
|
|
360
|
+for ((step_i=0; step_i != ${#set_images[@]}; step_i++))
|
|
361
|
+ do
|
|
362
|
+ local save_img=$(echo "${set_images[$step_i]}"|sed 's/\./ /g'|awk '{print$1}');
|
|
363
|
+ local set_loop_main="$(losetup -f|grep -v loop-control|sed 's/\/\dev\///g')";
|
|
364
|
+ losetup /dev/$set_loop_main $save_kvm/$save_img.img;
|
|
365
|
+
|
|
366
|
+ if [[ ! -d $save_bak ]];
|
|
367
|
+ then
|
|
368
|
+ mkdir -p $save_bak;
|
|
369
|
+ fi
|
|
370
|
+
|
|
371
|
+ sfdisk -d /dev/$set_loop_main >$save_bak/$save_img-info_sfdisk.txt;
|
|
372
|
+ sfdisk -l /dev/$set_loop_main >$save_bak/$save_img-info_disk.txt;
|
|
373
|
+ dd if=/dev/$set_loop_main status=progress |pigz -p4 -M -c9>$save_bak/$save_img-dd.img.gz;
|
|
374
|
+ losetup -d /dev/$set_loop_main;
|
|
375
|
+done
|
369
|
376
|
|
370
|
|
-sfdisk -d /dev/$set_loop_main >$save_bak/info_sfdisk.txt;
|
371
|
|
-sfdisk -l /dev/$set_loop_main >$save_bak/info_disk.txt;
|
372
|
|
-dd if=/dev/$set_loop_main status=progress |pigz -p4 -M -c9>$save_bak/$save_img-dd.img.gz;
|
373
|
|
-losetup -d /dev/$set_loop_main;
|
374
|
377
|
}
|
375
|
378
|
|
376
|
379
|
function restoreKvm() {
|
377
|
380
|
local rest_kvm="${path_kvm[$set_kvm]}";
|
378
|
|
-local rest_bak="${path_bak[$set_kvm]}/$set_img";
|
379
|
|
-local rest_img=$(echo "${img_dev[$set_kvm]}"|sed 's/\./ /g'|awk '{print$1}');
|
380
|
|
-local set_loop_rmain="$(losetup -f|grep -v loop-control|sed 's/\/\dev\///g')";
|
381
|
|
-losetup /dev/$set_loop_rmain $rest_kvm/$rest_img.img;
|
382
|
|
-pigz -p4 -c -d -M $rest_bak/$rest_img-dd.img.gz|dd of=/dev/$set_loop_rmain status=progress;
|
383
|
|
-losetup -d /dev/$set_loop_rmain;
|
|
381
|
+local rest_path="${path_bak[$set_kvm]}/$set_img";
|
|
382
|
+eval set_reimages="(" ${img_dev[$set_kvm]} ")";
|
|
383
|
+##
|
|
384
|
+for ((step_i=0; step_i != ${#set_reimages[@]}; step_i++))
|
|
385
|
+ do
|
|
386
|
+
|
|
387
|
+ local rest_img=$(echo "${set_reimages[$step_i]}"|sed 's/\./ /g'|awk '{print$1}');
|
|
388
|
+ local rest_bak="$rest_path/$rest_img-dd.img.gz";
|
|
389
|
+ local set_loop_rmain="$(losetup -f|grep -v loop-control|sed 's/\/\dev\///g')";
|
|
390
|
+ losetup /dev/$set_loop_rmain $rest_kvm/$rest_img.img;
|
|
391
|
+ pigz -p4 -c -d -M $rest_bak|dd of=/dev/$set_loop_rmain status=progress;
|
|
392
|
+ losetup -d /dev/$set_loop_rmain;
|
|
393
|
+done
|
384
|
394
|
}
|
385
|
395
|
|
386
|
396
|
#</functions>
|