1#!/usr/bin/perl 2# 3# by Sergei Butakov <sergei@bslos.com> (2011-05-1x - 2011-05-2x for V3.2.1) 4# 5 6#my %lang; 7#use strict; 8use utf8; 9# -------------------------------- 10 11$Lang{Start_Archive} = "Начать Архивирование"; 12$Lang{Stop_Dequeue_Archive} = "Остановить/Убрать из Очереди"; 13$Lang{Start_Full_Backup} = "Начать Полн. Копирование"; 14$Lang{Start_Incr_Backup} = "Начать Инкр. Копирование"; 15$Lang{Stop_Dequeue_Backup} = "Остановить/Убрать из Очереди"; 16$Lang{Restore} = "Восстановить"; 17 18$Lang{Type_full} = "полн."; 19$Lang{Type_incr} = "инкр."; 20 21# ----- 22 23$Lang{Only_privileged_users_can_view_admin_options} = "Only privileged users can view admin options."; 24$Lang{H_Admin_Options} = "BackupPC Server: Admin Options"; 25$Lang{Admin_Options} = "Администрирование"; 26$Lang{Admin_Options_Page} = <<EOF; 27\${h1(qq{$Lang{Admin_Options}})} 28<br> 29\${h2("Управление Сервером")} 30<form name="ReloadForm" action="\$MyURL" method="get"> 31<input type="hidden" name="action" value=""> 32<table class="tableStnd"> 33 <tr><td>Перезагрузить настройки сервера:<td><input type="button" value="Перезагрузить" 34 onClick="document.ReloadForm.action.value='Reload'; 35 document.ReloadForm.submit();"> 36</table> 37</form> 38<!-- 39\${h2("Server Configuration")} 40<ul> 41 <li><i>Other options can go here... e.g.,</i> 42 <li>Edit server configuration 43</ul> 44--> 45EOF 46 47$Lang{Unable_to_connect_to_BackupPC_server} = "Не могу подключиться к серверу BackupPC"; 48$Lang{Unable_to_connect_to_BackupPC_server_error_message} = <<EOF; 49This CGI script (\$MyURL) is unable to connect to the BackupPC 50server on \$Conf{ServerHost} port \$Conf{ServerPort}.<br> 51The error was: \$err.<br> 52Perhaps the BackupPC server is not running or there is a configuration error. 53Please report this to your Sys Admin. 54EOF 55 56$Lang{Admin_Start_Server} = <<EOF; 57\${h1(qq{$Lang{Unable_to_connect_to_BackupPC_server}})} 58<form action="\$MyURL" method="get"> 59The BackupPC server at <tt>\$Conf{ServerHost}</tt> port <tt>\$Conf{ServerPort}</tt> 60is not currently running (maybe you just stopped it, or haven't yet started it).<br> 61Do you want to start it? 62<input type="hidden" name="action" value="startServer"> 63<input type="submit" value="Start Server" name="ignore"> 64</form> 65EOF 66 67# ----- 68 69$Lang{H_BackupPC_Server_Status} = "Состояние Сервера BackupPC"; 70 71$Lang{BackupPC_Server_Status_General_Info}= <<EOF; 72\${h2(\"Общая Информация\")} 73 74<ul> 75<li> PID сервера \$Info{pid}, версия \$Info{Version}, 76 запущен \$serverStartTime на узле \$Conf{ServerHost}. 77<li> Данный отчёт был сформирован \$now. 78<li> Настройки последний раз загружались \$configLoadTime. 79<li> В следующий раз ПК будут поставлены в очередь запросов \$nextWakeupTime. 80<li> Прочая информация: 81 <ul> 82 <li>\$numBgQueue запросов в очереди на резервирование (с момента последнего запуска планировщика); 83 <li>\$numUserQueue запросов в пользовательской очереди на резервирование; 84 <li>\$numCmdQueue запросов в очереди на выполнение команд; 85 \$poolInfo 86 <li>Файловая система пула занята на \$Info{DUlastValue}% 87 (\$DUlastTime), сегодняшний максимум \$Info{DUDailyMax}% (\$DUmaxTime), 88 вчерашний максимум \$Info{DUDailyMaxPrev}%. 89 </ul> 90</ul> 91EOF 92 93$Lang{BackupPC_Server_Status} = <<EOF; 94\${h1(qq{$Lang{H_BackupPC_Server_Status}})} 95 96<p> 97\$generalInfo 98 99\${h2("Работы, выполняемые в данный момент времени")} 100<p> 101<table class="tableStnd" border cellspacing="1" cellpadding="3"> 102<tr class="tableheader"><td>Узел</td> 103 <td>Тип</td> 104 <td>Пользователь</td> 105 <td>Время начала</td> 106 <td>Команда</td> 107 <td align="center">PID</td> 108 <td align="center">Xfer PID</td> 109 </tr> 110\$jobStr 111</table> 112<p> 113 114\${h2("Сбои, нуждающиеся внимания")} 115<p> 116<table class="tableStnd" border cellspacing="1" cellpadding="3"> 117<tr class="tableheader"><td align="center">Узел</td> 118 <td align="center">Тип</td> 119 <td align="center">Пользователь</td> 120 <td align="center">Последняя попытка</td> 121 <td align="center">Детали</td> 122 <td align="center">Время ошибки</td> 123 <td>Последняя ошибка (не считая отсутствие \'пинга\')</td></tr> 124\$statusStr 125</table> 126EOF 127 128# -------------------------------- 129$Lang{BackupPC__Server_Summary} = "Сводка по Узлам"; 130$Lang{BackupPC__Archive} = "Архивирование"; 131$Lang{BackupPC_Summary} = <<EOF; 132 133\${h1(qq{$Lang{BackupPC__Server_Summary}})} 134<p> 135<ul> 136<li>Данный отчёт был сформирован \$now. 137<li>Файловая система пула занята на \$Info{DUlastValue}% 138 (\$DUlastTime), сегодняшний максимум \$Info{DUDailyMax}% (\$DUmaxTime), 139 вчерашний максимум \$Info{DUDailyMaxPrev}%. 140</ul> 141</p> 142 143\${h2("Узлы, имеющие резервные копии")} 144<p> 145Всего \$hostCntGood узлов, которые содержат: 146<ul> 147<li> \$fullTot полных резервных копий общим размером \${fullSizeTot}GB 148 (до объединения и сжатия); 149<li> \$incrTot инкрементальных резервных копий общим размером \${incrSizeTot}GB 150 (до объединения и сжатия). 151</ul> 152</p> 153<table class="sortable" id="host_summary_backups" border cellpadding="3" cellspacing="1"> 154<tr class="tableheader"><td>Узел</td> 155 <td align="center">Поль-ль</td> 156 <td align="center">Кол-во ПОЛН. копий</td> 157 <td align="center">ПОЛН. возраст (дни)</td> 158 <td align="center">ПОЛН. размер (ГБ)</td> 159 <td align="center">Скорость (МБ/с)</td> 160 <td align="center">Кол-во ИНКР. копий</td> 161 <td align="center">ИНКР. возраст (дни)</td> 162 <td align="center">Посл. копир-ие (дни)</td> 163 <td align="center">Состояние</td> 164 <td align="center">Трансп. ошибок</td> 165 <td align="center">Последнее действие</td></tr> 166\$strGood 167</table> 168<br><br> 169\${h2("Узлы, не имеющие резервные копии")} 170<p> 171Всего \$hostCntNone узлов, не имеющих резервных копий. 172<p> 173<table class="sortable" id="host_summary_nobackups" border cellpadding="3" cellspacing="1"> 174<tr class="tableheader"><td>Узел</td> 175 <td align="center">Поль-ль</td> 176 <td align="center">Кол-во ПОЛН. копий</td> 177 <td align="center">ПОЛН. возраст (дни)</td> 178 <td align="center">ПОЛН. размер (ГБ)</td> 179 <td align="center">Скорость (МБ/с)</td> 180 <td align="center">Кол-во ИНКР. копий</td> 181 <td align="center">ИНКР. возраст (дни)</td> 182 <td align="center">Последн. копир-ие (дни)</td> 183 <td align="center">Состояние</td> 184 <td align="center">Трансп. ошибок</td> 185 <td align="center">Последнее действие</td></tr> 186\$strNone 187</table> 188EOF 189 190$Lang{BackupPC_Archive} = <<EOF; 191\${h1(qq{$Lang{BackupPC__Archive}})} 192<script language="javascript" type="text/javascript"> 193<!-- 194 195 function checkAll(location) 196 { 197 for (var i=0;i<document.form1.elements.length;i++) 198 { 199 var e = document.form1.elements[i]; 200 if ((e.checked || !e.checked) && e.name != \'all\') { 201 if (eval("document.form1."+location+".checked")) { 202 e.checked = true; 203 } else { 204 e.checked = false; 205 } 206 } 207 } 208 } 209 210 function toggleThis(checkbox) 211 { 212 var cb = eval("document.form1."+checkbox); 213 cb.checked = !cb.checked; 214 } 215 216//--> 217</script> 218 219Всего \$hostCntGood узлов, чьи резервные копии занимают в общем \${fullSizeTot} ГБ. 220<p> 221<form name="form1" method="post" action="\$MyURL"> 222<input type="hidden" name="fcbMax" value="\$checkBoxCnt"> 223<input type="hidden" name="type" value="1"> 224<input type="hidden" name="host" value="\${EscHTML(\$archHost)}"> 225<input type="hidden" name="action" value="Archive"> 226<table class="tableStnd" border cellpadding="3" cellspacing="1"> 227<tr class="tableheader"><td align=center> Узел</td> 228 <td align="center"> Пользователь </td> 229 <td align="center"> Размер Копии </td> 230\$strGood 231\$checkAllHosts 232</table> 233</form> 234<p> 235 236EOF 237 238$Lang{BackupPC_Archive2} = <<EOF; 239\${h1(qq{$Lang{BackupPC__Archive}})} 240Архивирование следующих узлов 241<ul> 242\$HostListStr 243</ul> 244<form action="\$MyURL" method="post"> 245\$hiddenStr 246<input type="hidden" name="action" value="Archive"> 247<input type="hidden" name="host" value="\${EscHTML(\$archHost)}"> 248<input type="hidden" name="type" value="2"> 249<input type="hidden" value="0" name="archive_type"> 250<table class="tableStnd" border cellspacing="1" cellpadding="3"> 251\$paramStr 252<tr> 253 <td colspan=2><input type="submit" value="Начать Архивирование" name="ignore"></td> 254</tr> 255</form> 256</table> 257EOF 258 259$Lang{BackupPC_Archive2_location} = <<EOF; 260<tr> 261 <td>Расположение/Устройство Архива</td> 262 <td><input type="text" value="\$ArchiveDest" name="archive_device"></td> 263</tr> 264EOF 265 266$Lang{BackupPC_Archive2_compression} = <<EOF; 267<tr> 268 <td>Сжатие</td> 269 <td> 270 <input type="radio" value="0" name="compression" \$ArchiveCompNone>Нет<br> 271 <input type="radio" value="1" name="compression" \$ArchiveCompGzip>gzip<br> 272 <input type="radio" value="2" name="compression" \$ArchiveCompBzip2>bzip2 273 </td> 274</tr> 275EOF 276 277$Lang{BackupPC_Archive2_parity} = <<EOF; 278<tr> 279 <td>Percentage of Parity Data (0 = disable, 5 = typical)</td> 280 <td><input type="numeric" value="\$ArchivePar" name="par"></td> 281</tr> 282EOF 283 284$Lang{BackupPC_Archive2_split} = <<EOF; 285<tr> 286 <td>Разделить на части по</td> 287 <td><input type="numeric" value="\$ArchiveSplit" name="splitsize">МБ</td> 288</tr> 289EOF 290 291# ----------------------------------- 292$Lang{Pool_Stat} = <<EOF; 293 <li>Пул занимает \${poolSize}GB, включая \$info->{"\${name}FileCnt"} файлов 294 и \$info->{"\${name}DirCnt"} каталогов (по данным на \$poolTime); 295 <li>При хешировании пула произошло \$info->{"\${name}FileCntRep"} коллизии, 296 максимальное количество файлов в одной коллизии - \$info->{"\${name}FileRepMax"}; 297 <li>Во время ночной очистки было удалено \$info->{"\${name}FileCntRm"} файлов 298 общим размером \${poolRmSize}GB (в районе \$poolTime); 299EOF 300 301# -------------------------------- 302$Lang{BackupPC__Backup_Requested_on__host} = "BackupPC: Backup Requested on \$host"; 303# -------------------------------- 304$Lang{REPLY_FROM_SERVER} = <<EOF; 305\${h1(\$str)} 306<p> 307Ответ с сервера: \$reply 308<p> 309Вернуться на Главную страницу узла <a href="\$MyURL?host=\$host">\$host</a>. 310EOF 311# -------------------------------- 312$Lang{BackupPC__Start_Backup_Confirm_on__host} = "BackupPC: Start Backup Confirm on \$host"; 313# -------------------------------- 314$Lang{Are_you_sure_start} = <<EOF; 315\${h1("Вы уверены?")} 316<p> 317Резервное \$type копирование узла \$host. 318 319<form name="Confirm" action="\$MyURL" method="get"> 320<input type="hidden" name="host" value="\$host"> 321<input type="hidden" name="hostIP" value="\$ipAddr"> 322<input type="hidden" name="doit" value="1"> 323<input type="hidden" name="action" value=""> 324Вы уверены, что хотите сделать это? 325<input type="button" value="\$buttonText" 326 onClick="document.Confirm.action.value='\$In{action}'; 327 document.Confirm.submit();"> 328<input type="submit" value="Нет" name="ignore"> 329</form> 330EOF 331# -------------------------------- 332$Lang{BackupPC__Stop_Backup_Confirm_on__host} = "BackupPC: Stop Backup Confirm on \$host"; 333# -------------------------------- 334$Lang{Are_you_sure_stop} = <<EOF; 335 336\${h1("Вы уверены?")} 337 338<p> 339Остановка/удаление из очереди узла \$host. 340 341<form name="Confirm" action="\$MyURL" method="get"> 342<input type="hidden" name="host" value="\$host"> 343<input type="hidden" name="doit" value="1"> 344<input type="hidden" name="action" value=""> 345Также, не начинать другое резервное копирование в течение 346<input type="text" name="backoff" size="10" value="\$backoff"> часов. 347<p> 348Вы уверены, что хотите сделать это? 349<input type="button" value="\$buttonText" 350 onClick="document.Confirm.action.value='\$In{action}'; 351 document.Confirm.submit();"> 352<input type="submit" value="Нет" name="ignore"> 353</form> 354 355EOF 356# -------------------------------- 357$Lang{Only_privileged_users_can_view_queues_} = "Only privileged users can view queues."; 358# -------------------------------- 359$Lang{Only_privileged_users_can_archive} = "Only privileged users can Archive."; 360# -------------------------------- 361$Lang{BackupPC__Queue_Summary} = "BackupPC: Queue Summary"; 362# -------------------------------- 363$Lang{Backup_Queue_Summary} = <<EOF; 364\${h1("Сводка по Очередям")} 365<br><br> 366\${h2("Очередь Пользовательских Задач")} 367<p> 368Следующие запросы находятся в очереди: 369</p> 370<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%"> 371<tr class="tableheader"><td> Узел </td> 372 <td> Время Запроса </td> 373 <td> Пользователь </td></tr> 374\$strUser 375</table> 376<br><br> 377 378\${h2("Очередь Фоновых Задач")} 379<p> 380Следующие фоновые запросы находятся в очереди: 381</p> 382<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%"> 383<tr class="tableheader"><td> Узел </td> 384 <td> Время Запроса </td> 385 <td> Пользователь </td></tr> 386\$strBg 387</table> 388<br><br> 389\${h2("Очередь Команд")} 390<p> 391Следующие команды находятся в очереди: 392</p> 393<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%"> 394<tr class="tableheader"><td> Узел </td> 395 <td> Время Запроса </td> 396 <td> Пользователь </td> 397 <td> Команда </td></tr> 398\$strCmd 399</table> 400EOF 401 402# -------------------------------- 403$Lang{Backup_PC__Log_File__file} = "BackupPC: File \$file"; 404$Lang{Log_File__file__comment} = <<EOF; 405\${h1("Файл \$file \$comment")} 406<p> 407EOF 408# -------------------------------- 409$Lang{Contents_of_log_file} = <<EOF; 410Содержимое файла <tt>\$file</tt>, с последними изменениями от \$mtimeStr \$comment 411EOF 412 413# -------------------------------- 414$Lang{skipped__skipped_lines} = "[ пропущено \$skipped строк ]\n"; 415# -------------------------------- 416$Lang{_pre___Can_t_open_log_file__file} = "<pre>\nНе могу открыть журнальный файл \$file\n"; 417 418# -------------------------------- 419$Lang{BackupPC__Log_File_History} = "BackupPC: Log File History"; 420$Lang{Log_File_History__hdr} = <<EOF; 421\${h1("Архив Журналов \$hdr")} 422<p> 423<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%"> 424<tr class="tableheader"><td align="center"> Файл </td> 425 <td align="center"> Размер </td> 426 <td align="center"> Время изменения </td></tr> 427\$str 428</table> 429EOF 430 431# ------------------------------- 432$Lang{Recent_Email_Summary} = <<EOF; 433\${h1("Сводка по Последним Письмам (в обратном порядке времени)")} 434<p> 435<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%"> 436<tr class="tableheader"><td align="center"> Получатель </td> 437 <td align="center"> Узел </td> 438 <td align="center"> Время </td> 439 <td align="center"> Тема </td></tr> 440\$str 441</table> 442EOF 443 444 445# ------------------------------ 446$Lang{Browse_backup__num_for__host} = "BackupPC: Browse backup \$num for \$host"; 447 448# ------------------------------ 449$Lang{Restore_Options_for__host} = "BackupPC: Restore Options for \$host"; 450$Lang{Restore_Options_for__host2} = <<EOF; 451\${h1("Параметры Восстановления для Узла \$host")} 452<p> 453Вы выбрали следующие файлы/каталоги из 454ресурса \$share, номер копии № \$num: 455<ul> 456\$fileListStr 457</ul> 458</p><p> 459Выберите один из трёх способов восстановления. 460</p> 461\${h2("Способ 1: Прямое Восстановление")} 462<p> 463EOF 464 465$Lang{Restore_Options_for__host_Option1} = <<EOF; 466Вы можете восстановить данные напрямую в 467<b>\$directHost</b>. 468</p><p> 469<b>Внимание:</b> все существующие файлы, совпадающие с выбранными, 470будут переписаны! 471</p> 472<form action="\$MyURL" method="post" name="direct"> 473<input type="hidden" name="host" value="\${EscHTML(\$host)}"> 474<input type="hidden" name="num" value="\$num"> 475<input type="hidden" name="type" value="3"> 476\$hiddenStr 477<input type="hidden" value="\$In{action}" name="action"> 478<table class="tableStnd" border="0"> 479<tr> 480 <td>Восстановить на узел</td> 481 <td><!--<input type="text" size="40" value="\${EscHTML(\$host)}" 482 name="hostDest">--> 483 <select name="hostDest" onChange="document.direct.shareDest.value=''"> 484 \$hostDestSel 485 </select> 486 <script language="Javascript"> 487 function myOpen(URL) { 488 window.open(URL,'','width=500,height=400'); 489 } 490 </script> 491 <!--<a href="javascript:myOpen('\$MyURL?action=findShares&host='+document.direct.hostDest.options.value)">Search for available shares (NOT IMPLEMENTED)</a>--></td> 492</tr><tr> 493 <td>Восстановить на ресурс</td> 494 <td><input type="text" size="40" value="\${EscHTML(\$share)}" 495 name="shareDest"></td> 496</tr><tr> 497 <td>Восстановить в каталог<br>(относительно ресурса)</td> 498 <td valign="top"><input type="text" size="40" maxlength="256" 499 value="\${EscHTML(\$pathHdr)}" name="pathHdr"></td> 500</tr><tr> 501 <td><input type="submit" value="Начать Восстановление" name="ignore"></td> 502</table> 503</form> 504EOF 505 506$Lang{Restore_Options_for__host_Option1_disabled} = <<EOF; 507Direct restore has been disabled for host \${EscHTML(\$hostDest)}. 508Please select one of the other restore options. 509EOF 510 511# ------------------------------ 512$Lang{Option_2__Download_Zip_archive} = <<EOF; 513<p> 514\${h2("Способ 2: Загрузка Zip-архива")} 515<p> 516Вы можете загрузить Zip-архив, содержащий все выбранные файлы и каталоги. 517После чего, используя локальное приложение, такое как WinZip, можно просмотреть 518или разархивировать любые файлы. 519</p><p> 520<b>Внимание:</b> в зависимости от выбранных Вами файлов/каталогов, 521этот архив может быть очень очень большим. На создание и передачу 522такого архива может уйти много времени, и Вам понадобится достаточно 523много места на локальном диске для его хранения. 524</p> 525<form action="\$MyURL" method="post"> 526<input type="hidden" name="host" value="\${EscHTML(\$host)}"> 527<input type="hidden" name="num" value="\$num"> 528<input type="hidden" name="type" value="2"> 529\$hiddenStr 530<input type="hidden" value="\$In{action}" name="action"> 531<input type="checkbox" value="1" name="relative" checked> Создать архив относительно 532\${EscHTML(\$pathHdr eq "" ? "/" : \$pathHdr)} 533(в противном случае файлы в архиве будут иметь полные пути). 534<br> 535<table class="tableStnd" border="0"> 536<tr> 537 <td>Степень сжатия (0=нет, 1=самая быстрая, ..., 9=самая большая)</td> 538 <td><input type="text" size="6" value="5" name="compressLevel"></td> 539</tr><tr> 540 <td>Code page (e.g. cp866)</td> 541 <td><input type="text" size="6" value="utf8" name="codePage"></td> 542</tr> 543</table> 544<br> 545<input type="submit" value="Загрузить Zip-архив" name="ignore"> 546</form> 547EOF 548 549# ------------------------------ 550 551$Lang{Option_2__Download_Zip_archive2} = <<EOF; 552<p> 553\${h2("Option 2: Download Zip archive")} 554<p> 555Archive::Zip is not installed so you will not be able to download a 556zip archive. 557Please ask your system adminstrator to install Archive::Zip from 558<a href="http://www.cpan.org">www.cpan.org</a>. 559</p> 560EOF 561 562 563# ------------------------------ 564$Lang{Option_3__Download_Zip_archive} = <<EOF; 565\${h2("Способ 3: Загрузка Tar-архива")} 566<p> 567Вы можете загрузить Tar-архив, содержащий все выбранные файлы и каталоги. 568После чего, используя локальное приложение, такое как tar или WinZip, 569можно просмотреть или разархивировать любые файлы. 570</p><p> 571<b>Внимание:</b> в зависимости от выбранных Вами файлов/каталогов, 572этот архив может быть очень очень большим. На создание и передачу 573такого архива может уйти много времени, и Вам понадобится достаточно 574много места на локальном диске для его хранения. 575</p> 576<form action="\$MyURL" method="post"> 577<input type="hidden" name="host" value="\${EscHTML(\$host)}"> 578<input type="hidden" name="num" value="\$num"> 579<input type="hidden" name="type" value="1"> 580\$hiddenStr 581<input type="hidden" value="\$In{action}" name="action"> 582<input type="checkbox" value="1" name="relative" checked> Создать архив относительно 583\${EscHTML(\$pathHdr eq "" ? "/" : \$pathHdr)} 584(в противном случае файлы в архиве будут иметь полные пути). 585<br> 586<input type="submit" value="Загрузить Tar-архив" name="ignore"> 587</form> 588EOF 589 590 591# ------------------------------ 592$Lang{Restore_Confirm_on__host} = "BackupPC: Restore Confirm on \$host"; 593 594$Lang{Are_you_sure} = <<EOF; 595\${h1("Вы уверены? Точно-точно? А если подумать? Может всё-таки не надо?")} 596<p> 597Следующие файлы будут восстановлены напрямую на узел \$In{hostDest} в ресурс 598\$In{shareDest}, из резервной копии № \$num: 599<p> 600<table class="tableStnd" border> 601<tr class="tableheader"><td>Оригинальный файл/каталог</td><td>Будет восстановлен как</td></tr> 602\$fileListStr 603</table> 604 605<form name="RestoreForm" action="\$MyURL" method="post"> 606<input type="hidden" name="host" value="\${EscHTML(\$host)}"> 607<input type="hidden" name="hostDest" value="\${EscHTML(\$In{hostDest})}"> 608<input type="hidden" name="shareDest" value="\${EscHTML(\$In{shareDest})}"> 609<input type="hidden" name="pathHdr" value="\${EscHTML(\$In{pathHdr})}"> 610<input type="hidden" name="num" value="\$num"> 611<input type="hidden" name="type" value="4"> 612<input type="hidden" name="action" value=""> 613\$hiddenStr 614Вы уверены? 615<input type="button" value="\$Lang->{Restore}" 616 onClick="document.RestoreForm.action.value='Restore'; 617 document.RestoreForm.submit();"> 618<input type="submit" value="Нет" name="ignore"> 619</form> 620EOF 621 622 623# -------------------------- 624$Lang{Restore_Requested_on__hostDest} = "BackupPC: Restore Requested on \$hostDest"; 625$Lang{Reply_from_server_was___reply} = <<EOF; 626\${h1(\$str)} 627<p> 628Ответ с сервера: \$reply 629<p> 630Вернуться на Главную страницу узла <a href="\$MyURL?host=\$hostDest">\$hostDest</a>. 631EOF 632 633$Lang{BackupPC_Archive_Reply_from_server} = <<EOF; 634\${h1(\$str)} 635<p> 636Ответ с сервера: \$reply 637EOF 638 639 640# ------------------------- 641$Lang{Host__host_Backup_Summary} = "BackupPC: Host \$host Backup Summary"; 642 643$Lang{Host__host_Backup_Summary2} = <<EOF; 644\${h1("Сводка по Узлу \$host")} 645<p> 646\$warnStr 647<ul> 648\$statusStr 649</ul> 650</p> 651\${h2("Пользовательские Действия")} 652<p> 653<form name="StartStopForm" action="\$MyURL" method="get"> 654<input type="hidden" name="host" value="\$host"> 655<input type="hidden" name="action" value=""> 656\$startIncrStr 657<input type="button" value="\$Lang->{Start_Full_Backup}" 658 onClick="document.StartStopForm.action.value='Start_Full_Backup'; 659 document.StartStopForm.submit();"> 660<input type="button" value="\$Lang->{Stop_Dequeue_Backup}" 661 onClick="document.StartStopForm.action.value='Stop_Dequeue_Backup'; 662 document.StartStopForm.submit();"> 663</form> 664</p> 665\${h2("Сводка Резервного Копирования")} 666<p> 667Щёлкните по номеру для просмотра и восстановления скопированных файлов. 668</p> 669<table class="tableStnd" border cellspacing="1" cellpadding="3"> 670<tr class="tableheader"><td align="center"> № </td> 671 <td align="center"> Тип </td> 672 <td align="center"> Полный </td> 673 <td align="center"> Уровень </td> 674 <td align="center"> Дата Начала </td> 675 <td align="center"> Длительность(мин) </td> 676 <td align="center"> Возраст(дни) </td> 677 <td align="center"> Локальный Путь Копии </td> 678</tr> 679\$str 680</table> 681<p> 682 683\$restoreStr 684</p> 685<br><br> 686\${h2("Сводка Ошибок при Копировании")} 687<br><br> 688<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%"> 689<tr class="tableheader"><td align="center"> № </td> 690 <td align="center"> Тип </td> 691 <td align="center"> Журнал </td> 692 <td align="center"> Трансп. ошибок </td> 693 <td align="center"> Плохих файлов </td> 694 <td align="center"> Ресурс. проблем </td> 695 <td align="center"> tar ошибок </td> 696</tr> 697\$errStr 698</table> 699<br><br> 700 701\${h2("Сводка по Файлам")} 702<p> 703Существующие файлы - файлы, уже находящиеся в пуле. 704Новые это те, которые добавлены к пулу. 705Пустые файлы не учитываются. 706Empty files and SMB errors aren\'t counted in the reuse and new counts. 707</p> 708<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%"> 709<tr class="tableheader"><td colspan="2" bgcolor="#ffffff"></td> 710 <td align="center" colspan="3"> Всего </td> 711 <td align="center" colspan="2"> Существующие Файлы </td> 712 <td align="center" colspan="2"> Новые Файлы </td> 713</tr> 714<tr class="tableheader"> 715 <td align="center"> № </td> 716 <td align="center"> Тип </td> 717 <td align="center"> Файлов </td> 718 <td align="center"> Размер(МБ) </td> 719 <td align="center"> МБ/с </td> 720 <td align="center"> Файлов </td> 721 <td align="center"> Размер(МБ) </td> 722 <td align="center"> Файлов </td> 723 <td align="center"> Размер(МБ) </td> 724</tr> 725\$sizeStr 726</table> 727<br><br> 728 729\${h2("Сводка по Сжатию")} 730<p> 731Степень сжатия существующих и новых файлов. 732</p> 733<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%"> 734<tr class="tableheader"><td colspan="3" bgcolor="#ffffff"></td> 735 <td align="center" colspan="3"> Существующие Файлы </td> 736 <td align="center" colspan="3"> Новые Файлы </td> 737</tr> 738<tr class="tableheader"><td align="center"> № </td> 739 <td align="center"> Тип </td> 740 <td align="center"> Уровень Сжатия </td> 741 <td align="center"> Размер(МБ) </td> 742 <td align="center"> Сжатый(МБ) </td> 743 <td align="center"> Степень сж. </td> 744 <td align="center"> Размер(МБ) </td> 745 <td align="center"> Сжатый(МБ) </td> 746 <td align="center"> Степень сж. </td> 747</tr> 748\$compStr 749</table> 750<br><br> 751EOF 752 753$Lang{Host__host_Archive_Summary} = "BackupPC: Host \$host Archive Summary"; 754$Lang{Host__host_Archive_Summary2} = <<EOF; 755\${h1("Сводка по Архиву \$host")} 756<p> 757\$warnStr 758<ul> 759\$statusStr 760</ul> 761 762\${h2("Пользовательские Действия")} 763<p> 764<form name="StartStopForm" action="\$MyURL" method="get"> 765<input type="hidden" name="archivehost" value="\$host"> 766<input type="hidden" name="host" value="\$host"> 767<input type="hidden" name="action" value=""> 768<input type="button" value="\$Lang->{Start_Archive}" 769 onClick="document.StartStopForm.action.value='Start_Archive'; 770 document.StartStopForm.submit();"> 771<input type="button" value="\$Lang->{Stop_Dequeue_Archive}" 772 onClick="document.StartStopForm.action.value='Stop_Dequeue_Archive'; 773 document.StartStopForm.submit();"> 774</form> 775 776\$ArchiveStr 777 778EOF 779 780# ------------------------- 781$Lang{Error} = "BackupPC: Error"; 782$Lang{Error____head} = <<EOF; 783\${h1("Error: \$head")} 784<p>\$mesg</p> 785EOF 786 787# ------------------------- 788$Lang{NavSectionTitle_} = "Сервер"; 789 790# ------------------------- 791$Lang{Backup_browse_for__host} = <<EOF; 792\${h1("Просмотр Резервной Копии Узла \$host")} 793 794<script language="javascript" type="text/javascript"> 795<!-- 796 797 function checkAll(location) 798 { 799 for (var i=0;i<document.form1.elements.length;i++) 800 { 801 var e = document.form1.elements[i]; 802 if ((e.checked || !e.checked) && e.name != \'all\') { 803 if (eval("document.form1."+location+".checked")) { 804 e.checked = true; 805 } else { 806 e.checked = false; 807 } 808 } 809 } 810 } 811 812 function toggleThis(checkbox) 813 { 814 var cb = eval("document.form1."+checkbox); 815 cb.checked = !cb.checked; 816 } 817 818//--> 819</script> 820 821<form name="form0" method="post" action="\$MyURL"> 822<input type="hidden" name="num" value="\$num"> 823<input type="hidden" name="host" value="\$host"> 824<input type="hidden" name="share" value="\${EscHTML(\$share)}"> 825<input type="hidden" name="action" value="browse"> 826<ul> 827<li> Копия № \$num, создание которой было начато примерно \$backupTime 828 (\$backupAge дней назад), 829\$filledBackup 830<li> Введите каталог: <input type="text" name="dir" size="50" maxlength="4096" value="\${EscHTML(\$dir)}"> <input type="submit" value="\$Lang->{Go}" name="Submit"> 831<li> Щёлкните на каталог, чтобы увидеть его содержимое. 832<li> Щёлкните на файл, чтобы восстановить его. 833<li> <a href="\$MyURL?action=dirHistory&host=\${EscURI(\$host)}&share=\$shareURI&dir=\$pathURI">История копий</a> текущего каталога. 834</ul> 835</form> 836 837\${h2("Содержание каталога \$dirDisplay")} 838<form name="form1" method="post" action="\$MyURL"> 839<input type="hidden" name="num" value="\$num"> 840<input type="hidden" name="host" value="\$host"> 841<input type="hidden" name="share" value="\${EscHTML(\$share)}"> 842<input type="hidden" name="fcbMax" value="\$checkBoxCnt"> 843<input type="hidden" name="action" value="Restore"> 844<br> 845<table width="100%"> 846<tr><td valign="top" width="30%"> 847 <table align="left" border="0" cellpadding="0" cellspacing="0" bgcolor="#ffffff"> 848 \$dirStr 849 </table> 850</td><td width="3%"> 851</td><td valign="top"> 852 <br> 853 <table border width="100%" align="left" cellpadding="3" cellspacing="1"> 854 \$fileHeader 855 \$topCheckAll 856 \$fileStr 857 \$checkAll 858 </table> 859 </td></tr></table> 860<br> 861<!-- 862This is now in the checkAll row 863<input type="submit" name="Submit" value="Restore selected files"> 864--> 865</form> 866EOF 867 868# ------------------------------ 869$Lang{DirHistory_backup_for__host} = "BackupPC: Directory backup history for \$host"; 870 871# 872# These two strings are used to build the links for directories and 873# file versions. Files are appended with a version number. 874# 875$Lang{DirHistory_dirLink} = "dir"; 876$Lang{DirHistory_fileLink} = "v"; 877 878$Lang{DirHistory_for__host} = <<EOF; 879\${h1("История каталога резервной копии для узла \$host")} 880<p> 881Здесь показаны все уникальные версии файлов, находящиеся во всех 882резервных копиях: 883<ul> 884<li> Щёлкните по номеру копии для возврата к просмотру копии; 885<li> Щёлкните по ссылке на каталог (\$Lang->{DirHistory_dirLink}) для захода 886 в этот каталог; 887<li> Щёлкните по версии файла (\$Lang->{DirHistory_fileLink}0, 888 \$Lang->{DirHistory_fileLink}1, ...) для загрузки этого файла; 889<li> Файлы из разных резервных копий, содержащие одно и то же, 890 имеют один и тот же номер версии; 891<li> Файлы и каталоги, отсутствующие в конкретной копии, показаны 892 пустым прямоугольником; 893<li> Файлы одной версии могут отличаться разными атрибутами файловой системы. 894 Выберите номер копии, чтобы посмотреть эти атрибуты. 895</ul> 896 897\${h2("История \$dirDisplay")} 898 899<br> 900<table border cellspacing="2" cellpadding="3"> 901<tr class="fviewheader"><td>Номер копии</td>\$backupNumStr</tr> 902<tr class="fviewheader"><td>Время копирования</td>\$backupTimeStr</tr> 903\$fileStr 904</table> 905EOF 906 907# ------------------------------ 908$Lang{Restore___num_details_for__host} = "BackupPC: Restore #\$num details for \$host"; 909 910$Lang{Restore___num_details_for__host2} = <<EOF; 911\${h1("Детали восстановления № \$num для узла \$host")} 912<p> 913<table class="tableStnd" border cellspacing="1" cellpadding="3" width="90%"> 914<tr><td class="tableheader"> Номер </td><td class="border"> \$Restores[\$i]{num} </td></tr> 915<tr><td class="tableheader"> Запросил </td><td class="border"> \$RestoreReq{user} </td></tr> 916<tr><td class="tableheader"> Время запроса </td><td class="border"> \$reqTime </td></tr> 917<tr><td class="tableheader"> Результат </td><td class="border"> \$Restores[\$i]{result} </td></tr> 918<tr><td class="tableheader"> Текст ошибки </td><td class="border"> \$Restores[\$i]{errorMsg} </td></tr> 919<tr><td class="tableheader"> Исходящий узел </td><td class="border"> \$RestoreReq{hostSrc} </td></tr> 920<tr><td class="tableheader"> Номер исходящей копии </td><td class="border"> \$RestoreReq{num} </td></tr> 921<tr><td class="tableheader"> Исходящий ресурс </td><td class="border"> \$RestoreReq{shareSrc} </td></tr> 922<tr><td class="tableheader"> Узел назначения </td><td class="border"> \$RestoreReq{hostDest} </td></tr> 923<tr><td class="tableheader"> Ресурс назначения </td><td class="border"> \$RestoreReq{shareDest} </td></tr> 924<tr><td class="tableheader"> Время начала </td><td class="border"> \$startTime </td></tr> 925<tr><td class="tableheader"> Продолжительность </td><td class="border"> \$duration мин </td></tr> 926<tr><td class="tableheader"> Количество файлов </td><td class="border"> \$Restores[\$i]{nFiles} </td></tr> 927<tr><td class="tableheader"> Общий размер </td><td class="border"> \${MB} МБ </td></tr> 928<tr><td class="tableheader"> Скорость передачи </td><td class="border"> \$MBperSec МБ/с </td></tr> 929<tr><td class="tableheader"> Ошибок при создании Tar </td><td class="border"> \$Restores[\$i]{tarCreateErrs} </td></tr> 930<tr><td class="tableheader"> Ошибок при передаче </td><td class="border"> \$Restores[\$i]{xferErrs} </td></tr> 931<tr><td class="tableheader"> Журнал </td><td class="border"> 932<a href="\$MyURL?action=view&type=RestoreLOG&num=\$Restores[\$i]{num}&host=\$host">Весь</a>, 933<a href="\$MyURL?action=view&type=RestoreErr&num=\$Restores[\$i]{num}&host=\$host">Только ошибки</a> 934</tr></tr> 935</table> 936</p> 937\${h1("Список Файлов/Каталогов")} 938<p> 939<table class="tableStnd" border cellspacing="1" cellpadding="3" width="100%"> 940<tr class="tableheader"><td>Оригинальный файл/каталог</td><td>Восстановлен как</td></tr> 941\$fileListStr 942</table> 943EOF 944 945# ------------------------------ 946$Lang{Archive___num_details_for__host} = "BackupPC: Archive #\$num details for \$host"; 947 948$Lang{Archive___num_details_for__host2 } = <<EOF; 949\${h1("Детали по Архиву № \$num узла \$host")} 950<p> 951<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%"> 952<tr><td class="tableheader"> Номер </td><td class="border"> \$Archives[\$i]{num} </td></tr> 953<tr><td class="tableheader"> Запросил </td><td class="border"> \$ArchiveReq{user} </td></tr> 954<tr><td class="tableheader"> Время запроса </td><td class="border"> \$reqTime </td></tr> 955<tr><td class="tableheader"> Результат </td><td class="border"> \$Archives[\$i]{result} </td></tr> 956<tr><td class="tableheader"> Сообщение об ошибке </td><td class="border"> \$Archives[\$i]{errorMsg} </td></tr> 957<tr><td class="tableheader"> Время запуска </td><td class="border"> \$startTime </td></tr> 958<tr><td class="tableheader"> Продолжительность </td><td class="border"> \$duration min </td></tr> 959<tr><td class="tableheader"> Журнал передачи данных </td><td class="border"> 960<a href="\$MyURL?action=view&type=ArchiveLOG&num=\$Archives[\$i]{num}&host=\$host">Просмотреть</a>, 961<a href="\$MyURL?action=view&type=ArchiveErr&num=\$Archives[\$i]{num}&host=\$host">Только ошибки</a> 962</tr></tr> 963</table> 964<p> 965\${h1("Список узлов")} 966<p> 967<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%"> 968<tr class="tableheader"><td>Узел</td><td>Номер резервной копии</td></tr> 969\$HostListStr 970</table> 971EOF 972 973# ----------------------------------- 974$Lang{Email_Summary} = "BackupPC: Email Summary"; 975 976# ----------------------------------- 977# !! ERROR messages !! 978# ----------------------------------- 979$Lang{BackupPC__Lib__new_failed__check_apache_error_log} = "BackupPC::Lib->new failed: check apache error_log\n"; 980$Lang{Wrong_user__my_userid_is___} = 981 "Wrong user: my userid is \$>, instead of \$uid" 982 . "(\$Conf{BackupPCUser})\n"; 983# $Lang{Only_privileged_users_can_view_PC_summaries} = "Only privileged users can view PC summaries."; 984$Lang{Only_privileged_users_can_stop_or_start_backups} = 985 "Only privileged users can stop or start backups on" 986 . " \${EscHTML(\$host)}."; 987$Lang{Invalid_number__num} = "Invalid number \${EscHTML(\$In{num})}"; 988$Lang{Unable_to_open__file__configuration_problem} = "Unable to open \$file: configuration problem?"; 989$Lang{Only_privileged_users_can_view_log_or_config_files} = "Only privileged users can view log or config files."; 990$Lang{Only_privileged_users_can_view_log_files} = "Only privileged users can view log files."; 991$Lang{Only_privileged_users_can_view_email_summaries} = "Only privileged users can view email summaries."; 992$Lang{Only_privileged_users_can_browse_backup_files} = "Only privileged users can browse backup files" 993 . " for host \${EscHTML(\$In{host})}."; 994$Lang{Empty_host_name} = "Empty host name."; 995$Lang{Directory___EscHTML} = "Directory \${EscHTML(\"\$TopDir/pc/\$host/\$num\")}" 996 . " is empty"; 997$Lang{Can_t_browse_bad_directory_name2} = "Не могу просмотреть каталог с неправильным названием" 998 . " \${EscHTML(\$relDir)}"; 999$Lang{Only_privileged_users_can_restore_backup_files} = "Only privileged users can restore backup files" 1000 . " for host \${EscHTML(\$In{host})}."; 1001$Lang{Bad_host_name} = "Bad host name \${EscHTML(\$host)}"; 1002$Lang{You_haven_t_selected_any_files__please_go_Back_to} = "Вы не выбрали ни один файл."; 1003$Lang{You_haven_t_selected_any_hosts} = "You haven\'t selected any hosts; please go Back to" 1004 . " select some hosts."; 1005$Lang{Nice_try__but_you_can_t_put} = "Nice try, but you can\'t put \'..\' in any of the file names"; 1006$Lang{Host__doesn_t_exist} = "Host \${EscHTML(\$In{hostDest})} doesn\'t exist"; 1007$Lang{You_don_t_have_permission_to_restore_onto_host} = "You don\'t have permission to restore onto host" 1008 . " \${EscHTML(\$In{hostDest})}"; 1009$Lang{Can_t_open_create__openPath} = "Can\'t open/create " 1010 . "\${EscHTML(\"\$openPath\")}"; 1011$Lang{Only_privileged_users_can_restore_backup_files2} = "Only privileged users can restore backup files" 1012 . " for host \${EscHTML(\$host)}."; 1013$Lang{Empty_host_name} = "Empty host name"; 1014$Lang{Unknown_host_or_user} = "Неизвестный узел или пользователь \${EscHTML(\$host)}"; 1015$Lang{Only_privileged_users_can_view_information_about} = "Only privileged users can view information about" 1016 . " host \${EscHTML(\$host)}." ; 1017$Lang{Only_privileged_users_can_view_archive_information} = "Only privileged users can view archive information."; 1018$Lang{Only_privileged_users_can_view_restore_information} = "Only privileged users can view restore information."; 1019$Lang{Restore_number__num_for_host__does_not_exist} = "Restore number \$num for host \${EscHTML(\$host)} does" 1020 . " not exist."; 1021$Lang{Archive_number__num_for_host__does_not_exist} = "Archive number \$num for host \${EscHTML(\$host)} does" 1022 . " not exist."; 1023$Lang{Can_t_find_IP_address_for} = "Can\'t find IP address for \${EscHTML(\$host)}"; 1024$Lang{host_is_a_DHCP_host} = <<EOF; 1025\$host is a DHCP host, and I don\'t know its IP address. I checked the 1026netbios name of \$ENV{REMOTE_ADDR}\$tryIP, and found that that machine 1027is not \$host. 1028<p> 1029Until I see \$host at a particular DHCP address, you can only 1030start this request from the client machine itself. 1031EOF 1032 1033# ------------------------------------ 1034# !! Server Mesg !! 1035# ------------------------------------ 1036 1037$Lang{Backup_requested_on_DHCP__host} = "Резервное копирование DHCP узла \$host (\$In{hostIP}) запросил" 1038 . " \$User с \$ENV{REMOTE_ADDR}"; 1039$Lang{Backup_requested_on__host_by__User} = "Резервное копирование узла \$host запросил \$User"; 1040$Lang{Backup_stopped_dequeued_on__host_by__User} = "Резервное копирование для узла \$host остановил/убрал из очереди \$User"; 1041$Lang{Restore_requested_to_host__hostDest__backup___num} = "Восстановление на узел \$hostDest, копию № \$num," 1042 . " запросил \$User с \$ENV{REMOTE_ADDR}"; 1043$Lang{Archive_requested} = "Архивирование запросил \$User с \$ENV{REMOTE_ADDR}"; 1044 1045# ------------------------------------------------- 1046# ------- Stuff that was forgotten ---------------- 1047# ------------------------------------------------- 1048 1049$Lang{Status} = "Состояние"; 1050$Lang{PC_Summary} = "Сводка по Узлам"; 1051$Lang{LOG_file} = "Журнал"; 1052$Lang{LOG_files} = "Старые журналы"; 1053$Lang{Old_LOGs} = "Старые журналы"; 1054$Lang{Email_summary} = "Сводка по Письмам"; 1055$Lang{Config_file} = "Config file"; 1056# $Lang{Hosts_file} = "Hosts file"; 1057$Lang{Current_queues} = "Сводка по Очередям"; 1058$Lang{Documentation} = "Руководство"; 1059 1060#$Lang{Host_or_User_name} = "<small>Host or User name:</small>"; 1061$Lang{Go} = "Найти"; 1062$Lang{Hosts} = "Узлы"; 1063$Lang{Select_a_host} = "Выбрать узел ..."; 1064 1065$Lang{There_have_been_no_archives} = "<h2> Архивы отсутствуют </h2>\n"; 1066$Lang{This_PC_has_never_been_backed_up} = "<h2> Данный ПК ни разу не резервировался!! </h2>\n"; 1067$Lang{This_PC_is_used_by} = "<li>Данный ПК использует \${UserLink(\$user)}"; 1068 1069$Lang{Extracting_only_Errors} = "(Выбраны только ошибки)"; 1070$Lang{XferLOG} = "Весь"; 1071$Lang{Errors} = "Только Ошибки"; 1072 1073# ------------ 1074$Lang{Last_email_sent_to__was_at___subject} = <<EOF; 1075<li>Последнее письмо было отправлено \$mailTime, с темой "\$subj". 1076EOF 1077# ------------ 1078$Lang{The_command_cmd_is_currently_running_for_started} = <<EOF; 1079<li>Команда \$cmd выполняется для узла \$host, запущена \$startTime. 1080EOF 1081 1082# ----------- 1083$Lang{Host_host_is_queued_on_the_background_queue_will_be_backed_up_soon} = <<EOF; 1084<li>Узел \$host поставлен в фоновую очередь (скоро будет запущено резервное копирование). 1085EOF 1086 1087# ---------- 1088$Lang{Host_host_is_queued_on_the_user_queue__will_be_backed_up_soon} = <<EOF; 1089<li>Узел \$host поставлен в пользовательскую очередь (скоро будет запущено резервное копирование). 1090EOF 1091 1092# --------- 1093$Lang{A_command_for_host_is_on_the_command_queue_will_run_soon} = <<EOF; 1094<li>Команда для узла \$host поставлена в очередь команд (скоро будет запущена). 1095EOF 1096 1097# -------- 1098$Lang{Last_status_is_state_StatusHost_state_reason_as_of_startTime} = <<EOF; 1099<li>Состояние \"\$Lang->{\$StatusHost{state}}\"\$reason на \$startTime. 1100EOF 1101 1102# -------- 1103$Lang{Last_error_is____EscHTML_StatusHost_error} = <<EOF; 1104<li>Последняя ошибка: \"\${EscHTML(\$StatusHost{error})}\". 1105EOF 1106 1107# ------ 1108$Lang{Pings_to_host_have_failed_StatusHost_deadCnt__consecutive_times} = <<EOF; 1109<li>"Пропинговать" узел \$host не удалось \$StatusHost{deadCnt} раз(а) подряд. 1110EOF 1111 1112# ----- 1113$Lang{Prior_to_that__pings} = "Prior to that, pings"; 1114 1115# ----- 1116$Lang{priorStr_to_host_have_succeeded_StatusHostaliveCnt_consecutive_times} = <<EOF; 1117<li>\$priorStr to \$host были успешны \$StatusHost{aliveCnt} 1118 раз(а) подряд. 1119EOF 1120 1121$Lang{Because__host_has_been_on_the_network_at_least__Conf_BlackoutGoodCnt_consecutive_times___} = <<EOF; 1122<li>Because \$host has been on the network at least \$Conf{BlackoutGoodCnt} 1123consecutive times, it will not be backed up from \$blackoutStr. 1124EOF 1125 1126$Lang{__time0_to__time1_on__days} = "\$t0 to \$t1 on \$days"; 1127 1128$Lang{Backups_are_deferred_for_hours_hours_change_this_number} = <<EOF; 1129<li>Backups are deferred for \$hours hours 1130(<a href=\"\$MyURL?action=Stop_Dequeue_Backup&host=\$host\">change this number</a>). 1131EOF 1132 1133$Lang{tryIP} = " and \$StatusHost{dhcpHostIP}"; 1134 1135# $Lang{Host_Inhost} = "Host \$In{host}"; 1136 1137$Lang{checkAll} = <<EOF; 1138<tr><td class="fviewborder"> 1139<input type="checkbox" name="allFiles" onClick="return checkAll('allFiles');"> Выбрать всё 1140</td><td colspan="5" align="center" class="fviewborder"> 1141<input type="submit" name="Submit" value="Восстановить выбранные файлы и каталоги"> 1142</td></tr> 1143EOF 1144 1145$Lang{checkAllHosts} = <<EOF; 1146<tr><td class="fviewborder"> 1147<input type="checkbox" name="allFiles" onClick="return checkAll('allFiles');"> Выбрать всё 1148</td><td colspan="2" align="center" class="fviewborder"> 1149<input type="submit" name="Submit" value="Заархивировать выбранные узлы"> 1150</td></tr> 1151EOF 1152 1153$Lang{fileHeader} = <<EOF; 1154 <tr class="fviewheader"><td align=center> Название</td> 1155 <td align="center"> Тип</td> 1156 <td align="center"> Права</td> 1157 <td align="center"> №</td> 1158 <td align="center"> Размер</td> 1159 <td align="center"> Дата изменения</td> 1160 </tr> 1161EOF 1162 1163$Lang{Home} = "Главная"; 1164$Lang{Browse} = "Просмотр резервной копии"; 1165$Lang{Last_bad_XferLOG} = "Последний журнал с ошибками"; 1166$Lang{Last_bad_XferLOG_errors_only} = "Последний журнал с ошибками (только ошибки)"; 1167 1168$Lang{This_display_is_merged_with_backup} = <<EOF; 1169<li> Данное отображение объединено с копией № \$numF. 1170EOF 1171 1172$Lang{Visit_this_directory_in_backup} = <<EOF; 1173<li> Выберите номер копии для просмотра: <select onChange="window.location=this.value">\$otherDirs </select> 1174EOF 1175 1176$Lang{Restore_Summary} = <<EOF; 1177\${h2("Сводка Восстановлений")} 1178<p> 1179Щёлкните по номеру для более детального просмотра. 1180<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%"> 1181<tr class="tableheader"><td align="center"> № </td> 1182 <td align="center"> Результат </td> 1183 <td align="right"> Дата начала </td> 1184 <td align="right"> Длительность(мин) </td> 1185 <td align="right"> Кол-во файлов </td> 1186 <td align="right"> Размер(МБ) </td> 1187 <td align="right"> tar ошибок </td> 1188 <td align="right"> Трансп. ошибок </td> 1189</tr> 1190\$restoreStr 1191</table> 1192<p> 1193EOF 1194 1195$Lang{Archive_Summary} = <<EOF; 1196\${h2("Архивная Сводка")} 1197<p> 1198Щёлкните по номеру архива для более детального просмотра. 1199<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%"> 1200<tr class="tableheader"><td align="center"> № </td> 1201 <td align="center"> Результат </td> 1202 <td align="right"> Время Запуска </td> 1203 <td align="right"> Продолжительность(мин)</td> 1204</tr> 1205\$ArchiveStr 1206</table> 1207<p> 1208EOF 1209 1210$Lang{BackupPC__Documentation} = "BackupPC: Documentation"; 1211 1212$Lang{No} = "нет"; 1213$Lang{Yes} = "да"; 1214 1215$Lang{The_directory_is_empty} = <<EOF; 1216<tr><td bgcolor="#ffffff">The directory \$dirDisplay is empty 1217</td></tr> 1218EOF 1219 1220#$Lang{on} = "on"; 1221$Lang{off} = "откл."; 1222 1223$Lang{backupType_full} = "полн."; 1224$Lang{backupType_incr} = "инкр."; 1225$Lang{backupType_partial} = "частичный"; 1226 1227$Lang{failed} = "неудачно"; 1228$Lang{success} = "успешно"; 1229$Lang{and} = "и"; 1230 1231# ------ 1232# Hosts states and reasons 1233$Lang{Status_idle} = "бездействует"; 1234$Lang{Status_backup_starting} = "началось копирование"; 1235$Lang{Status_backup_in_progress} = "в процессе копирования"; 1236$Lang{Status_restore_starting} = "началось восстановление"; 1237$Lang{Status_restore_in_progress} = "в процессе восстановления"; 1238$Lang{Status_link_pending} = "link pending"; 1239$Lang{Status_link_running} = "link running"; 1240 1241$Lang{Reason_backup_done} = "копирование закончено"; 1242$Lang{Reason_restore_done} = "восстановление закончено"; 1243$Lang{Reason_archive_done} = "архивирование закончено"; 1244$Lang{Reason_nothing_to_do} = "без работы"; 1245$Lang{Reason_backup_failed} = "копирование не удалось"; 1246$Lang{Reason_restore_failed} = "восстановление не удалось"; 1247$Lang{Reason_archive_failed} = "архивирование не удалось"; 1248$Lang{Reason_no_ping} = "не \'пингуется\'"; 1249$Lang{Reason_backup_canceled_by_user} = "копирование прервано пользователем"; 1250$Lang{Reason_restore_canceled_by_user} = "восстановление прервано пользователем"; 1251$Lang{Reason_archive_canceled_by_user} = "восстановление прервано пользователем"; 1252$Lang{Disabled_OnlyManualBackups} = "автозапрет"; 1253$Lang{Disabled_AllBackupsDisabled} = "запрещено"; 1254 1255 1256# --------- 1257# Email messages 1258 1259# No backup ever 1260$Lang{EMailNoBackupEverSubj} = "BackupPC: no backups of \$host have succeeded"; 1261$Lang{EMailNoBackupEverMesg} = <<'EOF'; 1262To: $user$domain 1263cc: 1264Subject: $subj 1265$headers 1266Dear $userName, 1267 1268Your PC ($host) has never been successfully backed up by our 1269PC backup software. PC backups should occur automatically 1270when your PC is connected to the network. You should contact 1271computer support if: 1272 1273 - Your PC has been regularly connected to the network, meaning 1274 there is some configuration or setup problem preventing 1275 backups from occurring. 1276 1277 - You don't want your PC backed up and you want these email 1278 messages to stop. 1279 1280Otherwise, please make sure your PC is connected to the network 1281next time you are in the office. 1282 1283Regards, 1284BackupPC Genie 1285http://backuppc.sourceforge.net 1286EOF 1287 1288# No recent backup 1289$Lang{EMailNoBackupRecentSubj} = "BackupPC: no recent backups on \$host"; 1290$Lang{EMailNoBackupRecentMesg} = <<'EOF'; 1291To: $user$domain 1292cc: 1293Subject: $subj 1294$headers 1295Dear $userName, 1296 1297Your PC ($host) has not been successfully backed up for $days days. 1298Your PC has been correctly backed up $numBackups times from $firstTime to $days days 1299ago. PC backups should occur automatically when your PC is connected 1300to the network. 1301 1302If your PC has been connected for more than a few hours to the 1303network during the last $days days you should contact IS to find 1304out why backups are not working. 1305 1306Otherwise, if you are out of the office, there's not much you can 1307do, other than manually copying especially critical files to other 1308media. You should be aware that any files you have created or 1309changed in the last $days days (including all new email and 1310attachments) cannot be restored if your PC disk crashes. 1311 1312Regards, 1313BackupPC Genie 1314http://backuppc.sourceforge.net 1315EOF 1316 1317# Old Outlook files 1318$Lang{EMailOutlookBackupSubj} = "BackupPC: Outlook files on \$host need to be backed up"; 1319$Lang{EMailOutlookBackupMesg} = <<'EOF'; 1320To: $user$domain 1321cc: 1322Subject: $subj 1323$headers 1324Dear $userName, 1325 1326The Outlook files on your PC have $howLong. 1327These files contain all your email, attachments, contact and calendar 1328information. Your PC has been correctly backed up $numBackups times from 1329$firstTime to $lastTime days ago. However, Outlook locks all its files when 1330it is running, preventing these files from being backed up. 1331 1332It is recommended you backup the Outlook files when you are connected 1333to the network by exiting Outlook and all other applications, and, 1334using just your browser, go to this link: 1335 1336 $CgiURL?host=$host 1337 1338Select "Start Incr Backup" twice to start a new incremental backup. 1339You can select "Return to $host page" and then hit "reload" to check 1340the status of the backup. It should take just a few minutes to 1341complete. 1342 1343Regards, 1344BackupPC Genie 1345http://backuppc.sourceforge.net 1346EOF 1347 1348$Lang{howLong_not_been_backed_up} = "not been backed up successfully"; 1349$Lang{howLong_not_been_backed_up_for_days_days} = "not been backed up for \$days days"; 1350 1351####################################################################### 1352# RSS strings 1353####################################################################### 1354$Lang{RSS_Doc_Title} = "BackupPC Server"; 1355$Lang{RSS_Doc_Description} = "RSS feed for BackupPC"; 1356$Lang{RSS_Host_Summary} = <<EOF; 1357Full Count: \$fullCnt; 1358Full Age/days: \$fullAge; 1359Full Size/GB: \$fullSize; 1360Speed MB/sec: \$fullRate; 1361Incr Count: \$incrCnt; 1362Incr Age/Days: \$incrAge; 1363State: \$host_state; 1364Last Attempt: \$host_last_attempt; 1365EOF 1366 1367####################################################################### 1368# Configuration editor strings 1369####################################################################### 1370 1371$Lang{Only_privileged_users_can_edit_config_files} = "Only privileged users can edit configuration settings."; 1372$Lang{CfgEdit_Edit_Config} = "Редактирование Настроек"; 1373$Lang{CfgEdit_Edit_Hosts} = "Редактирование Узлов"; 1374 1375$Lang{CfgEdit_Title_Server} = "Сервер"; 1376$Lang{CfgEdit_Title_General_Parameters} = "Общие Параметры"; 1377$Lang{CfgEdit_Title_Wakeup_Schedule} = "Время Запуска Планировщика"; 1378$Lang{CfgEdit_Title_Concurrent_Jobs} = "Совмещение Заданий"; 1379$Lang{CfgEdit_Title_Pool_Filesystem_Limits} = "Лимиты Файловой Системы Пула"; 1380$Lang{CfgEdit_Title_Other_Parameters} = "Прочие Параметры"; 1381$Lang{CfgEdit_Title_Remote_Apache_Settings} = "Установки Удалённого Сервера Apache"; 1382$Lang{CfgEdit_Title_Program_Paths} = "Программные Пути"; 1383$Lang{CfgEdit_Title_Install_Paths} = "Установочные Пути"; 1384$Lang{CfgEdit_Title_Email} = "Почта"; 1385$Lang{CfgEdit_Title_Email_settings} = "Настройки Электронной Почты"; 1386$Lang{CfgEdit_Title_Email_User_Messages} = "Настройки Письма Для Пользователя"; 1387$Lang{CfgEdit_Title_CGI} = "CGI"; 1388$Lang{CfgEdit_Title_Admin_Privileges} = "Административные Привилегии"; 1389$Lang{CfgEdit_Title_Page_Rendering} = "Отображение Веб-Страницы"; 1390$Lang{CfgEdit_Title_Paths} = "Пути"; 1391$Lang{CfgEdit_Title_User_URLs} = "Пользовательские URL\'ы"; 1392$Lang{CfgEdit_Title_User_Config_Editing} = "Редактируемые Пользователем Настройки"; 1393$Lang{CfgEdit_Title_Xfer} = "Транспорт"; 1394$Lang{CfgEdit_Title_Xfer_Settings} = "Настройка Транспорта"; 1395$Lang{CfgEdit_Title_Ftp_Settings} = "Установки FTP"; 1396$Lang{CfgEdit_Title_Smb_Settings} = "Установки Smb"; 1397$Lang{CfgEdit_Title_Tar_Settings} = "Установки Tar"; 1398$Lang{CfgEdit_Title_Rsync_Settings} = "Установки Rsync"; 1399$Lang{CfgEdit_Title_Rsyncd_Settings} = "Установки Rsyncd"; 1400$Lang{CfgEdit_Title_Archive_Settings} = "Установки Archive"; 1401$Lang{CfgEdit_Title_Include_Exclude} = "Включить/Исключить"; 1402$Lang{CfgEdit_Title_Smb_Paths_Commands} = "Пути/Команды Smb"; 1403$Lang{CfgEdit_Title_Tar_Paths_Commands} = "Пути/Команды Tar"; 1404$Lang{CfgEdit_Title_Rsync_Paths_Commands_Args} = "Пути/Команды/Аргументы Rsync"; 1405$Lang{CfgEdit_Title_Rsyncd_Port_Args} = "Порты/Аргументы Rsyncd"; 1406$Lang{CfgEdit_Title_Archive_Paths_Commands} = "Пути/Команды Archive"; 1407$Lang{CfgEdit_Title_Schedule} = "Планировщик"; 1408$Lang{CfgEdit_Title_Full_Backups} = "Полное Резервирование"; 1409$Lang{CfgEdit_Title_Incremental_Backups} = "Инкрементальное Резервирование"; 1410$Lang{CfgEdit_Title_Blackouts} = "Перерыв"; 1411$Lang{CfgEdit_Title_Other} = "Прочее"; 1412$Lang{CfgEdit_Title_Backup_Settings} = "Другое"; 1413$Lang{CfgEdit_Title_Client_Lookup} = "Поиск Клиента"; 1414$Lang{CfgEdit_Title_User_Commands} = "Пользовательские Команды"; 1415$Lang{CfgEdit_Title_Hosts} = "Узлы"; 1416 1417$Lang{CfgEdit_Hosts_Comment} = <<EOF; 1418Чтобы добавить новый узел, нажмите на кнопку "Добавить" и введите имя узла. 1419Чтобы задать новому узлу настройки от другого уже существующего узла, 1420введите название узла как НОВЫЙ_УЗЕЛ=СУЩЕСТВУЮЩИЙ_УЗЕЛ. 1421Таким же образом можно переназначить настройки и уже существующему узлу. 1422Для удаления узла нажмите на кнопку "Удалить". 1423Чтобы изменения вступили в силу, нажмите на кнопку "Сохранить". 1424Резервные копии удалённых узлов сохраняются. Поэтому если Вы удалили узел 1425случайно, то просто добавьте его опять. 1426Чтобы удалить и сами резервные копии узла, Вам надо вручную удалить 1427каталог \$topDir/pc/УЗЕЛ. 1428EOF 1429 1430$Lang{CfgEdit_Header_Main} = <<EOF; 1431\${h1("Редактирование Основных Настроек")} 1432EOF 1433 1434$Lang{CfgEdit_Header_Host} = <<EOF; 1435\${h1("Редактирование Настроек Узла \$host")} 1436<p> 1437Примечание: Поставьте галочку рядом с "Заменить", если хотите изменить значение параметра индивидуально для этого узла. 1438<p> 1439EOF 1440 1441$Lang{CfgEdit_Button_Save} = "Сохранить"; 1442$Lang{CfgEdit_Button_Insert} = "Вставить"; 1443$Lang{CfgEdit_Button_Delete} = "Удалить"; 1444$Lang{CfgEdit_Button_Add} = "Добавить"; 1445$Lang{CfgEdit_Button_Override} = "Заменить"; 1446$Lang{CfgEdit_Button_New_Key} = "New Key"; 1447$Lang{CfgEdit_Button_New_Share} = "New ShareName or '*'"; 1448 1449$Lang{CfgEdit_Error_No_Save} 1450 = "Ошибка: не сохранено из-за наличия ошибок"; 1451$Lang{CfgEdit_Error__must_be_an_integer} 1452 = "Ошибка: \$var должно быть целым числом"; 1453$Lang{CfgEdit_Error__must_be_real_valued_number} 1454 = "Ошибка: \$var должно быть действительным числом"; 1455$Lang{CfgEdit_Error__entry__must_be_an_integer} 1456 = "Ошибка: \$var элемент \$k должен быть целым числом"; 1457$Lang{CfgEdit_Error__entry__must_be_real_valued_number} 1458 = "Ошибка: \$var элемент \$k должен быть действительным числом"; 1459$Lang{CfgEdit_Error__must_be_executable_program} 1460 = "Ошибка: \$var должно быть действительным путём исполняемой программы"; 1461$Lang{CfgEdit_Error__must_be_valid_option} 1462 = "Ошибка: \$var должно быть допустимой опцией"; 1463$Lang{CfgEdit_Error_Copy_host_does_not_exist} 1464 = "Копируемый узел \$copyHost отсутствует, создаётся узел \$fullHost. Удалите этот узел, если это не то, что Вам требуется."; 1465 1466$Lang{CfgEdit_Log_Copy_host_config} 1467 = "\$User copied config from host \$fromHost to \$host\n"; 1468$Lang{CfgEdit_Log_Delete_param} 1469 = "\$User deleted \$p from \$conf\n"; 1470$Lang{CfgEdit_Log_Add_param_value} 1471 = "\$User added \$p to \$conf, set to \$value\n"; 1472$Lang{CfgEdit_Log_Change_param_value} 1473 = "\$User changed \$p in \$conf to \$valueNew from \$valueOld\n"; 1474$Lang{CfgEdit_Log_Host_Delete} 1475 = "\$User deleted host \$host\n"; 1476$Lang{CfgEdit_Log_Host_Change} 1477 = "\$User host \$host changed \$key from \$valueOld to \$valueNew\n"; 1478$Lang{CfgEdit_Log_Host_Add} 1479 = "\$User added host \$host: \$value\n"; 1480 1481#end of ru.pm 1482