玲玲 的个人资料玲玲的共享空间照片日志留言簿更多 工具 帮助

日志


7月30日

mysql修改密码

新手在这个上往往容易范错误,导致不能进入MYSQL,整得非常郁闷。
我来做几个例子相信很快就明白了 。
1、原来的密码是123456
C:\>type mysql5.bat
@echo off
mysql -uroot -p123456 -P3306
正确的修改MYSQL用户密码的格式是:
我们这里用
用户:root(可以换成其他的)
密码:woshiduide
来演示新密码。

C:\>mysqladmin -uroot -p password woshiduide
Enter password: ******
于是修改成功。
注意PASSWORD关键字后面的空格

有好多人是这样修改的:
C:\>mysqladmin -uroot -p password 'woshiduide'
Enter password: ******

C:\>mysqladmin -uroot -p password 'woshiduide'
Enter password: *********
Warning: single quotes were not trimmed from the password by your command
line client, as you might have expected.

而这个时候真正的密码是'woshiduide'

C:\>mysql -uroot -p'woshiduide'
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 18
Server version: 5.1.17-beta-community-nt-debug MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

而新手往往这样:
C:\>mysql -uroot -pwoshiduide
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: Y
ES)
所以非常郁闷,BAIDU、GOOGLE的搜了一大堆。

我现在把密码改回去。
C:\>mysqladmin -uroot -p'woshiduide' password 123456

2、还有就是可以直接进入MYSQL,然后修改密码。

