2009年3月23日星期一

svn恢复误删除的数据(转)

1、如果只是在本地删除,没有提交的话,只需要运行: 
    svn revert 文件名 
  命令即可。 
  如果是希望恢复整个目录的文件,可以用 --recursive选项: 
      svn revert --recursive 

2、如果是已经提交到服务器,那么运行: 
   svn merge命令 
   
  如,不小心将整个目录都删除了,你应首先将该目录的其他所有人的权限改为“只读”,以防止期间有其他人提交,然后通过查看历史记录查出没删除之前的版本号,接着运行如下命令进行恢复: 
  假设没删除之前的版本号为1151,删除后版本号变为1152,现在整个库的最新版本已经发展到1155了,运行: 
  svn merge http://www.scmbbs.com/repos/project1/trunk/@head http://www.scmbbs.com/repos/project1/trunk/@1151 
   注意:是“to最新版本,from老版本”的格式进行merge,因此head在前面,1151在后面。 
   
   合并完之后,再运行: 
    svn ci -m"revert the delete action" 
  进行提交到服务器。 

在到库中查看一下,发现此时被删掉的东西又回来了。

如果数据较多,可以用更快的方法:使用svn cp命令。 
如上面例子中,如果整个trunk已被删除,通过svn log命令查明删除前版本号1151,删除后版本号1152,现在版本号1155,则运行命令: 
svn cp -r 1151 http://www.scmbbs.com/repos/project1/trunk/ http://www.scmbbs.com/repos/project1/  -m"recover from wrong deleted" 
可以快速将trunk的1151版本恢复。注意:此语法与上面svn merge不同,是“from 历史,to 最新位置”形式。 

  一般情况下,用svn cp命令速度更快,直接操作svn库url,不需要svn commit。 

  但有时候如果trunk被误删除后,又被添加了新的内容如:trunk/newproject 目录,则不能用svn cp命令恢复了。如果trunk/数据较少时,可以用svn merge(见1楼)。如果trunk/数据非常大量,则可以先svn checkout出trunk/newproject到本地备份,再svn delete删除掉trunk/,然后用svn cp恢复1151版本的trunk,再重新添加备份到本地newproject目录,这种方法往往比svn merge更快。 
  因为svn merge需要checkout、再commit,大数据量时,速度会很慢。

2009年3月20日星期五

cmd 看utf-8(转)

转:http://hi.baidu.com/li_zhongnan/blog/item/318effa9314ddbfa1f17a25a.html

如何在DOS窗口中显示UTF-8字符

作者:终南   <li.zhongnan@hotmail.com>

在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容。在默认情况下,命令行窗口中使用的代码页是中文或者美国的,即编码是中文字符集或者西文字符集。

如果想正确显示UTF-8字符,可以按照以下步骤操作:

1、打开CMD.exe命令行窗口

2、通过 chcp命令改变代码页,UTF-8的代码页为65001

chcp 65001

执行该操作后,代码页就被变成UTF-8了。但是,在窗口中仍旧不能正确显示UTF-8字符。

3、修改窗口属性,改变字体

在命令行标题栏上点击右键,选择"属性"->"字体",将字体修改为True Type字体"Lucida Console",然后点击确定将属性应用到当前窗口。

这时使用type命令就可以显示UTF-8文本文件的内容了:

type filename.txt

4、通过以上操作并不能完全解决问题,因为显示出来的内容有可能不完全。可以先最小化,然后最大化命令行窗口,文件的内容就完整的显示出来了。

2009年3月19日星期四

putty12个强大插件(转)

转自:http://www.thegeekstuff.com/2008/08/turbocharge-putty-with-12-powerful-add-ons-software-for-geeks-3/



his article is part of on-going Software For Geeks series. PuTTY is hands-down the best, free, and lightweight SSH client for Windows. I have provided list of 12 powerful PuTTY add-ons with screenshots, that will solve few shortcomings of the original PuTTY. Play around with these add-ons and choose the one that suites your need.

2009年3月18日星期三

实用的dmesg

功能说明:显示开机信息。

语  法:dmesg [-cn][-s <缓冲区大小>]

补充说明:kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。

参  数:
 -c  显示信息后,清除ring buffer中的内容。
 -s<缓冲区大小>  预设置为8196,刚好等于ring buffer的大小。
 -n  设置记录信息的层级。

ln 软链接和硬链接的区别(转)

转:http://blog.csdn.net/xdfwsl/archive/2008/10/08/3031200.aspx
先举个例子

