Обычно использую утилиту dd, которая есть в каждом дистрибутиве в «Базе».
Создание образа:
dd if = / dev / sdb2 of = / mnt / backup / iso_main_hard / hard_main . dd bs = 1M conv = noerror
Если хочется жать в архив:
dd if = / dev / sdb2 bs = 1M conv = noerror | bzip2 - c > / mnt / backup / hard . dd . zip
Извлечение:
bzcat hard_main . dd . zip | dd of = / dev / sdb2
Утилита dd, в консоль во время работы ничего не пишет, но есть трюк как «показать»:
sudo watch - n10 killall - SIGUSR1 dd
Причина: KVM более производительный чем VirtualBox. В моём случае все обошлось довольно просто:
1) Ставим KVM
sudo apt - get install qemu - kvm libvirt - bin ubuntu - vm - builder bridge - utils virt - manager
2) Конвертируем виртуальные машины Virtualbox в формат KVM. Например так:
VBoxManage clonehd -- format RAW win764 . vdi win764 . img
qemu - img convert - f raw win764 . img - O qcow2 win764 . qcow2
3) Запускаем KVM virt-manager и подключаем диск. У меня всё заработало с первого раза.
Иногда бывает полезно раскрыть «звездочки» в теле тэга input при типе равном password. Вообще javascript не позволяет заменять тип «на лету» (например на text), но! как всегда это ограничение можно достаточно просто обойти — просто удалим обьект input и заменим его другим. Например как-то так:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
< div id = "input_pass_div" >
< input type = "password" id = "password_login_form" class = "form-control input-shadow" placeholder = "Пароль" >
< / div >
< div class = "form-control-position" >
< i style = "cursor: pointer" onclick = "ShowPassMe()" class = "icon-eye" > < / i >
< / div >
<script>
tgpass = false ;
function ShowPassMe ( ) {
ps = $ ( "#password_login_form" ) . val ( ) ;
$ ( "#password_login_form" ) . remove ( ) ;
if ( tgpass == false ) {
$ ( "#input_pass_div" ) . html ( '<input type="text" id="password_login_form" class="form-control input-shadow" placeholder="Пароль">' ) ;
tgpass = ! tgpass ;
} else {
tgpass = ! tgpass ;
$ ( "#input_pass_div" ) . html ( '<input type="password" id="password_login_form" class="form-control input-shadow" placeholder="Пароль">' ) ;
} ;
$ ( "#password_login_form" ) . val ( ps ) ;
} ;
</script>
Ситуация: сервер RDP, где люди работают в 1С. Часть пользователей к сожалению не удается переубедить НЕ пользоваться браузерами на удаленном рабочем столе, в результате иногда получаются ситуации что процессор забит на 100% из-за открытых firefox и chrome в ущерб работе непосредственно 1С.
Выход: принудительное понижение приоритета выполнения браузеров при помощи скрипта PowerShell
Скрипт prior.ps1:
#PowerShell
function set - ProcessPriority {
param ( $ processName = $ ( throw "Enter process name" ) , $ priority = "Normal" )
get - process - processname $ processname | foreach { $ _ . PriorityClass = $ priority }
write - host "`" $ ( $ processName ) ` "'s priority is set to `" $ ( $ priority ) ` ""
}
set - ProcessPriority chrome BelowNormal
set - ProcessPriority firefox BelowNormal
set - ProcessPriority sbis3plugin BelowNormal
Start - Sleep - Seconds 3
Для того, чтобы он без проблемно выполнялся через планировщик заданий, так-же необходимо задать групповые политики для PowerShell
Например можно реализовать как-то так (в примере на самом деле два прогрессбара). К сожалению всёж пока выходит сложнее для чтения и понимания чем «чистый» javascript+jquery
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<script src = "https://cdn.jsdelivr.net/npm/vue/dist/vue.js" > </script>
< / head >
< body >
< table id = "hotels_list" > < / table >
< div id = "hotels_pager" > < / div >
< div id = "app" >
< div class = "container" >
< div class = "row" >
< div class = "col-6" >
< persent v - bind : msg = "pers1" > < / persent >
< / div >
< div class = "col-6" >
< persent v - bind : msg = "pers2" > < / persent >
< / div >
< / div >
< / div >
< / div >
< script >
Vue . component ( 'persent' , {
props : [ 'msg' ] ,
template : '<div><div>{{ msg.txt }}</div><div class="progress"><div class="progress-bar" role="progressbar" :style="msg.style" :aria-valuenow="msg.value" aria-valuemin="0" aria-valuemax="100">{{ msg.value }}%</div></div></div>'
} ) ;
var app = new Vue ( {
el : '#app' ,
data : {
timing : null ,
pers1 : {
value : 10 ,
txt : 'Добавление новых' ,
style : 'width:20%'
} ,
pers2 : {
value : 70 ,
txt : 'Обновление' ,
style : 'width:70%'
}
} ,
mounted ( ) {
console . log ( "-загрузились полностью.." ) ;
this . runTiming ( ) ;
} ,
methods : {
runTiming ( ) {
this . timing = setInterval ( this . changeCurrentPers , 2000 )
} ,
changeCurrentPers ( ) {
vl = this ;
$ . post ( 'progress.txt' , { } , function ( data ) {
vl . pers1 . value = data ;
vl . pers1 . style = 'width:' + data + '%' ;
} ) ;
$ . post ( 'progress_update.txt' , { } , function ( data ) {
vl . pers2 . value = data ;
vl . pers2 . style = 'width:' + data + '%' ;
} ) ;
}
} ,
} ) ;
Всё ищу, гдеб его (VUE.js) можно применить.. Пока выходит «надумано»..
Навигация по записям
Жизнь замечательных грибов