mysql> use mysql
Database changed
mysql> update user set PASSWORD = PASSWORD('woshiduide') where USER='root' and H
OST='localhost';
Query OK, 1 row affected (0.05 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> flush privileges;

mysql> exit
Bye

C:\>mysql -uroot -pwoshiduide
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 23
Server version: 5.1.17-beta-community-nt-debug MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>
Query OK, 0 rows affected (0.02 sec)
3、还有一种就是用SET PASSWORD 命令修改:

C:\>mysql5.bat
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.1.17-beta-community-nt-debug-log MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> set password for root@'localhost' = password('woshiduide');
Query OK, 0 rows affected (0.02 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.09 sec)

mysql> exit
Bye
4、GRANT 也可以,不过这里不介绍。因为涉及到权限的问题。
7月22日

jspwiki搭建

Wiki的概念

Wiki 指一种超文本系统。这种超文本系统支持面向社群的协作式写作,同时也包括一组支持这种写作的辅助工具。我们可以在Web的基础上对Wiki文本进行浏览、创建、更改,而且创建、更改、发布的代价远比HTML文本小;同时Wiki系统还支持面向社群的协作式写作,为协作式写作提供必要帮助;最后,Wiki的作者自然构成了一个社群,Wiki系统为该社群提供简单的交流工具。与其它超文本系统相比,Wiki有使用方便及开放的特点,所以Wiki系统可以帮助我们在一个社群内共享某领域的知识。

JSPWiki 简介

JSPWiki是一个基于文本文件的简易wiki系统包括了身份认证和版本控制功能。完全采用JSP/Sevelet开发,采用UTF-8,能很好的支持中文,可以直接使用中文名作为页面(page)名。是一个简单易用的Wiki引擎。本文将向您展示如何建立一个自己的JSPWiki 应用。包括改变模板,安装插件以及为你的wiki加入身份认证功能。
目录
*       [1] 在Tomcat下建立JSPWiki应用
*       [2] 更换模板
*       [3] 安装插件
*       [4] 使用身份认证功能
Tomcat下建立JSPWiki应用 [#1]
1.  下载JSPWiki,解压缩,把jspwiki.war直接Copy到Tomcat下面webapps目录下,更名为wiki.war。
2.  启动tomcat,wiki.war会自动解压缩到webapps目录下
3.  到%Tomcat%/webapps/wiki/classes/WEB-INFO目录下面修改jspwiki.properties文件,作如下修改

  jspwiki.fileSystemProvider.pageDir = D:\\SOFT\\Tomcat5.5.20_wiki\\webapps\\wiki\\myData
  jspwiki.basicAttachmentProvider.storageDir = D:\\SOFT\\Tomcat5.5.20_wiki\\webapps\\wiki\\myData
  log4j.appender.FileLog.File = D:\\SOFT\\Tomcat5.5.20_wiki\\logs\\jspwiki.log
  jspwiki.baseURL = http://localhost:8080/wiki/
4.  可以运行http://localhost:8080/wiki/Install.jsp帮助完成上述配置 ,为了能够在wiki中使用HTML需要修改 jspwiki.properties,把allowHTML 选项打开

  jspwiki.translatorReader.allowHTML = true
更换模板 [#2]
1.      下载模板redman,并且解包到tomcat_home\webapps\JSPWiki目录下的template的目录下,目录名称应该就是redman
2.      修改jspwiki.propertiest文件,把

  jspwiki.templateDir = default
改成

   jspwiki.templateDir = redman
安装插件 [#3]
安装java2html插件
1.      下载java2html插件
2.      把下载下来的java2html.jar拷贝到 tomcat_home\webapps\JSPWiki\WEB-INF\lib目录下
3.      修改 jspwiki.propertiest文件

jspwiki.plugin.searchPath = de.java2html.plugin.jspwiki
安装PDF插件
1.  首先需要下载其它组件。下载Apache FOP 并解包把avalon-framework.jar (或者其他版本,比如:avalon-framework-cvs-20020806.jar)、batik.jar、fop.jar拷贝到WEB-INF/lib下;下载 jTidy 并解包,拷贝Tidy.jar to WEB-INF/lib目录下;下载 JIMI 并解包,把JimiProClasses.zip拷贝到WEB-INF/lib/目录并改名为JimiProClasses.jar.
2.  在jspwiki 下载pdf插件
3.  把下载下来的wikipdf.jar拷贝到 tomcat_home\webapps\JSPWiki\WEB-INF\lib目录下
4.  修改 tomcat_home\webapps\JSPWiki目录下Web.xml文件,增加下面的内容

 <servlet>
     <servlet-name>Wiki2PDFServlet</servlet-name>
     <servlet-class>se.eminds.jspwiki.Wiki2PDFServlet</servlet-class>
 </servlet>
 
 <servlet-mapping>
     <servlet-name>Wiki2PDFServlet</servlet-name>
     <url-pattern>/wiki.pdf</url-pattern>
 </servlet-mapping>
5.  修改templates/default/ViewTemplate.jsp文件,加入下面的内容

 <a href="wiki.pdf?page=<wiki:Variable var="pagename" />&ext=.pdf">View PDF</a> 
注意: 修改jspwiki.propertiest文件时,"="后面的变量值后面不能有多余的空格或者tab,否则JSPWiki无法正常读取配置文件导致改动没有效果。

使用身份认证功能
[#4]
1.  修改jspwiki.properties文件,加入下面的内容:

jspwiki.authenticator = FileAuthenticator

  jspwiki.fileAuthenticator.fileName = /tmp/passwords.txt

  jspwiki.auth.useOldAuth=true

# Add the following line authorize all users

  jspwiki.policy.strictLogins = true
2.  编辑对应的password.txt文件加入合法用户,例如:

# The format is simply username = password
  # No encryption is used currently.
  # Comments are allowed; prepend with hash.

  ebu = foobar
  ubi = frobozz
3.  设置全部页面的默认访问权限,增加一个DefaultPermissions页面,包含下面的内容
[{SET defaultpermissions='ALLOW view Guest;DENY edit Guest;ALLOW edit KnownPerson'}]
4.      管理员用户组。可以在jspwiki.propertiest文件中指定管理员用户组的名称,如:

jspwiki.auth.administrator = WikiAdmin
5.  那么默认的管理员用户组被命名为WikiAdmin,然后可以创建WikiAdmin页面加入成员,下面指令可以在WikiAdmin中加入JackJones,JillJones两个用户
[{SET members='JackJones, JillJones'}]
6.  如果需要设置单独页面的访问权限,可在页面内容前面加上访问规则,例如:
[{ALLOW view Guest}] [{DENY edit Guest}] [{ALLOW edit ebu, ubi}]
7.  如果需要增加一个用户组Xyz,增加一个Xyz的页面,加入下面的指令
[{SET members='Foo, Bar'}] }]
注意: JSPWiki有几个默认的用户组。
   任何一个访问wiki的用户都属于Guest用户组;
   任何一个使用user prefenrences设置了用户名的用户都属于NamedGuest用户组;
   所有通过了身份认证的用户属于KnownPerson用户组。
注意: 目前的身份认证处理方式是临时的。
   目前的身份认证方式是临时的,到2.4以上的版本会改变。目前权限规则实现有问题, 必须使用管理员用户组。因为加上了禁止guest访问
的权限管理规则后,除了管理员外所有用户都无法编辑wiki。 如果希望一个用户有wiki的编辑权限,别忘了把他加到管理员用户组。

7月18日

时间同步

[时间同步]NTP服务器的配置

本文介绍了时间服务器常用的二种协议:SNTP和TIME,并就局域网环境下各种系统(Linux、Windows98、2000、XP)时间服务的设置分别进行了说明,最终实现整个局域网环境下所有电脑时钟的同步与校准。一、什么是网络时间服务
  网络时间服务Net Time Service与网络文件下载服务FTP、网络浏览服务WWW等一样,是一种网络服务,提供网络时间服务的电脑叫网络时间服务器。当然有些时间服务器是纯硬件结构的,通过GPS卫星信息来获取时间,其外观与一台交换机相似,不在文本介绍之列。本文主要介绍一台电脑如何通过网络获取上级时间服务器提供的标准时间,再服务于本单位的局域网,使一个单位的所有电脑都能与标准时间保持同步,时间误差一般小于0.5秒。
   TCP/IP协议中,用于同步时间的协议为NTP协议,它是由美国德拉瓦大学的David L. Mills教授于1985年提出,除了可以估算封包在网络上的往返延迟外,还可独立地估算计算机时钟偏差,从而实现在网络上的高精准度计算机校时,它是设计用来在Internet上使不同的机器能维持相同时间的一种通讯协议。时间服务器(time server)是利用NTP的一种服务器,通过它可以使网络中的电脑保持时间同步。
  NTP是一个跨越广域网或局域网的复杂的同步时间协议,它通常可获得毫秒级的精度。SNTP(Simple Network Time Protocol)是NTP的一个子集,目的是为了那些不需要NTP实现复杂性网络时间同步的主机。通常用于局域网上的若干台主机通过互联网与其他的 NTP主机同步时钟,接着再向局域网内其他客户端提供时间同步服务。SNTP一般使用UDP的123端号,Linux系统和Windows系统都支持它,是现在架设网络时间服务器的主流协议。
   Time Protocol (RFC-868)协议是一种较简单的协议。此协议提供了一个独立于站点的,机器可读的日期和时间信息。时间服务返回的是从1900年1月1日午夜到现在的秒数。该协议通过TCP或UDP的37端口提供服务。Linux下的TIME服务提供该服务,Windows系统中较少使用。
  现在网上的许多时间校准软件,有些支持SNTP协议、有些支持TIME协议,有些二者都支持,我们在选择时要特别注意。另外在Windows系统的对等网中,还有使用“net time 机器名 /set /yes”命令使用netbios协议进行时间校准,由于这种方法不支持混合网络和跨网段网络,本文也不特别介绍。二、时间服务器有何用
  也许有人认为电脑的时钟有点误差影响不大,其实这是非常错误的。电脑系统中的文件保存、文件传输、电子邮箱中的时间戳都是以电脑时钟为准的。如果今后我们想进行文件查找、日志查询,如果系统时钟不准,或同一网络中的电脑时间不同步,将给后续工作带有许多麻烦。现在许多备份软件、编译软件、FTP工具都是以文件保存时间为依据进行比较的,如果时间不统一,将使这些软件难以正常工作。三、如何使局域网内的所有电脑时钟同步
  首先要在互联网上寻找一台或几台专门提供时间服务的电脑(以下称为主时间服务器)。现在有不少机构免费提供标准时钟服务,在http: //www.ntp.org中专门介绍有不少时间服务器地址。推荐大家在平时使用pool.ntp.org这个地址,因为这个域名在DNS解析时会从一组时钟服务器的IP中随机选取,非常合适一般用户使用。大家也可以在搜索引擎中以“public time server”为关键词搜索一下,找出离你较近的时间服务器。
  其次选择单位中能上网的一台电脑,让它与主时间服务器同步,这台电脑可以是Linux主机,也可以是win98、2000、XP主机。同时把这台电脑设为局域网内部的时间服务器(以下称为时间服务器),供局域网内部的所有电脑校对时间。
  再在单位内部的所有电脑上设置时间服务的客户端,如果客户机为win2000、XP或Linux系统,不需要安装任何软件。如客户机为win98系统时要根据时间服务器类型的不同而区别对待:如果时间服务器选用SNTP协议进行时钟同步,则win98机上需安装一个sntp客户端软件,如时间服务器由 windows电脑通过netbios协议提供,则win98上也不需要安装任何软件。四、设置时间服务器
以下分Linux、Win98、Win2000XP三种情况分别介绍,而且只介绍sntp服务的架设,timeserver服务和netbios对时服务由于应用很少,不做介绍。
1、Linux主机做时间服务器(以RedHat9.0为例)
第一步:检查是否已经安装有ntp软件包。输入“rpm -qa|grep ntp”,如果已经安装应该显示“ntp-4.1.2-0.rc1”。
  第二步:安装ntp软件,从ftp://ftp.redhat.com下载rpm包,输入“rpm -ivh ntp-xxx.rpm”执行安装。
  第三步:配置ntp服务。备份原/etc/ntp.conf文件后,输入以下内容
       server pool.ntp.org
server pool.ntp.org
server pool.ntp.org
driftfile /etc/ntp/drift
三行server都设pool.ntp.org是为了提供连接冗余,当第一个地址连接失败时,后面的地址提供时间服务,注意这里的pool.ntp.org对应一组IP地址,由DNS随机分配。
  第四步:启动ntp服务。输入“service ntp restart”。
  为了保证以后Linux机启动后ntp服务能自动启动,还要输入“chkconfig ntpd on”。Linux下的ntp软件不但能自动与互联网上的时钟保持同步,同时本身已经是一台SNTP服务器了,可以供局域网内的电脑校对时间。建议启动 NTP服务后,先用date命令手工校正一下时间,以后系统会自动与互联网上的主时间服务器保持同步。ntp服务还有一个好处,如果当前系统的时间与标准时间有所误差,它不是马上把时间校正,而是逐步缩小与标准时间的误差,以免系统内部出现时间突变。
2、Windows2000、XP做时间服务器
  第一步:指定主时间服务器。在DOS方式输入“net time /setsntp:pool.ntp.org”,这里我们指定pool.ntp.org是主时间服务器,也可以是其它地址。
  第二步:开始与主时间服务器同步。先关闭windows time服务,再开启该服务。可以在“管理工具”的“服务”界面下完成,也可以以DOS方式输入“net stop w32time”、“net start w32time”。
  第三步:设置电脑的Windows time服务的启动方式为自动。在“管理工具”的“服务”界面下完成。
  注意这台windows主机不能加入任何域,否则无法启动windows time服务。此时,这台windows电脑已经是互联上主时间服务器的客户了,以后每次电脑启动时,都会自动与主时间服务器校对时间。如果网络不通,电脑也会过45分钟后再次自动校对时间。需要注意的是电脑的时钟与标准时间误差不能超过12小时,否则不能自动校对,而要手动校正了。
  第四步:使这台电脑成为时间服务器,供局域网内部的电脑校对时间。用“regedit”打开注册表,把 “HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeParameters”中的 LocalNTP改为1即可。
3、Windows98做时间服务器
  一般不推荐Windows98系统做时间服务器,而且win98本身也不含时间服务器功能,需要安装第三方软件。本文后面介绍的nettime软件(http://nettime.sourceforge.net/)是一个非常优秀的时间客户端软件,它可以工作在windows98、2000、XP 系统中,当选中“Allow other computers to sync to this computer”时,可以把这台电脑当做成时间服务器。
五、设置时间服务器的客户端
  客户端的主要任务是连接到局域网内的时间服务器,以保持电脑的时钟与服务器同步。同样分Linux、Windows98、2000、XP几种情况介绍
1、LINUX主机
  其实在上面介绍Linux系统中的ntp服务时,已经提到ntp时间服务时同时也是一个时间服务的客户端,只要把/etc/ntp.conf文件中的 “server pool.ntp.org”改为“server 内部时间服务器IP地址”即可。如不想使用ntp服务,也可使用ntp软件包中带来的ntpdate命令,只要手工执行“ntpdate 时间服务器IP地址”即可。如想每天自动对时,可以把这条命令放在cron中,注意在同一台电脑上ntp服务与ntpdate命令不能同时使用。
2、Windows2000主机
  执行设置时间服务器时的前三步即可
3、WindowsXP主机
  可以按Windows2000主机的方法设置,也可双击任务栏右下角的时钟图标,打开“日期时间属性”对话框,在“Internet时间”卡片上选中“自动与Internet时间服务器同步”,并在服务器上填入内部时间服务器的IP地址即可。
4、Windows98主机
  需要安装第三方软件,自由(free)软件nettime是个不错的软件,它支持SNTP(UDP123)、TIME(TCP37)、TIME- UDP(UDP37)三种方法进行时间同步。软件操作简单,只要在上图的“Hostname or IP Address”中输入局域网内时间服务器的IP地址,“Protocol”中选SNTP即可。
  当然在windows98电脑上执行“net time 机器名或IP地址 /set /yes”也可能与其它windows电脑同步时钟,前提是这些电脑在同一网段,并且安装有netbios协议。把该命令放在autoexec.bat 中,就可以做到开机自动对时了。
7月16日

基于linux的php搭建wiki网站

 

在Web 2.0革命中,维基(Wiki)的起源比博客还要早。博客要由自己一个人编写并维护,每天更新博客会让你思维枯竭,维基技术和支持它的网页却能够让大家群策群力一起交流共同爱好。维基对所有人包括浏览Wiki页面的人都是全面开放的。也就是说,每个人都可以任意创建、修改和删除网站上的页面内容。维基和博客相比更加具有团队精神。

通常我们将Wiki翻译为“维基”。Wiki一词来源于夏威夷语的“wee kee wee kee”,原本是“快点快点”的意思。Wiki是一种在线多人协作的超文本系统写作工具。Wiki站点支持面向社区的协作式写作,每个人都可以发表自己的见解,或者对共同维护的主题进行扩展。Wiki同时也包括一组支持这种写作的辅助工具,可以在Web的基础上对Wiki页面的文本进行创建,更改和发布,比做网页和更新网页简单方便得多。

实现Wiki的方式有两种:一种是到Wiki空间提供网站注册,注册完后就可以开始了。另外一种就是在自己的计算机上架设一个Wiki,其好处是没有储存空间的限制,缺点是整个过程稍微麻烦一点,还必须要有不错的上传带宽,不过造访人数不多时,家用的ADSL也够用了。虽然在自己的计算机上架设Wiki存在缺点,但是自由度相对也比较大,这里,笔者就教你如何在十分钟内在你的计算机上架设好Wiki。

本文将要搭建的LAMP动态Wiki网站是基于Linux的PHP技术的实现方法。LAMP (Linux + Apache + MySQL + PHP) 近几年来发展迅速,已经成为Web 服务器的事实标准。这些组件虽然并不是一开始就设计为一起使用的,但是,这些开源软件都可以很方便地随时获得并免费使用。这就导致了这些组件经常在一起使用。在过去的几年里,这些组件的兼容性不断完善,在一起的应用情形变得非常普便。PHP是一种跨平台的服务器端的嵌入式脚本语言,它大量地借鉴C、Java和Perl语言的语法,并加入了PHP自己的特性,使Web开发者能够快速地写出动态页面。PHP支持所有主流数据库。它是完全免费的,使用时不需要支付任何费用。

另外,如果希望在Unix、BSD、Linux平台使用zlib格式则需要安装动态链接函数库zlib。Zlib官方网站为:http://www.gzip.org/zlib/ ,编译时注意使用如下命令行选项:./configure --with-zlib。

CMS软件的选择

如果从Web 搜索开放源码内容管理,你将发现大量的站点、系统和项目。特别是 Open Source Content Management OSCOM 这个站点,它是专门针对这个主题的。那么什么是内容管理系统呢?来自 X-infoModeL 的定义是笔者见到的最好的定义之一:“在组织、分类和构造信息资源以便以多种方式存储、发布和重用这些信息资源时涉及的过程和工作流。内容管理系统(CMS)用于收集、管理和发布内容,以组件或完整文档的形式存储内容,同时维护组件之间的链接。它还可以提供内容校正控制。”Mambo,中文意思为曼波音乐(源于古巴黑人音乐),是功能最强大的开放源码的内容管理系统之一。在2004年4月20日伦敦举行的Linux用户和开发员大会上,Mambo从众多优秀的开放源码系统中脱颖而出,获得2004年度最佳Linux开放源码系统奖项,和它同场竞技的有KDE、Firebird SQL以及eGroupware等,Mambo的口号是 Power in Simplicity ( 强大源自简易)。Mambo基于php+mysql技术开发,具有易于安装、管理简单、可靠性高等特点。Mambo可在全球范围内构建各种类型的网站,小到简单的个人网站,大到复杂的公司应用网站,Mambo都可轻松搞定。Mambo是一个内容管理系统,用于发布网站。目前已经加入许多模块,提供包括购物车、横幅广告、自定义地图、聊天和论坛等功能。

搭建Wiki网站

1. Mambo CMS软件下载

#cd var/www/html

#wegt http://mamboforge.net/frs/download.php/4211/mambo452-Global.zip

#unzip mambo452-Global.zip “建立一个目录”

2. Mambo建立数据库

# mysql -u root -p

Enter password: xxxxxxxxx

Your Mysql connection id is 3 to server version: 4.11

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

Mysql> create mambo database ; “为建立数据库”

Query OK, 1 row affected (0.01 sec)

Mysql>grant all mambo privileges on mambo.* to mambo@localhost identified by ‘76543981’;?“将建立的Mambo权限给Mambo账号,并且设定密码”

mysql>exit

3. 测试刚建立的数据库与账号是否可以使用

# mysql -u -p

Enter password: xxxxxxxxx

Your Mysql connection id is 3 to server version: 4.11 ……

Mysql> connect mambo;

Connection id: 5

Current database:

mysql>show databases;

+--------------+

| Database |

+--------------+

| mysql |

| mambo |

+--------------+

2 rows in set (0.00 sec)

mysql> quit

4.开始安装Mambo

● 赋予权限

#cd /var/www/html/ #进入到Apache 服务器的确省目录中#

#chmod 777 /var/www/html/mambo

进行网络安装安非常简单,通常需要以下几个步骤:打开Linux的Firefox火狐浏览器在地址栏直接输入:http://主机名/mambo /installation/index.php 后,出现安装前准备工作界面,选择语言选项为绿色后选择同意,然后点击“下一步”按钮,见图1。然后是是否接受软件许可协议,选择同意,点击“下一步”按钮。

图1 安装前的检查

● MySQL数据库设定

需要说明的是:MySQL服务器名称为 localhost ,这个是 MySQL 的服务器名称,不是 Linux服务器名称。通常 MySQL 的服务器名称是:localhost 。MySQL数据库名称为 mambo,MySQL 账号为mambo且密码为上面设定值,数据库表格字首通常是mom_s,见图2。

图2 MySQL数据库设定

● 网站名称设置

这里设置mambo的别名,请根据情况自己设定。

● 其他设定

这里主要设定管理员电子邮件等信息。见图3。

图3 其他设定

以上内容主要包括五个部分:为了读者填写方便笔者把它做成一个列表,如表1所示。 表 参数设置表

● 安全设定

测试成功后系统会提醒出于安全考虑,删除安装文件(防止他人使用这些文件修改系统信息),并且要记录下admin(系统管理员)口令,见图4。

图4 系统信息设定成功

# rm -rf /var/www/html/mambo/iinstallation/

项目管理软件

项目管理(PROGRAM MANAGEMENT)是管理科学领域里发展最快的学科之一,也是一门综合性的应用学科,它的思想、理论、工具和方法在全球投资界、产业界及政府财政预算及支出中得到迅速而日益广泛的应用。项目管理广泛应用于建筑、工程、电子、通讯、计算机、金融、制造、咨询、国防以及政府机关等行业。
在应付全球化的市场变动中,项目管理将起到关键性的作用。它对于项目投资的效绩、降低投资风险、企业竞争力的提高、政府形象的改善及公共事务管理水平的提高,已经发挥和正在发挥着巨大作用。

真正称得上中国项目管理的里程碑工作,是著名科学家华罗庚教授倡导的统筹法。华罗庚教授于1964年倡导并开始应用推广的“统筹法”(Overall Planning Method),1965年华罗庚著的《统筹方法平话及其补充》由中国工业出版社出版,该书的核心是提出了一套较系统的、适合我国国情的项目管理方法,包括调查研究,绘制箭头图,找主要关键路线,以及在设定目标条件下优化资源配置等。1964年华罗庚带领中国科技大学部分老师和学生到西南三线建设工地推广应用统筹法,在修铁路、架桥梁、挖隧道等工程项目管理上取得了成功。

什么是项目

“项目是一项为了创造某一唯一的产品或服务的时限性工作。” 其特征有:
(1)时限性。时限性指每个项目都有明确的开端和结束。当项目的目标都已经达到时,该项目就结束了;项目的目标不可能达到时,该项目就会被中止了。机遇或市场行情通常是暂时的--大多数项目都需要在限定的时间框架内创造产品或服务。由项目所创造的产品或服务通常是不受项目的时限性影响的,大多数项目的实施是为了创造一个具有延续性的成果。
(2)唯一性。项目所涉及的某些内容是以前没有被做过的,也就是说这些内容是唯一的。具有重复的要素并不能够改变其整体根本的唯一性,例如:
一个新开发商业航线的项目可能需要提供大量的模型。
一个推广新药的项目可能需要大量药剂用于临床试验。
一个房地产开发项目包括成百上千的独立单元。   我们修建了成千上万的写字楼,但是每一座独立的建筑都是唯一的:它们分属于不同的业主,作了不同的设计,处于不同的位置,由不同的承包商承建等等。
(3)临时性。很多工作团队不是作为“一以贯之”的组织而存在,而是一种以项目为中心的团队。这样的团队因具体的生产项目而建立,一旦项目完成,这个团体就会被解散,成员也会再被分配到其它的工作当中去。

有人把这种管理方式称为“电影摄制组模式”:一个电影制片人为了生产一部电影,把在他看来最适合这部影片、但属于不同的制片公司的各类专业人员(从导演、主演到化妆师)召集在一起,组成一个“能人班子”。影片摄制完成,这个“能人班子”即告解体。

什么是项目管理

所谓项目管理,实际上是在寻找调和创新的不确定性与资源的确定性(局限性)之间,创造性劳动方式与流水线式作业方式之间的冲突的解决之道。用通俗的说法,项目管理是典型的“带着铁链跳舞”的行为。正是项目管理自身包含的悖论性,使得项目管理常常表现为“艰难的艺术”和“遗憾的艺术”,由于项目管理不善而造成的失败项目比比皆是

项目管理最根本的目的是“如何有效地利用时间、技术和人力”,用专业术语表述,项目管理就是在确保时间、经费和性能指标的限制条件下,尽可能高效率地完成项目任务,达成项目目标,从运作中改善管理人员的效率,让所有项目相关者满意。

项目管理的核心理论和概念

项目管理最重要的理论是PERT( 计划评审技术Program Evaluation and Review Technique)。它是网络技术中另一种应用最广的技术,同关键路线法同时独立地公开发表。PERT技术的成功,是由于该技术系统的基本逻辑很成功,很容易为经理们理解,而又不需要他们去掌握系统的细节。运用该技术可以有效地缩短项目的周期,节省大量投资。 许多事例证明,对于合适的工程,网络技术是非常有效的一种特殊计划方法。网络技术是以网络图为基本工具的一种科学的计划方法,是运筹学的一个重要分支。

在项目管理软件中,甘特图(Gant Chart)则是这些核心理论的表现,如Microsoft Project,其项目周期、人员管理、资源管理、关键路线等都可以通过甘特图这个简单、直观的视图来表达。

(甘特图案例1-紧张进度,点击看大图)

(甘特图案例2-松弛进度,点击看大图)

项目管理软件

工欲善其事,必先利其器!在这里介绍一些开源或免费的项目管理软件,希望对大家的xoops项目以及其他任何类型的项目管理有所帮助。

在项目管理软件上,有了两个不同的风格:一个是大而全,诸如Microsoft Project, Primavera Project Planner (P3),Open Plan, Prolog, PM2, CA AllFusion等等,这些项目管理软件,往往涵盖了项目管理的所有方方面面,细致入微,严格正统,你能想到和你想不到的,都全部囊括。另外一种风格就 是小而强,面向特定应用范围,例如行业的项目管理软件,通用的项目管理软件,小巧的项目管理软件等等,这些以国 内的中小型公司为服务对象,设计的往往更贴近应用,甚至根据企业不同,量身打造,例如雪地、华炎、正信等等的中小型软件系统;

在此之外,还有一股强大 的力量――OpenSource的项目管理软件,其中,考虑应用、汉化、社区支持等等,以dotProject为最,不过目前又有很多新兴的软件出现,请看下文介绍。

 

dotProject官方网站:http://www.dotproject.net/

dotProject 中文开发与推广:

http://rt.openfoundry.org/Foundry/Project/?Queue=238

http://blog.markplace.net/marks_development_blog

《项目管理软件dotProject使用手册》

http://www.cnblogs.com/GeneralXU/articles/882263.html

dotProject是一个在1996年左右,由开源组织自发组织人员开发的一个开源的项目管理软件系统,基于Web,可以部署于局域网"广域网的 办公环境中,客户端不需要安装任何软件,只要有IE,Firefox,Opera等浏览器即可,强大,小巧.被翻译为了大约40多中语言,应用于100多 个国家,可见它的简单易用的程度.
dotProject具有以下的特色:
1. 可运作于多种的作业平台:dotProject 这套软件所使用的开发工具,皆是兼容性很高的工具,MySQL很容易连结多种语言,也可以在很多种作业系统下运作良好,可以在多种平台上面运行。
2. Web Server Base:由于是以JavaScript、PHP 的工具所开发出來的工具,所以可以支持项目成员在不同的地点,都可以更新、掌握项目进度,适合用于群体使用,很符合项目管理的需求。
3. 可制作出多种不同的报表及图表,将项目中繁多的资料作适当的处理。
4. 本软件属于开放原始码(open source code)的软件,提供免费使用。
5. 本软件的功能界面,可以透过不同的步骤操作相同的功能;并且软件设计者,将相关的功能配置在同一个操作画面,让使用者可以不必另外绕道选择功能
安装dotproject的基本环境:只要能够跑AMP的OS,都可以(AMP指Apache,Mysql,PHP)

 

ProjectPier:开源的项目管理软件

ProjectPier 开放源代码的PHP项目管理应用,可帮助你进行团队之间的连接,通过Web界面组织贷款项目和任务等。 它的代码是基于Activecollab ,这是一个热门的免费项目管理中的应用。

ProjectPier: 免费的项目管理软件

ProjectPier: 免费的项目管理软件

Projectpier有一个活跃的社区,其中有关于该软件的翻译、主题等内容。projectpier的一些特点包括 :

  • 多客户的能力,让您管理项目。
  • 3级权限管理。
  • 可以限制客户端用户的项目操作权利
  • 短信和工作清单
  • 可以管理修改上传文件。
  • 标签,可用于分类的讯息,任务,目标及档案
  • 按项目涵盖信息,任务,目标及档案进行全文检索
  • 隐私:短讯,任务信息等可以进行隐么设置

 

用于项目管理的Excel图表模板

这是来自Woork制作的一个Excel图表模板,可用来做一些项目的管理,比如资产负债表之类的,虽然类似的在线项目管理很多,但有时一些人更愿意把项目放在自己的电脑里面更加安全放心。

用于项目管理的Excel图表模板
Download Excel Template

 

Collabtive:免费开源的PHP项目管理软件

Collabtive是一项免费的PHP项目管理软件,其界面设计的非常Web 2.0,且使用了大量的Ajax效果。

Collabtive:免费开源的PHP项目管理软件
该软件还处于测试阶段,但它已经具备一些项目管理软件的优势:

  • Projects, Milestones, Taskslists, Tasks
  • 用户管理
  • 留言系统
  • 集成即时通讯应用
  • 多语言支持
  • 模板系统支持

其它具体应用,你可以到网站里面进行DEMO测试。

 

ProjectOffice:在线项目管理/协作网站

ProjectOffice.net 是一个在线项目管理/协作网站。你可以在创建你的项目,且设置哪些人可以参与进入这个项目里来。

ProjectOffice:在线项目管理/协作网站

什么时候会需要到这样的在线服务呢?比如你要准备一个学习计划,或是工作进程等等,那你可以创造这样一个项目管理,更好的和规划自己的预期事件发 展,并可找邀请更多的人加入你的项目,使其更加完善。而如果正好你要进行的项目是团队性质的,那这样的服务就可以降低原始的等级效果,减少电子邮件交换的 麻烦操作。

ProjectOffice:在线项目管理/协作网站

ProjectOffiece是完全免费的,或许这能成为你一试的理由。

 

Redmine:基于Ruby和Rails框架的项目管理软件

Redmine是一个基于Ruby和Rails框架的项目管理软件,它是跨平台和跨浏览器的。

其使用界面很简单朴素,同时也就使用起来也就更加方便, Redmine具备了一个项目和管软件必须具备的大多数功能,基于入口的访问控制,Wiki和档案管理。

Redmine:基于Ruby和Rails框架的项目管理软件

其主要功能包括:

  • 多个项目支持灵活的
  • 基于入口的访问控制
  • 灵活的问题跟踪系统
  • 图表和日历
  • 新闻文件与档案管理
  • Feed及电子邮件通知
  • Per project wiki
  • Per project forums
  • 简单的时间跟踪功能
  • 定制项目和用户领域的问题
  • 供应链管理一体化( svn ,cvs等 )
  • 多重LDAP验证
  • 支持用户自注册
  • 支持多国语言
  • 支持多个数据库的支持

Redmine目前正处于测试阶段。

DotProject开源项目管理(http://blog.csdn.net/yuandj)

其实很多工作都需要以项目管理的角度来进行.从团队的角度,也需要对成员按照项目管理进行控制.
用的最多的项目管理软件是MS Project,用的还是很不错的,但唯一烦恼的是,当我把做完的甘特图给同事的时候,一般都不会去安装MS project,因为这东西实在太大.
更致命的是,作完的计划通常这是一个时间点上,而无法进行团队服务器的方式,困难.
因此,开源的项目管理系统DotPorject(http://www.dotproject.net)是一个很好的选择!
看看台湾markwu 的经验.
http://blog.markplace.net/index.php?op=ViewArticle&articleId=197&blogId=1
官方站点提供了DEMO:
http://www.dotproject.net/demo/
管理员:admin/admin
普通用户:guest/guest 
 

用过),发现真爽。 下面是安装步骤:

1)下载AppServ2.4.2

http://prdownloads.sourceforge.net/appserv/appserv-win32-2.4.2.exe?download

§
AppServ是套开源组合,包括:Apache Http Server,Mysql,PHP
2)安装AppServ2.4.2.exe,很快的,默认选项就可以了。安装完以后要勾选项,把 Apache和Mysql启动。安装到 d:/AppServ目录。
3)下载 dotproject1.0.2或者2.0.1(是个zip包)
4)解压zip包,到 D:\AppServ\www\dotproject目录(这个就是apache的一个 web项目了)
5)访问  http://localhost/phpmyadmin/,可以看到“新建库”的地方,输入库名称dotproject,
字符编码gb2312,submit ;在新出现的页面,选择“SQL”,然后从 D:\AppServ\www\dotproject\db\目录中,选择dotproject_102.sql ,执行,这样数据库就有数据了。
6)修改配置文件,dotproject/include/下面有个默认的config-dist.php,我们在这个文件基础上改,先cp config-dist.php config.php,然后编辑这个config.php文件,主要修改下面:
数据库配置
$dPconfig['dbtype'] = "mysql";      // ONLY MySQL is supported at present
$dPconfig['dbhost'] = "localhost"; //数据库服务器名称,一般不用修改
$dPconfig['dbname'] = "dotproject";  // 刚才创建的数据库名称
$dPconfig['dbuser'] = "hongsoft";  // 数据库用户名称
$dPconfig['dbpass'] = "hongsoft";  // 上面那个用户的密码
$dPconfig['dbport'] = "";  // 修改为你的mysql的端口,如果你自己没改过的话这里不用动了