系统文件系统使用情况,其中 /home 文件系统当前已使用了 3.0G ,剩余105G
[root@s14 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/sys-root 4.0G 2.3G 1.5G 60% /
/dev/cciss/c0d0p1 244M 11M 221M 5% /boot
none 1.9G 0 1.9G 0% /dev/shm
/dev/mapper/sys-home 112G 3.0G 105G 3% /home
/dev/mapper/sys-var 2.0G 174M 1.7G 10% /var

我们拿一个大文件来做测验,1.6G 大小。
[root@s14 ~]# ls -lh /home/zjw/Wins2003.tar.gz
-rw-r--r-- 1 zjw zjw 1.6G Jun 12 18:51 /home/zjw/Wins2003.tar.gz

建立软连接:
[root@s14 ~]# ln -s /home/zjw/Wins2003.tar.gz /home/zjw/Wins2003.tar.gz.symboliclink

建立硬连接:
[root@s14 ~]# ln -b /home/zjw/Wins2003.tar.gz /home/zjw/Wins2003.tar.gz.hardlink

查看这几个文件的情况,发现:
1)硬链接文件显示跟原来文件一样大小1.6G,软链接文件才27个字节;
2)硬链接文件inode号跟原来文件一样,都是 753682,软链接文件inode号为 753685;
[zjw@s14 ~]$ ls -lih /home/zjw/Wins2003.tar.gz*
753682 -rw-r--r-- 2 zjw zjw 1.6G Jun 12 18:51 /home/zjw/Wins2003.tar.gz
753682 -rw-r--r-- 2 zjw zjw 1.6G Jun 12 18:51 /home/zjw/Wins2003.tar.gz.hardlink
753685 lrwxrwxrwx 1 root root 27 Jun 16 18:10 /home/zjw/Wins2003.tar.gz.symboliclink -> /home/zjw/Wins2003.tar.gz

查看 /home 文件系统,发现空间使用没有明显变化,还是使用 3.0G,剩余 105G
[root@s14 ~]# df -h /home
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/sys-home 112G 3.0G 105G 3% /home

上述实验说明:
1)在同一文件系统下,可以创建软链接或硬链接(同文件系统不同目录下也可以);
2)硬链接的文件显示大小跟原文件一样;软链接的文件很小,只有几十个字节;
3)硬链接的文件的inode跟原文件一样;软连接的文件有自己的inode,跟原文件不一样;
4)创建软链接或硬链接文件不会明显占用文件系统磁盘空间;

我们测试一下跨文件系统(/home --> /var ),是否可以建立软链接和硬链接:
软链接成功:
[root@s14 var]# ln -s /home/zjw/Wins2003.tar.gz /var/wins2003.symboliclink
硬链接失败:
[root@s14 var]# ln -b /home/zjw/Wins2003.tar.gz /var/wins2003.hardlink
ln: creating hard link `/var/wins2003.hardlink' to `/home/zjw/Wins2003.tar.gz': Invalid cross-device link

上述实验说明:
1)软链接可以跨文件系统建立; 硬链接则不可以;




硬链接(hard link)
UNIX文件系统提供了一种将不同文件链接至同一个文件的机制,我们称这种机制为链接。它可以使得单个程序对同一文件使用不同的名字。这样的好处是文件系 统只存在一个文件的副本,系统简单地通过在目录中建立一个新的登记项来实现这种连接。该登记项具有一个新的文件名和要连接文件的inode号,文件的目录登记项就是所谓的文件硬链接(硬链接,目录登记项: 文件名-->文件的inode;文件名可以有多个,但文件inode只是一个)。不论一个文件有多少硬链接,在磁盘上只有一个描述它的inode,只要该文件的链接数不为0,该文件就保持存在。硬链接不能跨越文件系统,也不能对目录建立硬链接!
硬 连接是直接建立在节点表上的(inode),建立硬连接指向一个文件的时候,会更新节点表上面的计数值。举个例子,一个文件被连接了两次(硬连接),这 个文件的计数值 是3,而无论通过3个文件名中的任何一个访问,效果都是完全一样的,但是如果删除其中任意一个,都只是把计数值减1,不会删除实际的内容的,(任何存在的 文件本身就算是一个硬连接)只有计数值变 成0也就是没有任何硬连接指向的时候才会真实的删除内容。

