1#!/usr/bin/perl 2# 3# This program is free software: you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation, either version 3 of the License, or 6# (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program. If not, see <http://www.gnu.org/licenses/>. 15# 16 17use utf8; 18 19# -------------------------------- 20 21$Lang{Start_Archive} = "开始备档"; 22$Lang{Stop_Dequeue_Archive} = "中止/取消备档"; 23$Lang{Start_Full_Backup} = "开始完全备份"; 24$Lang{Start_Incr_Backup} = "开始增量备份"; 25$Lang{Stop_Dequeue_Backup} = "中止/取消备份"; 26$Lang{Restore} = "恢复"; 27 28$Lang{Type_full} = "完全"; 29$Lang{Type_incr} = "增量"; 30 31# ----- 32 33$Lang{Only_privileged_users_can_view_admin_options} = "只有特权用户可以查看管理选项。"; 34$Lang{H_Admin_Options} = "BackupPC 服务器:管理选项"; 35$Lang{Admin_Options} = "管理选项"; 36$Lang{Admin_Options_Page} = <<EOF; 37\${h1(qq{$Lang{Admin_Options}})} 38<br> 39\${h2("服务器控制")} 40<form name="ReloadForm" action="\$MyURL" method="get"> 41<input type="hidden" name="action" value=""> 42<table class="tableStnd"> 43 <tr><td>更新服务器配置:<td><input type="button" value="更新配置" 44 onClick="document.ReloadForm.action.value='Reload'; 45 document.ReloadForm.submit();"> 46</table> 47</form> 48<!-- 49\${h2("服务器配置")} 50<ul> 51 <li><i>其它选项,如:</i> 52 <li>更改服务器配置 53</ul> 54--> 55EOF 56 57$Lang{Unable_to_connect_to_BackupPC_server} = "无法连接到 BackupPC 服务器"; 58$Lang{Unable_to_connect_to_BackupPC_server_error_message} = <<EOF; 59CGI 脚本程序 (\$MyURL) 无法连接到 BackupPC 服务器 \$Conf{ServerHost} 端口 \$Conf{ServerPort}。错误信息:\$err。 60可能 BackupPC 服务器没有运行,或者服务器配置不正确。请通知网络系统管理员。 61EOF 62 63$Lang{Admin_Start_Server} = <<EOF; 64\${h1(qq{$Lang{Unable_to_connect_to_BackupPC_server}})} 65<form action="\$MyURL" method="get"> 66BackupPC 服务器 <tt>\$Conf{ServerHost}</tt> 端口 <tt>\$Conf{ServerPort}</tt> 67此刻没有运行(可能刚被停止,或者还没被启动)。<br> 68你想现在启动它吗? 69<input type="hidden" name="action" value="startServer"> 70<input type="submit" value="启动服务器" name="ignore"> 71</form> 72EOF 73 74# ----- 75 76$Lang{H_BackupPC_Server_Status} = "BackupPC 服务器状态"; 77 78$Lang{BackupPC_Server_Status_General_Info}= <<EOF; 79\${h2(\"服务器总体信息\")} 80 81<ul> 82<li> 服务器进程号是 \$Info{pid},运行在主机 \$Conf{ServerHost} 上, 83 版本号 \$Info{Version},开始运行于 \$serverStartTime。 84<li> 此状态报告生成于 \$now。 85<li> 服务器配置最近一次加载于 \$configLoadTime。 86<li> 服务器任务队列下次启动时间是 \$nextWakeupTime。 87<li> 其它信息: 88 <ul> 89 <li>\$numBgQueue 个自上次遗留备份请求, 90 <li>\$numUserQueue 个待处理用户备份请求, 91 <li>\$numCmdQueue 个待处理命令请求, 92 \$poolInfo 93 <li>备份池文件系统磁盘空间占用率是 \$Info{DUlastValue}% 94 (统计于 \$DUlastTime),今天的最大占用率是 \$Info{DUDailyMax}%(统计于 \$DUmaxTime), 95 昨天的最大占用率是 \$Info{DUDailyMaxPrev}%。 96 <li>Inode 备份池文件系统磁盘空间占用率是 \$Info{DUInodelastValue}% 97 (统计于 \$DUlastTime),今天的最大占用率是 \$Info{DUInodeDailyMax}%(统计于 \$DUInodemaxTime), 98 昨天的最大占用率是 \$Info{DUInodeDailyMaxPrev}%。 99 </ul> 100</ul> 101EOF 102 103$Lang{BackupPC_Server_Status} = <<EOF; 104\${h1(qq{$Lang{H_BackupPC_Server_Status}})} 105 106<p> 107\${h2("正在运行的任务")} 108<p> 109<table class="tableStnd sortable" border cellspacing="1" cellpadding="3"> 110<tr class="tableheader"><td> 客户机 </td> 111 <td> 类型 </td> 112 <td> 用户 </td> 113 <td> 开始时间 </td> 114 <td> 命令 </td> 115 <td align="center"> 进程号 </td> 116 <td align="center"> 传输进程号 </td> 117 <td align="center"> Status </td> 118 <td align="center"> Count </td> 119 </tr> 120\$jobStr 121</table> 122 123<p> 124\$generalInfo 125 126\${h2("需要关注的错误")} 127<p> 128<table class="tableStnd sortable" border cellspacing="1" cellpadding="3"> 129<tr class="tableheader"><td align="center"> 客户机 </td> 130 <td align="center"> 类型 </td> 131 <td align="center"> 用户 </td> 132 <td align="center"> 最后一次尝试 </td> 133 <td align="center"> 详情 </td> 134 <td align="center"> 错误时间 </td> 135 <td> 最后一次错误( PING 失败除外) </td></tr> 136\$statusStr 137</table> 138EOF 139 140# -------------------------------- 141$Lang{BackupPC__Server_Summary} = "BackupPC: 客户机报告"; 142$Lang{BackupPC__Archive} = "BackupPC: 备档"; 143$Lang{BackupPC_Summary} = <<EOF; 144 145\${h1(qq{$Lang{BackupPC__Server_Summary}})} 146<p> 147<ul> 148<li>此状态报告生成于 \$now。 149<li>备份池文件系统磁盘空间占用率是 \$Info{DUlastValue}% 150 (统计于 \$DUlastTime),今天的最大占用率是 \$Info{DUDailyMax}%(统计于 \$DUmaxTime), 151 昨天的最大占用率是 \$Info{DUDailyMaxPrev}%。 152<li>Inode 备份池文件系统磁盘空间占用率是 \$Info{DUInodelastValue}% 153 (统计于 \$DUlastTime),今天的最大占用率是 \$Info{DUInodeDailyMax}%(统计于 \$DUInodemaxTime), 154 昨天的最大占用率是 \$Info{DUInodeDailyMaxPrev}%。 155</ul> 156</p> 157 158\${h2("已成功完成备份的客户机")} 159<p> 160有 \$hostCntGood 台客户机已完成备份,总数是: 161<ul> 162<li> \$fullTot 个完全备份,总大小是 \${fullSizeTot}GiB 163 (被压缩前值), 164<li> \$incrTot 个增量备份,总大小是 \${incrSizeTot}GiB 165 (被压缩前值)。 166</ul> 167</p> 168<table class="sortable" id="host_summary_backups" border cellpadding="3" cellspacing="1"> 169<tr class="tableheader"><td> 客户机 </td> 170 <td align="center"> 用户 </td> 171 <td align="center"> 评论 </td> 172 <td align="center"> 完全备份个数 </td> 173 <td align="center"> 最后一次完全备份 (天前) </td> 174 <td align="center"> 完全备份大小 (GiB) </td> 175 <td align="center"> 完全备份速度 (MB/s) </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></tr> 182\$strGood 183</table> 184\${h2("未备份过的客户机")} 185<p> 186有 \$hostCntNone 台客户机从未被备份过。 187<p> 188<table class="sortable" id="host_summary_nobackups" border cellpadding="3" cellspacing="1"> 189<tr class="tableheader"><td> 客户机 </td> 190 <td align="center"> 用户 </td> 191 <td align="center"> 评论 </td> 192 <td align="center"> 完全备份个数 </td> 193 <td align="center"> 最后一次完全备份 (天前) </td> 194 <td align="center"> 完全备份大小 (GiB) </td> 195 <td align="center"> 完全备份速度 (MB/s) </td> 196 <td align="center"> 增量备份个数 </td> 197 <td align="center"> 最后一次增量备份 (天前) </td> 198 <td align="center"> 最后一次备份 (天前) </td> 199 <td align="center"> 当前状态 </td> 200 <td align="center"> 传输错误数目 </td> 201 <td align="center"> 最后一次备份结果 </td></tr> 202\$strNone 203</table> 204EOF 205 206$Lang{BackupPC_Archive} = <<EOF; 207\${h1(qq{$Lang{BackupPC__Archive}})} 208<script language="javascript" type="text/javascript"> 209<!-- 210 211 function checkAll(location) 212 { 213 for (var i=0;i<document.form1.elements.length;i++) 214 { 215 var e = document.form1.elements[i]; 216 if ((e.checked || !e.checked) && e.name != \'all\') { 217 if (eval("document.form1."+location+".checked")) { 218 e.checked = true; 219 } else { 220 e.checked = false; 221 } 222 } 223 } 224 } 225 226 function toggleThis(checkbox) 227 { 228 var cb = eval("document.form1."+checkbox); 229 cb.checked = !cb.checked; 230 } 231 232//--> 233</script> 234 235一共有 \$hostCntGood 台客户机已经被备份,总备份大小为 \${fullSizeTot}GiB 236<p> 237<form name="form1" method="post" action="\$MyURL"> 238<input type="hidden" name="fcbMax" value="\$checkBoxCnt"> 239<input type="hidden" name="type" value="1"> 240<input type="hidden" name="host" value="\${EscHTML(\$archHost)}"> 241<input type="hidden" name="action" value="Archive"> 242<table class="tableStnd" border cellpadding="3" cellspacing="1"> 243<tr class="tableheader"><td align=center> 客户机 </td> 244 <td align="center"> 用户 </td> 245 <td align="center"> 备份大小 </td> 246\$strGood 247\$checkAllHosts 248</table> 249</form> 250<p> 251 252EOF 253 254$Lang{BackupPC_Archive2} = <<EOF; 255\${h1(qq{$Lang{BackupPC__Archive}})} 256即将为下列客户机备档 257<ul> 258\$HostListStr 259</ul> 260<form action="\$MyURL" method="post"> 261\$hiddenStr 262<input type="hidden" name="action" value="Archive"> 263<input type="hidden" name="host" value="\${EscHTML(\$archHost)}"> 264<input type="hidden" name="type" value="2"> 265<input type="hidden" value="0" name="archive_type"> 266<table class="tableStnd" border cellspacing="1" cellpadding="3"> 267\$paramStr 268<tr> 269 <td colspan=2><input type="submit" value="开始备档" name="ignore"></td> 270</tr> 271</form> 272</table> 273EOF 274 275$Lang{BackupPC_Archive2_location} = <<EOF; 276<tr> 277 <td>备档目的地/外设</td> 278 <td><input type="text" value="\$ArchiveDest" name="archive_device"></td> 279</tr> 280EOF 281 282$Lang{BackupPC_Archive2_compression} = <<EOF; 283<tr> 284 <td>压缩</td> 285 <td> 286 <input type="radio" value="0" name="compression" \$ArchiveCompNone>无<br> 287 <input type="radio" value="1" name="compression" \$ArchiveCompGzip>gzip<br> 288 <input type="radio" value="2" name="compression" \$ArchiveCompBzip2>bzip2 289 </td> 290</tr> 291EOF 292 293$Lang{BackupPC_Archive2_parity} = <<EOF; 294<tr> 295 <td>奇偶校验数据比例 (0 = 不启用,5 = 典型设置)</td> 296 <td><input type="numeric" value="\$ArchivePar" name="par"></td> 297</tr> 298EOF 299 300$Lang{BackupPC_Archive2_split} = <<EOF; 301<tr> 302 <td>将输出分开为</td> 303 <td><input type="numeric" value="\$ArchiveSplit" name="splitsize">兆字节</td> 304</tr> 305EOF 306 307# ----------------------------------- 308$Lang{Pool_Stat} = <<EOF; 309 <li>备份服务器文件池大小是 \${poolSize}GiB 包含 \$info->{"\${name}FileCnt"} 个文件 310 和 \$info->{"\${name}DirCnt"} 个文件夹/目录(截至 \$poolTime)。文件池大小基本就是所有备份数据占用的实际磁盘空间。 311 <li>服务器文件池散列操作(Hashing)发现 \$info->{"\${name}FileCntRep"} 312 个文件具有重复散列值,其中 \$info->{"\${name}FileRepMax"} 个文件具有相同散列值。相同散列值并不意味着相同文件。散列操作被用来节省相同文件所占用的磁盘空间。 313 <li>每日例行清理过期数据操作删除了 \$info->{"\${name}FileCntRm"} 个文件共 314 \${poolRmSize}GiB (操作于 \$poolTime )。 315EOF 316 317# -------------------------------- 318$Lang{BackupPC__Backup_Requested_on__host} = "BackupPC: 客户机 \$host 有备份请求"; 319$Lang{BackupPC__Delete_Requested_for_a_backup_of__host} = "BackupPC: Delete Requested for a backup of \$host"; 320# -------------------------------- 321$Lang{REPLY_FROM_SERVER} = <<EOF; 322\${h1(\$str)} 323<p> 324服务器答复是:\$reply 325<p> 326返回 <a href="\$MyURL?host=\$host">\$host 主页</a>。 327EOF 328# -------------------------------- 329$Lang{BackupPC__Start_Backup_Confirm_on__host} = "BackupPC: 客户机 \$host 开始备份确认"; 330# -------------------------------- 331$Lang{Are_you_sure_start} = <<EOF; 332\${h1("确定?")} 333<p> 334你即将在客户机 \$host 上开始 \$type 备份。 335 336<form name="Confirm" action="\$MyURL" method="get"> 337<input type="hidden" name="host" value="\$host"> 338<input type="hidden" name="hostIP" value="\$ipAddr"> 339<input type="hidden" name="doit" value="1"> 340<input type="hidden" name="action" value=""> 341你能确定吗? 342<input type="button" value="\$buttonText" 343 onClick="document.Confirm.action.value='\$In{action}'; 344 document.Confirm.submit();"> 345<input type="submit" value="取消" name="ignore"> 346</form> 347EOF 348# -------------------------------- 349$Lang{BackupPC__Stop_Backup_Confirm_on__host} = "BackupPC: 客户机 \$host 停止备份确认"; 350# -------------------------------- 351$Lang{Are_you_sure_stop} = <<EOF; 352 353\${h1("确定?")} 354 355<p> 356你即将在客户机 \$host 上停止/取消备份操作; 357 358<form name="Confirm" action="\$MyURL" method="get"> 359<input type="hidden" name="host" value="\$host"> 360<input type="hidden" name="doit" value="1"> 361<input type="hidden" name="action" value=""> 362如果确定取消备份操作,请从现在起 363<input type="text" name="backoff" size="10" value="\$backoff"> 小时内不要再启动另一备份操作。 364<p> 365你能确定吗? 366<input type="button" value="\$buttonText" 367 onClick="document.Confirm.action.value='\$In{action}'; 368 document.Confirm.submit();"> 369<input type="submit" value="不" name="ignore"> 370</form> 371 372EOF 373# -------------------------------- 374$Lang{Only_privileged_users_can_view_queues_} = "只有特权用户可以查看任务请求队列。"; 375# -------------------------------- 376$Lang{Only_privileged_users_can_archive} = "只有特权用户可以执行备档操作。"; 377# -------------------------------- 378$Lang{BackupPC__Queue_Summary} = "BackupPC: 队列报告"; 379# -------------------------------- 380$Lang{Backup_Queue_Summary} = <<EOF; 381\${h1("备份请求队列报告")} 382\${h2("用户队列报告")} 383<p> 384下列用户请求排在队列中: 385</p> 386<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%"> 387<tr class="tableheader"><td> 客户机 </td> 388 <td> Action </td> 389 <td> 请求时间 </td> 390 <td> 用户 </td></tr> 391\$strUser 392</table> 393 394\${h2("后台请求队列报告")} 395<p> 396下列后台请求排在队列中: 397</p> 398<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%"> 399<tr class="tableheader"><td> 客户机 </td> 400 <td> Action </td> 401 <td> 请求时间 </td> 402 <td> 用户 </td></tr> 403\$strBg 404</table> 405\${h2("命令队列报告")} 406<p> 407下列命令请求排在队列中: 408</p> 409<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%"> 410<tr class="tableheader"><td> 客户机 </td> 411 <td> Action </td> 412 <td> 请求时间 </td> 413 <td> 用户 </td> 414 <td> 命令 </td></tr> 415\$strCmd 416</table> 417EOF 418 419# -------------------------------- 420$Lang{Backup_PC__Log_File__file} = "BackupPC: 日志文件 \$file"; 421$Lang{Log_File__file__comment} = <<EOF; 422\${h1("日志文件 \$file \$comment")} 423<p> 424EOF 425# -------------------------------- 426$Lang{Contents_of_log_file} = <<EOF; 427日志文件 <tt>\$file</tt>, 修改时间 \$mtimeStr \$comment 428EOF 429 430# -------------------------------- 431$Lang{skipped__skipped_lines} = "[ 略过 \$skipped 行 ]\n"; 432# -------------------------------- 433$Lang{_pre___Can_t_open_log_file__file} = "<pre>\n无法打开日志文件 \$file\n"; 434 435# -------------------------------- 436$Lang{BackupPC__Log_File_History} = "BackupPC: 日志文件历史"; 437$Lang{Log_File_History__hdr} = <<EOF; 438\${h1("日志文件历史 \$hdr")} 439<p> 440<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%"> 441<tr class="tableheader"><td align="center"> 文件 </td> 442 <td align="center"> 大小 </td> 443 <td align="center"> 修改时间 </td></tr> 444\$str 445</table> 446EOF 447 448# ------------------------------- 449$Lang{Recent_Email_Summary} = <<EOF; 450\${h1("最近电子邮件报告(最新排前)")} 451<p> 452<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%"> 453<tr class="tableheader"><td align="center"> 收信人 </td> 454 <td align="center"> 客户机 </td> 455 <td align="center"> 时间 </td> 456 <td align="center"> 标题 </td></tr> 457\$str 458</table> 459EOF 460 461 462# ------------------------------ 463$Lang{Browse_backup__num_for__host} = "BackupPC: 浏览客户机 \$host 备份序列号 \$num"; 464 465# ------------------------------ 466$Lang{Restore_Options_for__host} = "BackupPC: 客户机 \$host 恢复选项"; 467$Lang{Restore_Options_for__host2} = <<EOF; 468\${h1("客户机 \$host 恢复选项")} 469<p> 470你从备份序列 #\$num,卷 \$share 中选择了以下文件/目录: 471<ul> 472\$fileListStr 473</ul> 474</p><p> 475你有三种选择来恢复这些文件/目录。 476请从下列三种方法中选择其一。 477</p> 478\${h2("方法 1:直接恢复")} 479<p> 480EOF 481 482$Lang{Restore_Options_for__host_Option1} = <<EOF; 483你可以将这些文件直接恢复到客户机 <b>\$directHost</b> 上。 484</p><p> 485<b>警告:</b> 客户机上现存的文件,如果和被恢复的文件具有相同文件名并且位于相同路径,其内容将会被替换! 486</p> 487<form action="\$MyURL" method="post" name="direct"> 488<input type="hidden" name="host" value="\${EscHTML(\$host)}"> 489<input type="hidden" name="num" value="\$num"> 490<input type="hidden" name="type" value="3"> 491\$hiddenStr 492<input type="hidden" value="\$In{action}" name="action"> 493<table class="tableStnd" border="0"> 494<tr> 495 <td>恢复到客户机</td> 496 <td><!--<input type="text" size="40" value="\${EscHTML(\$host)}" 497 name="hostDest">--> 498 <select name="hostDest" onChange="document.direct.shareDest.value=''"> 499 \$hostDestSel 500 </select> 501 <script language="Javascript"> 502 function myOpen(URL) { 503 window.open(URL,'','width=500,height=400'); 504 } 505 </script> 506 <!--<a href="javascript:myOpen('\$MyURL?action=findShares&host='+document.direct.hostDest.options.value)">搜寻可供使用的文件卷(此功能还未被实现)</a>--></td> 507</tr><tr> 508 <td>恢复到卷</td> 509 <td><input type="text" size="40" value="\${EscHTML(\$share)}" 510 name="shareDest"></td> 511</tr><tr> 512 <td>恢复到此目录中<br>(位于上述卷下)</td> 513 <td valign="top"><input type="text" size="40" maxlength="256" 514 value="\${EscHTML(\$pathHdr)}" name="pathHdr"></td> 515</tr><tr> 516 <td><input type="submit" value="开始恢复" name="ignore"></td> 517</table> 518</form> 519EOF 520 521$Lang{Restore_Options_for__host_Option1_disabled} = <<EOF; 522直接恢复到客户机 \${EscHTML(\$hostDest) 的功能被关闭。 523请选择其它恢复方法。 524EOF 525 526# ------------------------------ 527$Lang{Option_2__Download_Zip_archive} = <<EOF; 528<p> 529\${h2("方法 2:下载 Zip 备档")} 530<p> 531你可以将所有你选择的文件和目录下载进一个 Zip 备档。然后再用一个本地应用, 532例如 WinZip,来浏览或提取其中的任何文件。 533</p><p> 534<b>警告:</b> 取决于你选择的文件/目录,此备档可能会占用很大存储空间。 535可能需要若干分钟或更长时间来生成和传输此备档,并且还需要足够大的本地磁盘空间。 536</p> 537<form action="\$MyURL" method="post"> 538<input type="hidden" name="host" value="\${EscHTML(\$host)}"> 539<input type="hidden" name="num" value="\$num"> 540<input type="hidden" name="type" value="2"> 541\$hiddenStr 542<input type="hidden" value="\$In{action}" name="action"> 543<input type="checkbox" value="1" name="relative" checked> 备档中所有文件具有相对路径,在 \${EscHTML(\$pathHdr eq "" ? "/" : \$pathHdr)} 目录内 544(否则备档中文件具有完整路径)。 545<br> 546<table class="tableStnd" border="0"> 547<tr> 548 <td>选择压缩比(0=不压缩,1=最低但速度快,...,9=最高但速度慢)</td> 549 <td><input type="text" size="6" value="5" name="compressLevel"></td> 550</tr><tr> 551 <td>Code page (e.g. cp866)</td> 552 <td><input type="text" size="6" value="utf8" name="codePage"></td> 553</tr> 554</table> 555<br> 556<input type="submit" value="下载 Zip 文件" name="ignore"> 557</form> 558EOF 559 560# ------------------------------ 561 562$Lang{Option_2__Download_Zip_archive2} = <<EOF; 563<p> 564\${h2("方法 2:下载 Zip 备档")} 565<p> 566因服务器没有安装 Perl 组件 Archive::Zip,Zip 备档无法被生成。 567请联系系统管理员安装 Archive::Zip,下载地址 568<a href="http://www.cpan.org">www.cpan.org</a>。 569</p> 570EOF 571 572 573# ------------------------------ 574$Lang{Option_3__Download_Zip_archive} = <<EOF; 575\${h2("方法 3:下载 Tar 备档")} 576<p> 577你可以将所有你选择的文件和目录下载进一个 Tar 备档。然后再用一个本地应用, 578例如 tar 或 WinZip,来浏览或提取其中的任何文件。 579</p><p> 580<b>警告:</b> 取决于你选择的文件/目录,此备档可能会占用很大存储空间。 581可能需要若干分钟或更长时间来生成和传输此备档,并且还需要足够大的本地磁盘空间。 582</p> 583<form action="\$MyURL" method="post"> 584<input type="hidden" name="host" value="\${EscHTML(\$host)}"> 585<input type="hidden" name="num" value="\$num"> 586<input type="hidden" name="type" value="1"> 587\$hiddenStr 588<input type="hidden" value="\$In{action}" name="action"> 589<input type="checkbox" value="1" name="relative" checked> 备档中所有文件具有相对路径,在 \${EscHTML(\$pathHdr eq "" ? "/" : \$pathHdr)} 目录内 590(否则备档中文件具有完整路径)。 591<br> 592<input type="submit" value="下载 Tar 文件" name="ignore"> 593</form> 594EOF 595 596 597# ------------------------------ 598$Lang{Restore_Confirm_on__host} = "BackupPC: 客户机 \$host 开始恢复确认"; 599 600$Lang{Are_you_sure} = <<EOF; 601\${h1("确定?")} 602<p> 603你即将开始恢复数据直接到客户机 \$In{hostDest} 上。 604储存在备份号 \$num 中的下列文件将被恢复到卷 \$In{shareDest} 内: 605<p> 606<table class="tableStnd" border> 607<tr class="tableheader"><td>原始文件/目录</td><td>将被恢复到</td></tr> 608\$fileListStr 609</table> 610 611<form name="RestoreForm" action="\$MyURL" method="post"> 612<input type="hidden" name="host" value="\${EscHTML(\$host)}"> 613<input type="hidden" name="hostDest" value="\${EscHTML(\$In{hostDest})}"> 614<input type="hidden" name="shareDest" value="\${EscHTML(\$In{shareDest})}"> 615<input type="hidden" name="pathHdr" value="\${EscHTML(\$In{pathHdr})}"> 616<input type="hidden" name="num" value="\$num"> 617<input type="hidden" name="type" value="4"> 618<input type="hidden" name="action" value=""> 619\$hiddenStr 620你确定吗? 621<input type="button" value="\$Lang->{Restore}" 622 onClick="document.RestoreForm.action.value='Restore'; 623 document.RestoreForm.submit();"> 624<input type="submit" value="不" name="ignore"> 625</form> 626EOF 627 628 629# -------------------------- 630$Lang{Restore_Requested_on__hostDest} = "BackupPC: 客户机 \$hostDest 有恢复请求"; 631$Lang{Reply_from_server_was___reply} = <<EOF; 632\${h1(\$str)} 633<p> 634服务器答复是:\$reply 635<p> 636返回 <a href="\$MyURL?host=\$hostDest">\$hostDest 主页</a>。 637EOF 638 639$Lang{BackupPC_Archive_Reply_from_server} = <<EOF; 640\${h1(\$str)} 641<p> 642服务器答复是:\$reply 643EOF 644 645 646# -------------------------------- 647$Lang{BackupPC__Delete_Backup_Confirm__num_of__host} = "BackupPC: Delete Backup Confirm #\$num of \$host"; 648# -------------------------------- 649$Lang{A_filled} = "a filled"; 650$Lang{An_unfilled} = "an unfilled"; 651$Lang{Are_you_sure_delete} = <<EOF; 652\${h1("Are you sure?")} 653<p> 654You are about to delete \$filled \$type backup #\$num of \$host. 655 656<form name="Confirm" action="\$MyURL" method="get"> 657 658<input type="hidden" name="host" value="\${EscHTML(\$host)}"> 659<input type="hidden" name="num" value="\$num"> 660 661<input type="hidden" name="doit" value="1"> 662<input type="hidden" name="action" value=""> 663 664Do you really want to do this? 665 666<input type="button" value="\${EscHTML(\$Lang->{CfgEdit_Button_Delete})}" 667 onClick="document.Confirm.action.value='deleteBackup'; 668 document.Confirm.submit();"> 669 670<input type="submit" value="No" name="ignore"> 671</form> 672EOF 673 674# ------------------------- 675$Lang{Host__host_Backup_Summary} = "BackupPC: 客户机 \$host 备份报告"; 676 677$Lang{Host__host_Backup_Summary2} = <<EOF; 678\${h1("客户机 \$host 备份报告")} 679<p> 680\$warnStr 681<ul> 682\$statusStr 683</ul> 684</p> 685\${h2("用户操作")} 686<p> 687<form name="StartStopForm" action="\$MyURL" method="get"> 688<input type="hidden" name="host" value="\$host"> 689<input type="hidden" name="action" value=""> 690\$startIncrStr 691<input type="button" value="\$Lang->{Start_Full_Backup}" 692 onClick="document.StartStopForm.action.value='Start_Full_Backup'; 693 document.StartStopForm.submit();"> 694<input type="button" value="\$Lang->{Stop_Dequeue_Backup}" 695 onClick="document.StartStopForm.action.value='Stop_Dequeue_Backup'; 696 document.StartStopForm.submit();"> 697</form> 698</p> 699\${h2("备份报告")} 700<p> 701点击备份序列号浏览和恢复文件。 702</p> 703<table class="tableStnd sortable" border cellspacing="1" cellpadding="3"> 704<tr class="tableheader"><td align="center"> 备份序列号# </td> 705 <td align="center"> 类型 </td> 706 <td align="center"> 完整 </td> 707 <td align="center"> 备份级别 </td> 708 <td align="center"> 开始时间 </td> 709 <td align="center"> 耗时(分钟)</td> 710 <td align="center"> 距离现在(天前)</td> 711 \$deleteHdrStr 712 <td align="center"> 服务器上备份路径 </td> 713</tr> 714\$str 715</table> 716<p> 717 718\$restoreStr 719</p> 720\${h2("传输错误报告")} 721<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%"> 722<tr class="tableheader"><td align="center"> 备份序列号# </td> 723 <td align="center"> 类型 </td> 724 <td align="center"> 查看 </td> 725 <td align="center"> 传输错误数目 </td> 726 <td align="center"> 损坏文件数目 </td> 727 <td align="center"> 损坏文件系统卷数目 </td> 728 <td align="center"> 损坏 Tar 文件数目 </td> 729</tr> 730\$errStr 731</table> 732 733\${h2("文件大小/数目统计")} 734<p> 735"原有文件"是指原先已存在备份池中的文件;"新增文件"是指备份新写入池中的文件。 736空文件不被统计在内。 737</p> 738<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%"> 739<tr class="tableheader"><td colspan="2" bgcolor="#ffffff"></td> 740 <td align="center" colspan="3"> 合计 </td> 741 <td align="center" colspan="2"> 原有文件 </td> 742 <td align="center" colspan="2"> 新增文件 </td> 743</tr> 744<tr class="tableheader sortheader"> 745 <td align="center"> 备份序列号# </td> 746 <td align="center"> 类型 </td> 747 <td align="center"> 文件数目 </td> 748 <td align="center"> 大小(MB) </td> 749 <td align="center"> 备份速度(MB/sec) </td> 750 <td align="center"> 文件数目 </td> 751 <td align="center"> 大小(MB) </td> 752 <td align="center"> 文件数目 </td> 753 <td align="center"> 大小(MB) </td> 754</tr> 755\$sizeStr 756</table> 757 758\${h2("压缩报告")} 759<p> 760备份池中原有文件和新增文件的压缩性能报告。 761</p> 762<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%"> 763<tr class="tableheader"><td colspan="3" bgcolor="#ffffff"></td> 764 <td align="center" colspan="3"> 原有文件 </td> 765 <td align="center" colspan="3"> 新增文件 </td> 766</tr> 767<tr class="tableheader sortheader"><td align="center"> 备份序列号# </td> 768 <td align="center"> 类型 </td> 769 <td align="center"> 压缩级别 </td> 770 <td align="center"> 压缩前(MB) </td> 771 <td align="center"> 压缩后(MB) </td> 772 <td align="center"> 压缩比 </td> 773 <td align="center"> 压缩前(MB) </td> 774 <td align="center"> 压缩后(MB) </td> 775 <td align="center"> 压缩比 </td> 776</tr> 777\$compStr 778</table> 779EOF 780 781$Lang{Host__host_Archive_Summary} = "BackupPC: 客户机 \$host 备档报告"; 782$Lang{Host__host_Archive_Summary2} = <<EOF; 783\${h1("客户机 \$host 备档报告")} 784<p> 785\$warnStr 786<ul> 787\$statusStr 788</ul> 789 790\${h2("用户操作")} 791<p> 792<form name="StartStopForm" action="\$MyURL" method="get"> 793<input type="hidden" name="archivehost" value="\$host"> 794<input type="hidden" name="host" value="\$host"> 795<input type="hidden" name="action" value=""> 796<input type="button" value="\$Lang->{Start_Archive}" 797 onClick="document.StartStopForm.action.value='Start_Archive'; 798 document.StartStopForm.submit();"> 799<input type="button" value="\$Lang->{Stop_Dequeue_Archive}" 800 onClick="document.StartStopForm.action.value='Stop_Dequeue_Archive'; 801 document.StartStopForm.submit();"> 802</form> 803 804\$ArchiveStr 805 806EOF 807 808# ------------------------- 809$Lang{Error} = "BackupPC: 错误"; 810$Lang{Error____head} = <<EOF; 811\${h1("错误:\$head")} 812<p>\$mesg</p> 813EOF 814 815# ------------------------- 816$Lang{NavSectionTitle_} = "服务器"; 817 818# ------------------------- 819$Lang{Backup_browse_for__host} = <<EOF; 820\${h1("客户机 \$host 备份浏览")} 821 822<script language="javascript" type="text/javascript"> 823<!-- 824 825 function checkAll(location) 826 { 827 for (var i=0;i<document.form1.elements.length;i++) 828 { 829 var e = document.form1.elements[i]; 830 if ((e.checked || !e.checked) && e.name != \'all\') { 831 if (eval("document.form1."+location+".checked")) { 832 e.checked = true; 833 } else { 834 e.checked = false; 835 } 836 } 837 } 838 } 839 840 function toggleThis(checkbox) 841 { 842 var cb = eval("document.form1."+checkbox); 843 cb.checked = !cb.checked; 844 } 845 846//--> 847</script> 848 849<form name="form0" method="post" action="\$MyURL"> 850<input type="hidden" name="num" value="\$num"> 851<input type="hidden" name="host" value="\$host"> 852<input type="hidden" name="share" value="\${EscHTML(\$share)}"> 853<input type="hidden" name="action" value="browse"> 854<ul> 855<li> 你正在浏览备份 #\$num,该备份开始于 \$backupTime 856 (\$backupAge 天前)。 857\$filledBackup 858<li> 进入目录:<input type="text" name="dir" size="50" maxlength="4096" value="\${EscHTML(\$dir)}"> <input type="submit" value="\$Lang->{Go}" name="Submit"> 859<li> 点击目录名进入相应目录。 860<li> 点击文件名恢复相应文件。 861<li> 查看当前目录的备份<a href="\$MyURL?action=dirHistory&host=\${EscURI(\$host)}&share=\$shareURI&dir=\$pathURI">历史</a>。 862</ul> 863</form> 864 865\${h2("\$dirDisplay 的内容")} 866<form name="form1" method="post" action="\$MyURL"> 867<input type="hidden" name="num" value="\$num"> 868<input type="hidden" name="host" value="\$host"> 869<input type="hidden" name="share" value="\${EscHTML(\$share)}"> 870<input type="hidden" name="fcbMax" value="\$checkBoxCnt"> 871<input type="hidden" name="action" value="Restore"> 872<br> 873<table width="100%"> 874<tr><td valign="top" width="30%"> 875 <table align="left" border="0" cellpadding="0" cellspacing="0" bgcolor="#ffffff"> 876 \$dirStr 877 </table> 878</td><td width="3%"> 879</td><td valign="top"> 880 <br> 881 <table border width="100%" align="left" cellpadding="3" cellspacing="1"> 882 \$fileHeader 883 \$topCheckAll 884 \$fileStr 885 \$checkAll 886 </table> 887 </td></tr></table> 888<br> 889<!-- 890This is now in the checkAll row 891<input type="submit" name="Submit" value="恢复被选择的文件"> 892--> 893</form> 894EOF 895 896# ------------------------------ 897$Lang{DirHistory_backup_for__host} = "BackupPC: 客户机 \$host 目录备份历史"; 898 899# 900# These two strings are used to build the links for directories and 901# file versions. Files are appended with a version number. 902# 903$Lang{DirHistory_dirLink} = "目录"; 904$Lang{DirHistory_fileLink} = "v"; 905 906$Lang{DirHistory_for__host} = <<EOF; 907\${h1("客户机 \$host 目录备份历史")} 908<p> 909本页显示文件在所有备份中的不同版本: 910<ul> 911<li> 点击备份序列号返回相应备份浏览主页, 912<li> 点击目录链接标记 (\$Lang->{DirHistory_dirLink}) 进入相应目录, 913<li> 点击文件版本链接标记 (\$Lang->{DirHistory_fileLink}0, 914 \$Lang->{DirHistory_fileLink}1, ...) 下载相应文件, 915<li> 如果一个文件的内容在多个备份中相同,文件在多个备份中具有相同版本号,(PleaseTranslateThis: except between v3 and v4 backups) 916<li> 如果一个文件或目录在某个备份中不存在,下表中用空白表示, 917<li> 具有相同版本号的文件可能在不同备份中有不同的文件属性。可以点击备份序列号来查看文件在相应备份中的属性。 918</ul> 919 920\${h2("\$dirDisplay 的历史")} 921 922<br> 923<table border cellspacing="2" cellpadding="3"> 924<tr class="fviewheader"><td>备份序列号</td>\$backupNumStr</tr> 925<tr class="fviewheader"><td>备份时间</td>\$backupTimeStr</tr> 926\$fileStr 927</table> 928EOF 929 930# ------------------------------ 931$Lang{Restore___num_details_for__host} = "BackupPC: 客户机 \$host 恢复 #\$num 详情"; 932 933$Lang{Restore___num_details_for__host2} = <<EOF; 934\${h1("客户机 \$host 恢复 #\$num 详情")} 935<p> 936<table class="tableStnd" border cellspacing="1" cellpadding="3" width="90%"> 937<tr><td class="tableheader"> 恢复序列号 </td><td class="border"> \$Restores[\$i]{num} </td></tr> 938<tr><td class="tableheader"> 请求方 </td><td class="border"> \$RestoreReq{user} </td></tr> 939<tr><td class="tableheader"> 请求时间 </td><td class="border"> \$reqTime </td></tr> 940<tr><td class="tableheader"> 结果 </td><td class="border"> \$Restores[\$i]{result} </td></tr> 941<tr><td class="tableheader"> 错误信息 </td><td class="border"> \$Restores[\$i]{errorMsg} </td></tr> 942<tr><td class="tableheader"> 源客户机 </td><td class="border"> \$RestoreReq{hostSrc} </td></tr> 943<tr><td class="tableheader"> 源备份序列号 </td><td class="border"> \$RestoreReq{num} </td></tr> 944<tr><td class="tableheader"> 源文件卷 </td><td class="border"> \$RestoreReq{shareSrc} </td></tr> 945<tr><td class="tableheader"> 目的客户机 </td><td class="border"> \$RestoreReq{hostDest} </td></tr> 946<tr><td class="tableheader"> 目的文件卷 </td><td class="border"> \$RestoreReq{shareDest} </td></tr> 947<tr><td class="tableheader"> 恢复开始时间 </td><td class="border"> \$startTime </td></tr> 948<tr><td class="tableheader"> 耗时 </td><td class="border"> \$duration 分钟 </td></tr> 949<tr><td class="tableheader"> 文件个数 </td><td class="border"> \$Restores[\$i]{nFiles} </td></tr> 950<tr><td class="tableheader"> 文件总大小 </td><td class="border"> \${MB} MB </td></tr> 951<tr><td class="tableheader"> 传输速率 </td><td class="border"> \$MBperSec MB/sec </td></tr> 952<tr><td class="tableheader"> Tar 生成过程错误个数 </td><td class="border"> \$Restores[\$i]{tarCreateErrs} </td></tr> 953<tr><td class="tableheader"> 传输过程错误个数 </td><td class="border"> \$Restores[\$i]{xferErrs} </td></tr> 954<tr><td class="tableheader"> 传输日志文件 </td><td class="border"> 955<a href="\$MyURL?action=view&type=RestoreLOG&num=\$Restores[\$i]{num}&host=\$host">查看日志</a>, 956<a href="\$MyURL?action=view&type=RestoreErr&num=\$Restores[\$i]{num}&host=\$host">查看错误</a> 957</tr></tr> 958</table> 959</p> 960\${h1("文件/目录列表")} 961<p> 962<table class="tableStnd" border cellspacing="1" cellpadding="3" width="100%"> 963<tr class="tableheader"><td>原始文件/目录</td><td>恢复至</td></tr> 964\$fileListStr 965</table> 966EOF 967 968# ------------------------------ 969$Lang{Archive___num_details_for__host} = "BackupPC: 客户机 \$host 备档 #\$num 详情"; 970 971$Lang{Archive___num_details_for__host2} = <<EOF; 972\${h1("客户机 \$host 备档 #\$num 详情")} 973<p> 974<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%"> 975<tr><td class="tableheader"> 备档序列号 </td><td class="border"> \$Archives[\$i]{num} </td></tr> 976<tr><td class="tableheader"> 请求方 </td><td class="border"> \$ArchiveReq{user} </td></tr> 977<tr><td class="tableheader"> 请求方 </td><td class="border"> \$reqTime </td></tr> 978<tr><td class="tableheader"> 结果 </td><td class="border"> \$Archives[\$i]{result} </td></tr> 979<tr><td class="tableheader"> 错误信息 </td><td class="border"> \$Archives[\$i]{errorMsg} </td></tr> 980<tr><td class="tableheader"> 开始时间 </td><td class="border"> \$startTime </td></tr> 981<tr><td class="tableheader"> 耗时 </td><td class="border"> \$duration 分钟 </td></tr> 982<tr><td class="tableheader"> 传输日志文件 </td><td class="border"> 983<a href="\$MyURL?action=view&type=ArchiveLOG&num=\$Archives[\$i]{num}&host=\$host">查看日志</a>, 984<a href="\$MyURL?action=view&type=ArchiveErr&num=\$Archives[\$i]{num}&host=\$host">查看错误</a> 985</tr></tr> 986</table> 987<p> 988\${h1("客户机列表")} 989<p> 990<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%"> 991<tr class="tableheader"><td>客户机</td><td>备份序列号</td></tr> 992\$HostListStr 993</table> 994EOF 995 996# ----------------------------------- 997$Lang{Email_Summary} = "BackupPC: 电子邮件报告"; 998 999# ----------------------------------- 1000# !! ERROR messages !! 1001# ----------------------------------- 1002$Lang{BackupPC__Lib__new_failed__check_apache_error_log} = "BackupPC::Lib->new 步骤失败:请检查 Apache 服务器日志\n"; 1003$Lang{Wrong_user__my_userid_is___} = 1004 "错误用户:我的用户 ID 是 \$>, 不是 \$uid" 1005 . "(\$Conf{BackupPCUser})\n"; 1006# $Lang{Only_privileged_users_can_view_PC_summaries} = "Only privileged users can view PC summaries."; 1007$Lang{Only_privileged_users_can_stop_or_start_backups} = 1008 "只有特权用户可以执行备份的开始或停止操作于客户机" 1009 . " \${EscHTML(\$host)}."; 1010$Lang{Invalid_number__num} = "无效数字 \${EscHTML(\$In{num})}"; 1011$Lang{Unable_to_open__file__configuration_problem} = "无法打开文件 \$file:配置有误?"; 1012$Lang{Only_privileged_users_can_view_log_or_config_files} = "只有特权用户可以查看日志或配置文件。"; 1013$Lang{Only_privileged_users_can_view_log_files} = "只有特权用户可以查看日志文件。"; 1014$Lang{Only_privileged_users_can_view_email_summaries} = "只有特权用户可以查看电子邮件报告。"; 1015$Lang{Only_privileged_users_can_browse_backup_files} = "只有特权用户可以浏览" 1016 . "客户机 \${EscHTML(\$In{host})} 的备份文件。"; 1017$Lang{Only_privileged_users_can_delete_backups} = "Only privileged users can delete backups" 1018 . " of host \${EscHTML(\$host)}."; 1019$Lang{Empty_host_name} = "空客户机名。"; 1020$Lang{Directory___EscHTML} = "目录 \${EscHTML(\"\$TopDir/pc/\$host/\$num\")}" 1021 . " 为空"; 1022$Lang{Can_t_browse_bad_directory_name2} = "无法浏览非法目录名" 1023 . " \${EscHTML(\$relDir)}"; 1024$Lang{Only_privileged_users_can_restore_backup_files} = "只有特权用户可以恢复" 1025 . "客户机 \${EscHTML(\$In{host})} 的备份文件。"; 1026$Lang{Bad_host_name} = "错误客户机名 \${EscHTML(\$host)}"; 1027$Lang{You_haven_t_selected_any_files__please_go_Back_to} = "你还没有选择任何文件;请返回上一页" 1028 . "选择文件。"; 1029$Lang{You_haven_t_selected_any_hosts} = "你还没有选择任何客户机;请返回上一页" 1030 . "选择客户机。"; 1031$Lang{Nice_try__but_you_can_t_put} = "对不起,文件名内不能包含 \'..\'"; 1032$Lang{Host__doesn_t_exist} = "客户机 \${EscHTML(\$In{hostDest})} 不存在"; 1033$Lang{You_don_t_have_permission_to_restore_onto_host} = "你没有权限恢复客户机" 1034 . " \${EscHTML(\$In{hostDest})}"; 1035$Lang{Can_t_open_create__openPath} = "无法打开/创建 " 1036 . "\${EscHTML(\"\$openPath\")}"; 1037$Lang{Only_privileged_users_can_restore_backup_files2} = "只有特权用户可以恢复" 1038 . "客户机 \${EscHTML(\$host)} 的备份文件。"; 1039$Lang{Empty_host_name} = "空客户机名"; 1040$Lang{Unknown_host_or_user} = "未知客户机或用户 \${EscHTML(\$host)}"; 1041$Lang{Only_privileged_users_can_view_information_about} = "只有特权用户可以查看" 1042 . "客户机 \${EscHTML(\$host)} 的信息。" ; 1043$Lang{Only_privileged_users_can_view_archive_information} = "只有特权用户可以查看备档信息。"; 1044$Lang{Only_privileged_users_can_view_restore_information} = "只有特权用户可以查看恢复信息。"; 1045$Lang{Restore_number__num_for_host__does_not_exist} = "客户机 \${EscHTML(\$host)} 恢复序列号 \$num " 1046 . "不存在。"; 1047$Lang{Archive_number__num_for_host__does_not_exist} = "客户机 \${EscHTML(\$host)} 备档序列号 \$num " 1048 . "不存在。"; 1049$Lang{Can_t_find_IP_address_for} = "客户机 \${EscHTML(\$host)} 的 IP 地址无法找到"; 1050$Lang{host_is_a_DHCP_host} = <<EOF; 1051客户机 \$host 的网络设置是使用动态 IP 地址(DHCP),现在它的 IP 地址未知。已经检查过 \$ENV{REMOTE_ADDR}\$tryIP 的 NETBIOS 名,但那台机器不是 \$host。 1052<p> 1053除非获得客户机 \$host 的动态 IP 地址,否则只能从客户主机上发出此任务请求。 1054EOF 1055 1056# ------------------------------------ 1057# !! Server Mesg !! 1058# ------------------------------------ 1059 1060$Lang{Backup_requested_on_DHCP__host} = "用户 \$User 从 \$ENV{REMOTE_ADDR} 发起请求备份使用动态 IP 的客户机 \$host (\$In{hostIP})"; 1061$Lang{Backup_requested_on__host_by__User} = "用户 \$User 发起请求备份客户机 \$host"; 1062$Lang{Backup_stopped_dequeued_on__host_by__User} = "用户 \$User 停止/取消了对客户机 \$host 的备份"; 1063$Lang{Restore_requested_to_host__hostDest__backup___num} = "用户 \$User 从 \$ENV{REMOTE_ADDR} 发起请求恢复客户机 \$hostDest,使用备份序列号 #\$num"; 1064$Lang{Delete_requested_for_backup_of__host_by__User} = "Delete requested for backup #\$num of \$host" 1065 . " by \$User from \$ENV{REMOTE_ADDR}"; 1066$Lang{Archive_requested} = "用户 \$User 从 \$ENV{REMOTE_ADDR} 发起备档请求"; 1067 1068# ------------------------------------------------- 1069# ------- Stuff that was forgotten ---------------- 1070# ------------------------------------------------- 1071 1072$Lang{Status} = "状态"; 1073$Lang{PC_Summary} = "客户机报告"; 1074$Lang{LOG_file} = "日志文件"; 1075$Lang{LOG_files} = "日志文件列表"; 1076$Lang{Old_LOGs} = "旧日志"; 1077$Lang{Email_summary} = "电子邮件报告"; 1078$Lang{Config_file} = "配置文件"; 1079# $Lang{Hosts_file} = "Hosts file"; 1080$Lang{Current_queues} = "当前队列"; 1081$Lang{Documentation} = "文档资料"; 1082 1083#$Lang{Host_or_User_name} = "<small>Host or User name:</small>"; 1084$Lang{Go} = "确定"; 1085$Lang{Hosts} = "客户机"; 1086$Lang{Select_a_host} = "选择客户机名..."; 1087 1088$Lang{There_have_been_no_archives} = "<h2> 这台机器还从来没有执行过备档操作!</h2>\n"; 1089$Lang{This_PC_has_never_been_backed_up} = "<h2> 这台机器还从来没有被备份过!!</h2>\n"; 1090$Lang{This_PC_is_used_by} = "<li>这台机器的用户包括 \${UserLink(\$user)}"; 1091 1092$Lang{Extracting_only_Errors} = "(只提取错误信息)"; 1093$Lang{XferLOG} = "传输日志"; 1094$Lang{Errors} = "错误"; 1095 1096# ------------ 1097$Lang{Last_email_sent_to__was_at___subject} = <<EOF; 1098<li>给用户 \${UserLink(\$user)} 的最近一封邮件送出于 \$mailTime,标题是"\$subj"。 1099EOF 1100# ------------ 1101$Lang{The_command_cmd_is_currently_running_for_started} = <<EOF; 1102<li>命令 \$cmd 正在为客户机 \$host 运行,开始于 \$startTime。 1103EOF 1104 1105# ----------- 1106$Lang{Host_host_is_queued_on_the_background_queue_will_be_backed_up_soon} = <<EOF; 1107<li>客户机 \$host 已在后台队列中等待(即将被备份)。 1108EOF 1109 1110# ---------- 1111$Lang{Host_host_is_queued_on_the_user_queue__will_be_backed_up_soon} = <<EOF; 1112<li>客户机 \$host 已在用户队列中等待(即将被备份)。 1113EOF 1114 1115# --------- 1116$Lang{A_command_for_host_is_on_the_command_queue_will_run_soon} = <<EOF; 1117<li>针对客户机 \$host 的一条命令已在命令队列中等待(即将被执行)。 1118EOF 1119 1120# -------- 1121$Lang{Last_status_is_state_StatusHost_state_reason_as_of_startTime} = <<EOF; 1122<li>最后状态是 \"\$Lang->{\$StatusHost{state}}\"\$reason,当时时间 \$startTime。 1123EOF 1124 1125# -------- 1126$Lang{Last_error_is____EscHTML_StatusHost_error} = <<EOF; 1127<li>最后错误信息是 \"\${EscHTML(\$StatusHost{error})}\"。 1128EOF 1129 1130# ------ 1131$Lang{Pings_to_host_have_failed_StatusHost_deadCnt__consecutive_times} = <<EOF; 1132<li>试图与客户机 \$host 联系(Ping 操作)已连续失败 \$StatusHost{deadCnt} 次。 1133EOF 1134 1135# ----- 1136$Lang{Prior_to_that__pings} = "先前,Ping"; 1137 1138# ----- 1139$Lang{priorStr_to_host_have_succeeded_StatusHostaliveCnt_consecutive_times} = <<EOF; 1140<li>\$priorStr 客户机 \$host 已连续成功 \$StatusHost{aliveCnt} 次。 1141EOF 1142 1143$Lang{Because__host_has_been_on_the_network_at_least__Conf_BlackoutGoodCnt_consecutive_times___} = <<EOF; 1144<li>因为客户机 \$host 已经在网络上至少连续 \$Conf{BlackoutGoodCnt} 次, 1145在下列时段 \$blackoutStr,它将不进行备份操作。 1146EOF 1147 1148$Lang{__time0_to__time1_on__days} = "\$t0 to \$t1 在 \$days"; 1149 1150$Lang{Backups_are_deferred_for_hours_hours_change_this_number} = <<EOF; 1151<li>备份被推迟 \$hours 小时 1152(<a href=\"\$MyURL?action=Stop_Dequeue_Backup&host=\$host\">改变时间</a>)。 1153EOF 1154 1155$Lang{tryIP} = " 和 \$StatusHost{dhcpHostIP}"; 1156 1157# $Lang{Host_Inhost} = "Host \$In{host}"; 1158 1159$Lang{checkAll} = <<EOF; 1160<tr><td class="fviewborder"> 1161<input type="checkbox" name="allFiles" onClick="return checkAll('allFiles');"> 全选 1162</td><td colspan="5" align="center" class="fviewborder"> 1163<input type="submit" name="Submit" value="恢复被选择的文件"> 1164</td></tr> 1165EOF 1166 1167$Lang{checkAllHosts} = <<EOF; 1168<tr><td class="fviewborder"> 1169<input type="checkbox" name="allFiles" onClick="return checkAll('allFiles');"> 全选 1170</td><td colspan="2" align="center" class="fviewborder"> 1171<input type="submit" name="Submit" value="备档被选择的客户机"> 1172</td></tr> 1173EOF 1174 1175$Lang{fileHeader} = <<EOF; 1176 <tr class="fviewheader"><td align=center> 文件/目录名</td> 1177 <td align="center"> 类型</td> 1178 <td align="center"> 读写权限</td> 1179 <td align="center"> 备份序列号</td> 1180 <td align="center"> 大小</td> 1181 <td align="center"> 修改日期</td> 1182 </tr> 1183EOF 1184 1185$Lang{Home} = "主页"; 1186$Lang{Browse} = "浏览备份"; 1187$Lang{Last_bad_XferLOG} = "最近出错传输日志"; 1188$Lang{Last_bad_XferLOG_errors_only} = "最近出错传输日志(只含错误)"; 1189 1190$Lang{This_display_is_merged_with_backup} = <<EOF; 1191<li> 本页显示的是与备份序列 #\$numF 合成的结果。 1192EOF 1193 1194$Lang{Visit_this_directory_in_backup} = <<EOF; 1195<li> 选择你想查看的备份:<select onChange="window.location=this.value">\$otherDirs </select> 1196EOF 1197 1198$Lang{Restore_Summary} = <<EOF; 1199\${h2("恢复报告")} 1200<p> 1201点击恢复序列号获取详情。 1202<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%"> 1203<tr class="tableheader"><td align="center"> 恢复序列号 </td> 1204 <td align="center"> 结果 </td> 1205 <td align="right"> 开始时间 </td> 1206 <td align="right"> 耗时(分钟)</td> 1207 <td align="right"> 文件个数 </td> 1208 <td align="right"> 大小(MB) </td> 1209 <td align="right"> Tar 错误个数 </td> 1210 <td align="right"> 传输错误个数 </td> 1211</tr> 1212\$restoreStr 1213</table> 1214<p> 1215EOF 1216 1217$Lang{Archive_Summary} = <<EOF; 1218\${h2("备档报告")} 1219<p> 1220点击备档序列号获取详情。 1221<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%"> 1222<tr class="tableheader"><td align="center"> 备档序列号 </td> 1223 <td align="center"> 结果 </td> 1224 <td align="right"> 开始时间 </td> 1225 <td align="right"> 耗时(分钟)</td> 1226</tr> 1227\$ArchiveStr 1228</table> 1229<p> 1230EOF 1231 1232$Lang{BackupPC__Documentation} = "BackupPC: 文档资料"; 1233 1234$Lang{No} = "否"; 1235$Lang{Yes} = "是"; 1236 1237$Lang{The_directory_is_empty} = <<EOF; 1238<tr><td bgcolor="#ffffff">目录 \$dirDisplay 是空目录 1239</td></tr> 1240EOF 1241 1242#$Lang{on} = "开"; 1243$Lang{off} = "关"; 1244 1245$Lang{backupType_full} = "完全"; 1246$Lang{backupType_incr} = "增量"; 1247$Lang{backupType_active} = "active"; 1248$Lang{backupType_partial} = "部分"; 1249 1250$Lang{failed} = "失败"; 1251$Lang{success} = "成功"; 1252$Lang{and} = "和"; 1253 1254# ------ 1255# Hosts states and reasons 1256$Lang{Status_idle} = "空闲"; 1257$Lang{Status_backup_starting} = "备份已开始"; 1258$Lang{Status_backup_in_progress} = "备份进行中"; 1259$Lang{Status_restore_starting} = "恢复已开始"; 1260$Lang{Status_restore_in_progress} = "恢复进行中"; 1261$Lang{Status_admin_pending} = "文件链接待建立"; 1262$Lang{Status_admin_running} = "文件链接建立中"; 1263 1264$Lang{Reason_backup_done} = "完成"; 1265$Lang{Reason_restore_done} = "恢复完成"; 1266$Lang{Reason_archive_done} = "备档完成"; 1267$Lang{Reason_nothing_to_do} = "空闲"; 1268$Lang{Reason_backup_failed} = "备份失败"; 1269$Lang{Reason_restore_failed} = "恢复失败"; 1270$Lang{Reason_archive_failed} = "备档失败"; 1271$Lang{Reason_no_ping} = "网络连接中断(no ping)"; 1272$Lang{Reason_backup_canceled_by_user} = "备份被用户取消"; 1273$Lang{Reason_restore_canceled_by_user} = "恢复被用户取消"; 1274$Lang{Reason_archive_canceled_by_user} = "备档被用户取消"; 1275$Lang{Disabled_OnlyManualBackups} = "自动备份被关闭"; 1276$Lang{Disabled_AllBackupsDisabled} = "关闭"; 1277 1278 1279# --------- 1280# Email messages 1281 1282# No backup ever 1283$Lang{EMailNoBackupEverSubj} = "BackupPC: 客户机 \$host 从未被成功备份过"; 1284$Lang{EMailNoBackupEverMesg} = <<'EOF'; 1285To: $user$domain 1286cc: 1287Subject: $subj 1288$headers 1289尊敬的用户 $userName, 1290 1291您的电脑 ($host) 还从来没有被我们的备份系统成功备份过。 1292正常情况下,当您的电脑与网络连接时电脑备份会自动进行。 1293如果您属于下面两种情况,请与系统管理员联系: 1294 1295 - 您的电脑经常是连在网络上的。这意味着可能是某些配置 1296 方面的问题导致备份无法进行。 1297 1298 - 您不希望您的电脑被备份,并且不愿再收到这些电子邮件。 1299 1300如果不是以上这些情况,请确认您的电脑是被连接在网络上的。 1301 1302此致敬礼, 1303 1304BackupPC Genie 1305https://backuppc.github.io/backuppc 1306EOF 1307 1308# No recent backup 1309$Lang{EMailNoBackupRecentSubj} = "BackupPC: 客户机 \$host 最近未被备份过"; 1310$Lang{EMailNoBackupRecentMesg} = <<'EOF'; 1311To: $user$domain 1312cc: 1313Subject: $subj 1314$headers 1315尊敬的用户 $userName, 1316 1317您的电脑 ($host) 已经有 $days 天没有被成功备份过了。您的电脑 1318第一次被备份是在 $firstTime 天前,直至 $days 天前已经被备份过 $numBackups 次。 1319正常情况下,当您的电脑与网络连接时电脑备份会自动进行。 1320 1321在最近 $days 天内,如果您的电脑已经与网络连接了若干小时, 1322请与系统管理员联系以判断为什么备份没有进行。 1323 1324除此之外,如果您不在办公室,您只能手动拷贝重要文件到其它存储介质上。 1325应该提醒您的是,如果您的电脑磁盘损坏,您在最近 $days 天内创建或修改 1326的文件,包括新收到的电子邮件和附件,将无法被恢复。 1327 1328此致敬礼, 1329 1330BackupPC Genie 1331https://backuppc.github.io/backuppc 1332EOF 1333 1334# Old Outlook files 1335$Lang{EMailOutlookBackupSubj} = "BackupPC: 客户机 \$host 上的微软 Outlook 文件需要备份"; 1336$Lang{EMailOutlookBackupMesg} = <<'EOF'; 1337To: $user$domain 1338cc: 1339Subject: $subj 1340$headers 1341尊敬的用户 $userName, 1342 1343您的电脑上的 Outlook 文件 $howLong。 1344 1345这些文件包括所有您的电子邮件,附件,通讯录及日程表信息。 1346您的电脑第一次被备份是在 $firstTime 天前,直至 $lastTime 天前已经被 1347备份过 $numBackups 次。但是,Outlook 在运行时锁住所有所属文件, 1348导致这些文件无法被备份。 1349 1350建议您依以下方式备份 Outlook 文件: 1351 13521。首先确认电脑是连接在网路上; 13532。退出 Outlook 及所有其它应用; 13543。使用网页浏览器访问此链接: 1355 1356 $CgiURL?host=$host 1357 1358选择 “开始增量备份”,启动增量备份操作;然后选择 “返回 $host 主页” 1359并用浏览器的 “刷新” 功能来检查该备份操作的状态。 1360 1361此致敬礼, 1362 1363BackupPC Genie 1364https://backuppc.github.io/backuppc 1365EOF 1366 1367$Lang{howLong_not_been_backed_up} = "还从未被成功备份过"; 1368$Lang{howLong_not_been_backed_up_for_days_days} = "已经有 \$days 天未被备份过"; 1369 1370####################################################################### 1371# RSS strings 1372####################################################################### 1373$Lang{RSS_Doc_Title} = "BackupPC 服务器"; 1374$Lang{RSS_Doc_Description} = "RSS feed for BackupPC"; 1375$Lang{RSS_Host_Summary} = <<EOF; 1376完全备份个数:\$fullCnt; 1377最后一次完全备份 (天前):\$fullAge; 1378完全备份大小 (GiB):\$fullSize; 1379完全备份速度 (MB/sec):\$fullRate; 1380增量备份个数:\$incrCnt; 1381最后一次增量备份 (天前):\$incrAge; 1382当前状态:\$host_state; 1383残: \$host_disabled; 1384最后一次备份结果:\$host_last_attempt; 1385EOF 1386 1387####################################################################### 1388# Configuration editor strings 1389####################################################################### 1390 1391$Lang{Only_privileged_users_can_edit_config_files} = "只有特权用户可以编辑服务器配置。"; 1392$Lang{CfgEdit_Edit_Config} = "修改服务器配置"; 1393$Lang{CfgEdit_Edit_Hosts} = "增删客户机"; 1394 1395$Lang{CfgEdit_Title_Server} = "服务器"; 1396$Lang{CfgEdit_Title_General_Parameters} = "总体参数"; 1397$Lang{CfgEdit_Title_Wakeup_Schedule} = "唤醒调度"; 1398$Lang{CfgEdit_Title_Concurrent_Jobs} = "并行任务"; 1399$Lang{CfgEdit_Title_Pool_Filesystem_Limits} = "备份池文件系统资源限制"; 1400$Lang{CfgEdit_Title_Other_Parameters} = "其它参数"; 1401$Lang{CfgEdit_Title_Remote_Apache_Settings} = "远程 Apache 服务器设置"; 1402$Lang{CfgEdit_Title_Program_Paths} = "程序路径"; 1403$Lang{CfgEdit_Title_Install_Paths} = "安装路径"; 1404$Lang{CfgEdit_Title_Email} = "电子邮件"; 1405$Lang{CfgEdit_Title_Email_settings} = "电子邮件设置"; 1406$Lang{CfgEdit_Title_Email_User_Messages} = "用户邮件内容设置"; 1407$Lang{CfgEdit_Title_CGI} = "CGI"; 1408$Lang{CfgEdit_Title_Admin_Privileges} = "管理特权"; 1409$Lang{CfgEdit_Title_Page_Rendering} = "网页外观"; 1410$Lang{CfgEdit_Title_Paths} = "路径"; 1411$Lang{CfgEdit_Title_User_URLs} = "用户 URLs"; 1412$Lang{CfgEdit_Title_User_Config_Editing} = "用户配置编辑"; 1413$Lang{CfgEdit_Title_Xfer} = "传输"; 1414$Lang{CfgEdit_Title_Xfer_Settings} = "传输设置"; 1415$Lang{CfgEdit_Title_Ftp_Settings} = "FTP 设置"; 1416$Lang{CfgEdit_Title_Smb_Settings} = "Smb 设置"; 1417$Lang{CfgEdit_Title_Tar_Settings} = "Tar 设置"; 1418$Lang{CfgEdit_Title_Rsync_Settings} = "Rsync 设置"; 1419$Lang{CfgEdit_Title_Rsyncd_Settings} = "Rsyncd 设置"; 1420$Lang{CfgEdit_Title_Archive_Settings} = "备档设置"; 1421$Lang{CfgEdit_Title_Include_Exclude} = "包含/排除"; 1422$Lang{CfgEdit_Title_Smb_Paths_Commands} = "Smb 路径/命令"; 1423$Lang{CfgEdit_Title_Tar_Paths_Commands} = "Tar 路径/命令"; 1424$Lang{CfgEdit_Title_Rsync_Paths_Commands_Args} = "Rsync 路径/命令/参数"; 1425$Lang{CfgEdit_Title_Rsyncd_Port_Args} = "Rsyncd 端口/参数"; 1426$Lang{CfgEdit_Title_Archive_Paths_Commands} = "备档路径/命令"; 1427$Lang{CfgEdit_Title_Schedule} = "调度"; 1428$Lang{CfgEdit_Title_Full_Backups} = "完全备份"; 1429$Lang{CfgEdit_Title_Incremental_Backups} = "增量备份"; 1430$Lang{CfgEdit_Title_Blackouts} = "备份暂停期"; 1431$Lang{CfgEdit_Title_Other} = "其它"; 1432$Lang{CfgEdit_Title_Backup_Settings} = "备份设置"; 1433$Lang{CfgEdit_Title_Client_Lookup} = "客户机查找"; 1434$Lang{CfgEdit_Title_User_Commands} = "用户命令"; 1435$Lang{CfgEdit_Title_Hosts} = "客户机"; 1436 1437$Lang{CfgEdit_Hosts_Comment} = <<EOF; 1438要增加一台新的备份客户机,请点击"添加",然后在 "host" 列输入其主机名。 1439关于 "dhcp" 列的选择:只要该客户机的 IP 地址能被 nslookup 或 nmblookup 命令 1440获得,就不选择此标志位。"user" 列中填入该客户机的一个拥有者或使用者的用户名, 1441此用户拥有开始/中止/浏览/恢复该客户机备份的权限;同时此用户将被传送电子邮件, 1442所以此用户名必须是一个合法电子邮件用户名。"moreUsers" 列中可填入该客户机的 1443其他使用者的用户名,他们也拥有开始/中止/浏览/恢复该客户机备份的权限, 1444多个用户名间用逗号分隔且不能含空格。与 "user" 列不同的是,"moreUsers" 列 1445中用户不被传送电子邮件,所以他们不必是合法电子邮件用户名,只要能被 1446Apache Web 服务器认证登录即可。 如果想在一台现有客户机的管理配置的基础上 1447配置一台新机,该新机主机名可在 "host" 列以这种方式输入 "NEWHOST=COPYHOST" , 1448这里 NEWHOST 是新机主机名,COPYHOST 是现有客户机主机名。也可以以这种方式 1449修改一个现有客户机的配置。要删除一台现有备份客户机,请点击其所在行的"删除"。 1450所有上述修改只有在点击"保存“后才能生效。被删除的备份客户机,其备份数据 1451并没有被删除。所以如果不慎"删除"一台备份客户机,只需重新"添加"即可。要想 1452完全删除一台备份客户机的备份数据,你需要手动删除备份服务器目录 1453 \$topDir/pc/HOST 下的所有文件,这里 HOST 是该客户机主机名。 1454EOF 1455 1456$Lang{CfgEdit_Header_Main} = <<EOF; 1457\${h1("总体配置编辑")} 1458EOF 1459 1460$Lang{CfgEdit_Header_Host} = <<EOF; 1461\${h1("客户机 \$host 配置编辑")} 1462<p> 1463注意:适用于所有客户机的全局性默认配置,其相应 “替换” 旁的方框是不被选择的。如果要修改本客户机的某项设置,请点击 “替换” 旁的方框。如果该设置已经处于被修改状态,则修改后不需点击 “替换” 旁的方框。如果要将其还原使用默认配置,则需点击 “替换” 旁的方框,使其处于未被修改状态。 1464<p> 1465EOF 1466 1467$Lang{CfgEdit_Button_Save} = "保存"; 1468$Lang{CfgEdit_Button_Insert} = "插入"; 1469$Lang{CfgEdit_Button_Delete} = "删除"; 1470$Lang{CfgEdit_Button_Add} = "添加"; 1471$Lang{CfgEdit_Button_Override} = "替换"; 1472$Lang{CfgEdit_Button_New_Key} = "文件卷名(Windows Share)"; 1473$Lang{CfgEdit_Button_New_Share} = "New ShareName or '*'"; 1474 1475$Lang{CfgEdit_Error_No_Save} 1476 = "错误:有误,无法保存"; 1477$Lang{CfgEdit_Error__must_be_an_integer} 1478 = "错误:\$var 必须是整数"; 1479$Lang{CfgEdit_Error__must_be_real_valued_number} 1480 = "错误:\$var 必须是实数,不能是浮点数"; 1481$Lang{CfgEdit_Error__entry__must_be_an_integer} 1482 = "错误:\$var 内容 \$k 必须是整数"; 1483$Lang{CfgEdit_Error__entry__must_be_real_valued_number} 1484 = "错误:\$var 内容 \$k 必须是实数,不能是浮点数"; 1485$Lang{CfgEdit_Error__must_be_executable_program} 1486 = "错误:\$var 必须是可执行程序"; 1487$Lang{CfgEdit_Error__must_be_valid_option} 1488 = "错误:\$var 必须是合法选项"; 1489$Lang{CfgEdit_Error_Copy_host_does_not_exist} 1490 = "客户机 \$copyHost 不存在;生成全计算机名 \$fullHost。如果此客户机不是你想要的,请将它删除。"; 1491 1492$Lang{CfgEdit_Log_Copy_host_config} 1493 = "用户 \$User 拷贝了客户机 \$fromHost 的配置到客户机 \$host\n"; 1494$Lang{CfgEdit_Log_Delete_param} 1495 = "用户 \$User 从配置 \$conf 中删除了 \$p\n"; 1496$Lang{CfgEdit_Log_Add_param_value} 1497 = "用户 \$User 添加了 \$p 到配置 \$conf 中,值设为 \$value\n"; 1498$Lang{CfgEdit_Log_Change_param_value} 1499 = "用户 \$User 将配置 \$conf 中的 \$p 从 \$valueOld 更改为 \$valueNew\n"; 1500$Lang{CfgEdit_Log_Host_Delete} 1501 = "用户 \$User 删除了客户机 \$host\n"; 1502$Lang{CfgEdit_Log_Host_Change} 1503 = "用户 \$User 将客户机 \$host 上的 \$key 从 \$valueOld 更改为 \$valueNew\n"; 1504$Lang{CfgEdit_Log_Host_Add} 1505 = "用户 \$User 添加了客户机 \$host: \$value\n"; 1506 1507#end of lang_zh_CN.pm 1508