站点配置
$dPconfig['root_dir'] = "D:/AppServ/www/dotproject";  //dotproject的绝对路径
$dPconfig['base_url'] = "http://blog.csdn.net/hongbo781202/"; //dotproject的url路径
7)访问 http://localhost/dotproject
用户admin  密码 passwd
需要注意的地方:
1)如果提示Login failed,并不是 密码不正确,而是config.php里面有错。
2)如果是 2.0.1,config.php与这里的不同,但基本配置是一样的,只是要配置的内容少了。
3)网上其他地方给的中文版,均不成功。
4)dotproject官方网站给的 中文 pack,也不成功
**********************************************************************************************************
*******************************dotProject2.0.1安装方法******************************
一个很不错的php开源项目管理工具,有了它,不用project了,也不用自己开发项目管理工具了,足够应付中小型软件企业的日常项目管理工
作。版本:dotProject_2_0_1_20050705_UTF-8_Chinese_by_Markwu (请google下载之)
0.安装前提:已安装好easyphp,测试证明apache/mysql/php已经是可用的。
1.解压dotProject_2_0_1_20050705_UTF-8_Chinese_by_Markwu到www目录下,改目录名为dotproject。注意要用这个utf-8版本,从dotproject
下载的版本中文会乱码。
2.执行安装:
http://yourserverip/dotproject/install/index.php,则可以完成安装过程,包括数据库的建立。
3.到dotproject/index.php登陆,admin-passwd.
4.到system admin->default user confonrce,设置默认语言为简体中文。
5.打开gd支持以显示甘特图:在easyPHP面板,配置->php扩展,把php-gd2选上,再重启apache,则即可显示甘特图。
6.重新登陆dotproject,完成整个安装过程
*****************************1小时构建稳定高速的PHP+MYSQL服务器-EasyPHP*********************
http://www.blogdriver.com/zeroliu/1145187.html
作者:华夏blog 文章来源:ghostfire.77169.com
目前Apache的市场占有率已经远远超过IIS等服务器软件 它的高速稳定,免费开放也是其他同类软件无法比拟的, 加上它的完美搭档MYSQL,不让
它红也难.  但你要是以为本文要写Apache的安装之类的那就错了 因为有个软件可以让Apache+MYSQL麻烦的安装设置,变的相当轻松. 今天的主
角是EasyPHP 虽然现在市面上同类的整合软件包很多,但大多是简单的捆绑了Apache+MYSQL的Pack,而不像EasyPHP是个彻彻底底的Program.
通过简单的整合后的Apache和MySQL明显苗条了许多,运行速度相对单独安装的Apache和MySQL快了7%~15%,而且EasyPHP可以方便的开始/停止
,设置httpd.conf,my.ini,PHP Extensions;扩展Apache功能如添加ASP支持等等;虽然是整合的软件但EasyPHP的功能和单独安装的
Apache+Mysql并不逊色……
更重要的是EasyPHP是免费的.
-------------------------------软件功能--------------------------------------------------
1.整合安装Apache 1.3.27 - php 4.3.3 - MySQL 4.0.15 - phpmyadmin 2.5.3.
2.网页即时添加Alias文件夹(可以是你计算机上任何文件夹,甚至是网上的资源)
3.快速设置httpd.conf,my.ini,PHP Extensions
------------------------------安装,设置攻略--------------------------------------------------
1.在http://www.easyphp.org下载EasyPHP1.7.0版
软件大小:10.8M
软件类型:GPN免费软件但版权保护
应用平台:Win9x/NT/2000/XP/2003
2.在http://www.oyido.com.ru/bak/easyhh.rar下载我做的汉化包
软件大小:65.3K
3.运行下载到的EasyPHP安装文件easyphp1-7_setup.exe,有些界面是法语的
因为这个软件是三个法国人写的.
点是,
然后Next这个界面是法文的大意是备份原来的MYSQL设置文件my.ini,并用新的设置文件代替.
Next,这个是GPL(自由软件条款),选中I accept the agreement,
Next,显示的是EasyPHP的软件功能,
Next,选择安装路径,例如D:servEasyPHP,那么你的网页根目录在D:servEasyPHPwww,当然这个文件夹可以通过Apache的httpd.conf修改为其他路
径.
Next,开始菜单名称,
Next,确认信息,
Install,等待安装完成.
这个是PHP.ini的全局函数设置说明,
注意:EasyPHP的php.ini是在Apache的根目录下而非Widows文件夹中!!
Next,是否察看说明文件(法文的),
Finish.
4.将我做的汉化包easyhh.rar中的文件解压到EasyPHP的主目录
替代原文件既可。
注意:安装汉化包必须在关闭EasyPHP的情况下进行.
5.运行EasyPHP.exe
6.右击系统托盘中的那个黑色的E,设置,Apache,
查找ServerName将localhost修改为你的域名.
(这时的MYSQL的Root用户密码是空的通过下面方法修改密码)
7.在http://127.0.0.1/mysql/index.php中点右边的Privileges在User overview 下面点root旁的Edit
在 Change password选择 Password:输入密码 Re-type:确认密码点Go
(由于EasyPHP默认的设置无法使用Discuz2.X/3.X/4.x请按下列步骤修改Php.ini)
8.在EasyPHP的目录下找到Apache文件夹找到php.ini,用记事本编辑它,查找magic_quotes_gpc设置为On,如果需要安装Zend加速器,然后将下列
代码复制到
;/PHPExt下面
Code:
[Zend]
zend_optimizer.optimization_level=15
zend_extension_ts="Zend的安装路径libZendExtensionManager.dll"
zend_extension_manager.optimizer_ts="Zend的安装路径libOptimizer-2.5.5"
[Ctrl+A Select All]
9.在IE中输入http://127.0.0.1/home/点击ajouter添加别名(也可以直接输入http://127.0.0.1/home/index.php?to=add_alias_1)
saisir un nom pour l’alias (ex.: site1)
在此输入别名如:music
saisir le chemin du répertoire créé (ex.: C:weblocalsitessite1)
别名指向地址,如:D:music
paramètres par défaut du répertoire
设置浏览权限
Options Indexes FollowSymLinks Includes
AllowOverride All
Order allow
Allow from all
OK
不用重启服务器
在浏览器中输入Http://你的地址/music就可以看到你的D盘里的Music文件夹中的内容.
10.在IE中输入http://127.0.0.1/home/phpinfo.php参看PHP属性
7月9日