软链接(symbolic link)
我们把符号链接称为软链接,它是指向另一个文件的特殊文件,这种文件的数据部分仅包含它所要链接文件的路径名。软链接是为了克服硬链接的不足而引入的,软链接不直接使用inode号作为文件指针,而是使用文件路径名作为指针(软链接:文件名 + 数据部分-->目标文件的路径名)。软件有自己的inode,并在磁盘上有一小片空间存放路径名。因此,软链接能够跨文件系统,也可以和目录链接!其二,软链接可以对一个不存在的文件名进行链接,但直到这个名字对应的文件被创建后,才能打开其 链接。

ports 安装及更新

1.以 root 执行 /stand/sysinstall
选择 Configure 后按 Enter
选择 Distributions 后按 Enter
选择 ports 后按空格键
选择 Exit 后按 Enter
选择你要从 CDROM 或 FTP 安装等
跟着选单照做,最后离开 sysinstall

2.更新 port tree 的方法很简单,我们可以使用 CVSup 来保持 ports 在最新状态。CVSup 是一套用来维持软件原始码和开发团队同步的工具,在我们执行了 CVSup 之后,它会经由网络向所设定的软件服务器检查并更新原始码的版本。我们可以使用 CVSup 来更新 port tree,也可以用来更新 /usr/src 目录下的 FreeBSD 原始码

# cd /usr/ports/net/cvsup-without-gui
# make install clean
在系统中有一份以 CVSup 更新 port tree 的设定文件范例,您可以直接加以修改或着先复制一份后再修改。我们将该设定文件范例复制到 /root 之后再加以修改:

# cp /usr/share/examples/cvsup/ports-supfile /root/

接着请以文书编辑软件打开 /root/ports-supfile 后,找到 host 的部份来设定所要使用的 CVSup 服务器。

修改default host
例如:
*default host=cvsup2.freebsd.org

ports-all 表示我们要更新 /usr/ports 目录下的所有档案。您也可以只更新其中的部份目录,只要将 ports-all 以井字号 "#" 标示起来,并将档案中 ports-base 那一行的 # 移除,接着您就可以依您所要更新的目录来要移除其它的 # 字号。例如,我们只要更新 /usr/ports/www 这个目录,将 ports-all 以 # 标示起来之后,我们还要移除 ports-base 及 ports-www 开头的 #。


设定完毕之后,我们就可以开始进行 ports 的更新了。

# cvsup -g -L 2 /root/ports-supfile

2009年3月17日星期二

freebsd 7.0-RELEASE samba ports 安装失败

fb70# make install
===> NOTICE: This version of port has changed location of Samba password
===> NOTICE: (smbpasswd) directory. Files in '/usr/local/private'
===> NOTICE: have moved to '/usr/local/etc/samba'.
===> Vulnerability check disabled, database not found
===> Found saved configuration for samba-3.0.28,1
===> -------------------------------------------
===> Run 'make config' to (re)configure the port
===> -------------------------------------------
===> Extracting for samba-3.0.28,1
=> MD5 Checksum OK for samba-3.0.28.tar.gz.
=> SHA256 Checksum OK for samba-3.0.28.tar.gz.
===> Patching for samba-3.0.28,1
===> Applying FreeBSD patches for samba-3.0.28,1
===> samba-3.0.28,1 depends on file: /usr/local/bin/autoconf-2.61 - found
===> samba-3.0.28,1 depends on shared library: execinfo.1 - found
===> samba-3.0.28,1 depends on shared library: cups.2 - not found
===> Verifying install for cups.2 in /usr/ports/print/cups-base
===> Vulnerability check disabled, database not found
===> Found saved configuration for cups-base-1.3.5_2
===> Extracting for cups-base-1.3.5_2
=> MD5 Checksum OK for cups-1.3.5-source.tar.bz2.
=> SHA256 Checksum OK for cups-1.3.5-source.tar.bz2.
===> Patching for cups-base-1.3.5_2
===> Applying FreeBSD patches for cups-base-1.3.5_2
Ignoring previously applied (or reversed) patch.
10 out of 10 hunks ignored--saving rejects to cups/ipp.c.rej
=> Patch patch-CVE-2007-4351 failed to apply cleanly.
*** Error code 1

Stop in /usr/ports/print/cups-base.
*** Error code 1

Stop in /usr/ports/net/samba3.
*** Error code 1

Stop in /usr/ports/net/samba3.
fb70#

-----------------------------------------------------------------
他大爷的,把ports 更新一下再安 ok了.
http://leafghost.blogspot.com/2009/03/ports.html