谈论 忘记mysql密码

 

引用

忘记mysql密码
 

如果忘记了 MySQL 的 root 密码,可以用以下方法重新设置:

    1. KILL掉系统里的MySQL进程;

    2. 用以下命令启动MySQL,以不检查权限的方式启动;

    mysqld_safe -skip-grant-tables &

    3. 然后用空密码方式使用root用户登录 MySQL;

    mysql -u root

    4. 修改root用户的密码

    mysql> update mysql.user set password=PASSWORD('新密码') where User='root';mysql> flush privileges;mysql> quit

    5. 重新启动MySQL,就可以使用新密码登录了。

Windows:
1.用系统管理员登陆系统。
2.停止MySQL的服务。
3.进入命令窗口,然后进入MySQL的安装目录,比如我的安装目录是c:mysql,进入C:mysqlbin
4.跳过权限检查启动MySQL,
c:mysqlbin>mysqld-nt --skip-grant-tables
5.重新打开一个窗口,进入c:mysqlbin目录,设置root的新密码
c:mysqlbin>mysqladmin -u root flush-privileges password "newpassword"
c:mysqlbin>mysqladmin -u root -p shutdown
将newpassword替换为你要用的root的密码,第二个命令会提示你输入新密码,重复第一个命令输入的密码。
6.停止MySQL Server,用正常模式启动Mysql
7.你可以用新的密码链接到Mysql了。

忘记mysql密码

 

如果忘记了 MySQL 的 root 密码,可以用以下方法重新设置:

    1. KILL掉系统里的MySQL进程;

    2. 用以下命令启动MySQL,以不检查权限的方式启动;

    mysqld_safe -skip-grant-tables &

    3. 然后用空密码方式使用root用户登录 MySQL;

    mysql -u root

    4. 修改root用户的密码

    mysql> update mysql.user set password=PASSWORD('新密码') where User='root';mysql> flush privileges;mysql> quit

    5. 重新启动MySQL,就可以使用新密码登录了。

7月7日

wiki做项目管理的好处

直希望写篇知识管理方面的文章,苦于自己的懒一直没有成型。今天乘着刚配好wiki服务器写写自己的感想。

用wiki进行项目管理好处显而易见的:

1 知识共享:可以发布需求分析,用例,构架,设计方面的文档,也可以是大家一时的灵感,通过wiki可以保留项目组曾经的想法,理念,即使换了新组员,知识也被保留下来了。

2 文档管理:首先是文档控制,经过成员的多次讨论,leader可以形成完善的,标准的文档版本。其次,即使组员不在实验室也可以访问到项目组文档,参与到讨论当中。

3 便于文档查找:通过tag和rss,web2.0的思想贯穿始终。组员可以通过tag来查找同一技术方面的文章,也可以通过rss来定制自己想看的板块。

4 每天写wiki也可以增增强个人随时整理表达自己思想的能力。

5 每个项目组成员每天的submit就通过confluence提交,大大提高了效率。

构件库项目组使用confluence作为知识共享平台,很好的实现了项目组的交流,不过一开始肯定需要一个过程,这需要大家的配合以及制度的保障。

7月3日

svn脚本备份二

SVN的备份
2007-10-08 11:24

版本控制最关键的一件事是保证数据的安全性,不能因为磁盘损坏,程序故障造成版本库无可挽回的错误,为此必须制定较完备的备份策略。
在Subversion中,我们有三种备份方式:完全备份,增量备份和同步版本库。

1. 完全备份:

最常见和简单的备份就是直接使用拷贝命令,将版本库目录拷贝到备份目录上,就可以了。但是这样不是很安全的方式,因为如果在拷贝时版本库发生变化,将会造成备份的结果不够准确,失去备份的作用,为此Subversion提供了“svnadmin hotcopy”命令,可以防止这种问题。
比如有如下版本库:

D:\svnroot
├─project1
│     ├─conf
│     ├─dav
│     ├─db
│     │     ├─revprops
│     │     ├─revs
│     │     └─transactions
│     ├─hooks
│     └─locks
└─project2
       ├─conf
       ├─dav
       ├─db
       │     ├─revprops
       │     ├─revs
       │     └─transactions
       ├─hooks
└─locks

如果要把project1备份到D:\svnrootbackup目录下,只需要运行:svnadmin hotcopy d:\svnroot\project1 d:\ svnrootbackup \project1

PS:如果我们目录下有很多版本库,需要为每个版本库写这样一条语句备份,必须想办法优化这个过程。为此,建立以下的2个bat文件,
simplebackup.bat
@echo 正在备份版本库%1......
@%SVN_HOME%\bin\svnadmin hotcopy %1 %BACKUP_DIRECTORY%\%2
@echo 版本库%1成功备份到了%2!

backup.bat
echo off
rem Subversion的安装目录
set SVN_HOME="D:\Subversion"
rem 所有版本库的父目录
set SVN_ROOT=D:\svnroot
rem 备份的目录
set BACKUP_SVN_ROOT=D:\svnrootbak
set BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%date:~0,10%
if exist %BACKUP_DIRECTORY% goto checkBack
echo 建立备份目录%BACKUP_DIRECTORY%>>%SVN_ROOT%/backup.log
mkdir %BACKUP_DIRECTORY%
rem 验证目录是否为版本库,如果是则取出名称备份
for /r %SVN_ROOT% %%I in (.) do @if exist "%%I\conf\svnserve.conf" %SVN_ROOT%\simplebackup.bat "%%~fI" %%~nI
goto end
:checkBack
echo 备份目录%BACKUP_DIRECTORY%已经存在,请清空。
goto end
:end

使用的时候,只需要修改backup.bat开头的三个路径,将两个脚本拷贝到"SVN_ROOT"下就可以了。根据以上的配置,你只需要运行backup.bat,就可以把"SVN_ROOT"下的版本库都备份到"BACKUP_SVN_ROOT"里,并且存放在备份所在的目录里。

2. 增量备份:
尽管完全备份非常简单,但是也是有代价的,当版本库非常巨大时,经常进行完全备份是不现实的,也并不必要,但是一旦版本库在备份之间发生问题,该如何呢,这里我们就用到了增量备份。
增量备份通常要与完全备份结合使用,记录着每次Subversion提交的变化,然后在需要恢复时能够回到最新的可用状态。
我们使用的是,svnadmin dump命令进行增量的备份,使用方法是:
svnadmin dump d:\sourcecode\project1 --revision 15 --incremental > d:\sourcecode\dumpfile

上面的命令实现了对修订版本15进行增量的备份,其中的输出文件dumpfile只保存了修订版本15更改的内容

恢复增量备份时,使用方法是:
svnadmin load d:\sourcecode\project1 < d:\sourcecode\dumpfile
上面的命令实现了对增量备份文件恢复到版本库project1中

使用钩子脚本Hooks实现自动增量备份:
1) 建立deltabackup.bat文件,内容为:
@echo 正在备份版本库%2......
%SVN_HOME%\bin\svnadmin dump %SVN_ROOT%\%1 --incremental --revision %2 >> %DELTA_BACKUP_SVN_ROOT%\%1.dump
@echo 版本库%2成功备份到了%3!

2) 建立post-commit.bat文件,内容为:
echo off
set SVN_HOME="C:\Program Files\Subversion"
set SVN_ROOT=D:\svnroot
set UNIX_SVN_ROOT=D:/svnroot
set DELTA_BACKUP_SVN_ROOT=D:\svnrootbak\delta
set LOG_FILE=%1\backup.log
echo backup revision %2 >> %LOG_FILE%
for /r %SVN_ROOT% %%I in (.) do if D:/svnroot/%%~nI == %1 %SVN_ROOT%\%%~nI\hooks\deltaBackup.bat %%~nI %2
goto end
:end

3) 把以上两个脚本可以直接拷贝到版本库的hooks目录下,就可以实现版本库的自动备份。

3. 同步版本库:
同步机制,可以实现一个版本库同另一个版本库的同步(但好像只是单向的),我们可以用来实现版本库的备份或镜像。
例如:同步版本库d:\sourcecode\project1
1) 新建一个空的版本库project2
运行命令:
svnadmin create d:\sourcecode\project2

2) 为新的版本库创建pre-revprop-change钩子脚本(hook script)
在d:\sourcecode\project2\hooks目录下新建一个空的pre-revprop-change.bat文件

3) 初始化版本库
运行命令:
svnsync init
file:///d:/sourcecode/project2 file:///d:/sourcecode/project1

4) 同步版本库
运行命令:
svnsync sync
file:///d:/sourcecode/project2
  
5) 至此,版本库同步已经完成。
在使用新的版本库之前,还需要根据需要对版本库的访问权限等进行配置。

使用钩子脚本Hooks实现自动同步:
1) 建立post-commit.bat文件,内容为:
echo off
set SVN_HOME="D:\Subversion"
%SVN_HOME%\bin\svnsync sync     --non-interactive svn://localhost/project2

2) 把post-commit.bat文件放到版本库project1下的hooks目录下,这样project1每次提交,都会引起project2的同步

svn脚本备份

Windows下的SVN备份,我在这跟大家分享一下完全备份和增量备份。
1、完全备份脚本:

文件名backup.bat:

echo off
rem Subversion的安装目录
set SVN_HOME="C:\Program Files\VisualSVN Server"
rem 所有版本库的父目录
set SVN_ROOT=d:\svn //库目录
rem 备份的目录
set BACKUP_SVN_ROOT=目的地(如:\\192.168.0.1\svnbak)
set BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%date:~0,10%
if exist %BACKUP_DIRECTORY% goto checkBack
echo 建立备份目录%BACKUP_DIRECTORY%>>%SVN_ROOT%/backup.log
md %BACKUP_DIRECTORY%
rem 验证目录是否为版本库,如果是则取出名称备份
for /r %SVN_ROOT% %%I in (.) do @if exist "%%I\conf\svnserve.conf" %SVN_ROOT%\simpleBackup.bat "%%~fI" %%~nI
goto end
:checkBack
echo 备份目录%BACKUP_DIRECTORY%已经存在,请清空。
goto end
:end

另一个文件:simpleBackup.bat

@echo 正在备份版本库%1......
@%SVN_HOME%\bin\svnadmin hotcopy %1 %BACKUP_DIRECTORY%\%2
@echo 版本库%1成功备份到了%2!

以上是完全备份的脚本,只要把simpleBackup.bat 拷到库目录底下即可使用。

2、增量备份脚本:
文件名命名为:post-commit.bat,放到hooks下即可,
echo off
set SVN_HOME="C:\Program Files\VisualSVN Server"
set SVN_ROOT=d:\svn
set DELTA_BACKUP_SVN_ROOT=d:\delta  //备份存放目录,一定要存在
set LOG_FILE=%1\backup.log
echo backup revision %2 >> %LOG_FILE%
for /r %SVN_ROOT% %%I in (.) do %SVN_ROOT%\库名\hooks\deltaBackup.bat  库名 %2
goto end
:end

deltaBackup.bat
@echo 正在备份版本库%1......
%SVN_HOME%\bin\svnadmin dump %SVN_ROOT%\%1 --incremental --revision %2 >> %DELTA_BACKUP_SVN_ROOT%\%1.dmp
@echo 版本库%1成功备份到了%2!

将以上两个文件:post-commit.bat和deltaBackup.bat放到hooks下就可以直接使用。
:红色字要根据实际情况来更改。