Welcome to jaever.com/diary

九项重要的职业规划提示

1. 学习的步伐不停止

古人说,活到老,学到老。终身学习应该是您的座右铭。

世界在不断变化,每个人都在寻找各自的事业途径。

您只有保证了足够的技能储备,才能确保能够得到一份足够满意的工作。

为了保证您的职业发展,您应当定期地更新您的技能和知识。

2. 学会问、学会听,学会学习

一个好的倾听者可以习得更多。

多听取来自同事、老板以及上级的声音。您可以从他们的经历中学到更多。

问一些您感兴趣的话题,然后听听他们怎么说。让他们告诉您事业如何运作,以及如何可以做得更好。

大多数都是乐意帮助您的。

3. 为目前的工作全力以赴

您目前的工作可能是开始您职业生涯的最好起点。

从本职工作做起,从现在做起,做好当前的工作,没有保留地尽到自己的职责,证明自己是一名有价值的员工。

您所做的工作终究会得到回报。

4. 构建人际网络

您的下一个职业阶段很可能得益于您的人际网络。

您知道吗,超过50%的工作都是通过关系网络获得的。

如果您拥有一张良好的人际网络,那么它会助您发现未来的职业,开拓新的方向,获得新的机会。

请在新的关系上多花些时间吧,同时请不要忽略对已有关系的保持。

从您的人际网络获得有价值信息的最佳途径之一是,定期地问候您的交际人,他们正在做什么,以及有关其职业的新情况。

5. 识别你的工作

识别真正重要的工作,而不是去假设。

一定要确定你目前所做的工作不是因假设得来的。那样会浪费您很多时间和才华。

当您着手一份新的工作时,一定要和主管聊聊首要的那些工作。如果您无法确定哪方面是重要的,就去询问他吧。多谈几次也没关系。您会经常对事实上的重要任务与您所作的假设之间差距感到惊讶。

6. 慎重决定下一个工作

在您开始未来的职业生涯之前,一定要认真考虑您理想中的工作。

您理想的职业应该是什么样的呢? 最关键的是,您一定要乐在其中。

您是否乐于为其它的同事承担责任?您喜欢和人打交道还是摆弄技术?你希望自己创业吗?您希望成为一位艺术家、一位设计师、一名熟练的工程师,还是一名管理人员?

在您为构建未来的职业生涯之前,请明确您的目标。

7. 为未来做准备

为了明天的梦想,今天就要进行准备。

一刻也不要耽搁。现在就更新您的履历,并且定期持续对其更新。

明天您也许就会看到梦想实现的曙光。为此,您需要准备一份专业的履历,准备好为您的雇主展现潜力无穷的你吧!

如果您不清楚如何写一份履历,或者任何描述自己,请现在就开始学习吧。

8. 量力而行

选择适合个人能力的任务。

您可以通过不同的方式来构建未来的职业生涯。在 W3School 学习是件容易的事情。而获得硕士学位则会困难一些。

您可以通过学习各类型的书籍和教程(比如您在 W3School 所找到的)来为职业添砖加瓦。参加一些带有认证测试的短期培训应该可以为您的履历增加不少分量。同时不要忘了:培养新技术所需要的最具价值的资源是您目前从事的工作。

不要为自己设置不可能完成的任务!

9. 实现您的梦想

把梦想落实为行动!

不要让繁忙的工作扼杀您的梦想。假如您有着更高远的目标,请现在就付诸行动吧!

如果您计划接受更高的教育,获得更好的工作,或者开一间属于自己的公司等等,请不要以日常的工作作为等待的借口。您的日常工作会变得越来越忙,您会陷入激烈的竞争中,并耗尽自己的能量。

如果您此刻就存有能量,那么现在就使用它去实现您的梦想吧!

CONTINUE
INFO: 2008-07-06 09:13:12 | purpen | digg | link

php中文分词的全文检索之配置文件实例

这里,使用了“主索引”+“增量索引”合并的模式。
source picmain
{
        ... ....

        sql_query_pre                   = SET NAMES utf8
    sql_query_pre = REPLACE INTO sph_counter SELECT 1, MAX(aid) FROM pictures
        sql_query                               = \
                SELECT aid, aname, atags, UNIX_TIMESTAMP(ctime) AS date_added, atype, nid,ntitle \
                FROM pictures WHERE aid <= ( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 )
        sql_attr_uint                   = nid
        sql_attr_timestamp              = date_added
        sql_ranged_throttle     = 0
        sql_query_info          = SELECT * FROM pictures WHERE aid=$id
}

source picdelta : picmain
{
    sql_query_pre =
    sql_query = SELECT aid, aname, atags, UNIX_TIMESTAMP(ctime) AS date_added, atype, nid,ntitle \
                FROM pictures WHERE aid > ( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 )
}

#search content
source contentmain
{
      ... ....
    sql_query_pre                   = SET NAMES utf8
    sql_query_pre = REPLACE INTO sph_counter SELECT 2, MAX(id) FROM articles
        sql_query = SELECT id,title,tags,body,created_on,type,created_by,summary,site_id FROM articles \
                          WHERE state=2 AND id <= ( SELECT max_doc_id FROM sph_counter WHERE counter_id=2 )
        sql_attr_uint                   = site_id
        sql_attr_timestamp              = created_on
        sql_ranged_throttle     = 0
        sql_query_info          = SELECT * FROM articles WHERE id=$id
}

source contentdelta : contentmain
{
    sql_query_pre =
    sql_query = SELECT id,title,tags,body,created_on,type,created_by,summary,site_id FROM articles \
                          WHERE state=2 AND id > ( SELECT max_doc_id FROM sph_counter WHERE counter_id=2 )
}
# local index picture
index picmain
{
        source                  = picmain
        path                    = /path/to/sphinx/var/data/picmain
        docinfo                 = extern
        mlock                   = 0
        morphology              = none
        min_word_len            = 2
        charset_type            = zh_cn.utf-8
        charset_dictpath = /path/to/dict

        html_strip                              = 1
        html_remove_elements    = style, script
        preopen                         = 1
}

index picdelta : picmain
{
    source = picdelta
    path = /path/to/sphinx/var/data/picdelta
}
#index content
index contentmain
{
        source                  = contentmain
        path                    = /path/to/sphinx/var/data/contentmain
        docinfo                 = extern
        mlock                   = 0
        morphology              = none
        min_word_len            = 2
        charset_type            = zh_cn.utf-8
        charset_dictpath =/path/to/dict

        html_strip                              = 1
        html_remove_elements    = style, script
        preopen                         = 1
}
index contentdelta : contentmain
{
    source = contentdelta
    path = /path/to/sphinx/var/data/contentdelta
}
indexer
{
        # memory limit, in bytes, kiloytes (16384K) or megabytes (256M)
        # optional, default is 32M, max is 2047M, recommended is 256M to 1024M
        mem_limit                       = 64M
}
searchd
{
        port                            = 3312
        log                                     = /path/to/sphinx/var/log/searchd.log
        query_log                       = /path/to/sphinx/var/log/query.log
        read_timeout            = 5
        max_children            = 30
        pid_file                        = /path/to/sphinx/var/log/searchd.pid
        max_matches                     = 1000
        seamless_rotate         = 1
        preopen_indexes         = 0
        unlink_old                      = 1
}

CONTINUE
INFO: 2008-07-03 15:59:06 | purpen | digg | link

php中文分词的全文检索之配置过程

在上一篇http://www.jaever.com/diary/7/的安装过程成功了,就开始 配置吧:)

因为要进行中文分词,所以就要构造词典:

(为了使用方面,可以添加到全局变量中:path=$HOME/mmseg/bin:$HOME/mmseg/sphinx/bin:$PATH:$HOME/bin
 export path
)

 mmseg -u /path/to/unigram.txt

该命令执行后,将会产生一个名为unigram.txt.uni的文件,将该文件改名为uni.lib,完成词典的构造。需要注意的是,unigram.txt 必须为UTF-8编码。然后, uni.lib移到可以便于访问的目录(我的:/home/someone/dict/uni.lib)

接着,开始copy一份 sphinx/etc/sphinx.conf.dist为sphinx/etc/sphinx.conf,按照配置文件的注释,修改sphinx.conf对应的属性,但为了中文的支持,与注意以下的:

....

charset_dictpath = /Users/tian/Dict/lib
charset_type            = zh_cn.utf-8

....

应该注释掉:

#ngram_len = 1

#ngram_chars =  

# charset_table         = 0..9, A..Z->a..z, _, a..z, U+A8->U+B8, U+B8, U+C0..U+DF->U+E0..U+FF, U+E0..U+FF....

保存sphinx.conf,执行indexer --config /path/to/sphinx/etc/sphinx.conf somesource(or all 创建全部索引),然后,执行命令search test测试看看是不是ok?

当然,sphinx也提供了php,python,java,rails等API,来使用多语言的应用。目前,我还只有使用php测试过(http://app.chinavisual.com/app/site/seek/search_design可以试用了),不久,准备在jaever上测试python的试用。呵呵,加油!

CONTINUE
INFO: 2008-07-03 15:08:01 | purpen | digg | link

有几天没有继续开发了,开始为日志增加评论功能

有几天没有继续开发了,开始为日志增加评论功能,继续赶活了。。。

CONTINUE
INFO: 2008-07-03 14:55:29 | purpen | digg | link

Google推出广告联盟,整合DoubleClick

Google今天宣布,将原DoubleClick旗下的Performics广告联盟整合入Google产品线,更名为Google Affiliate Network。 Google于今年3月以31亿美元的价格收购了DoubleClick。新上线的Google广告联盟并未整合进Adsense,而是继续运行在 ConnectCommerce.com这个域名上。更有趣的是,Google仅仅为这个产品做了一个新的登录页面,点击登录后,还是会把访问者带到旧的 Performics网站上。 Google显然是想借此同时扩展广告提供商和广告展示商两个方面,Google广告联盟很可能日后会被整合进Adsense。在整合收购对象方面, Google的动作向来都不怎么迅速,想想GrandCentral和Jaiku就知道了。

CONTINUE
INFO: 2008-07-02 04:34:04 | purpen | digg | link

php实现sphinx+libmmseg中文分词的全文检索之安装过程

读了robbin写的Rails的sphinx全文搜索实现,于是想尝试使用php来玩玩看。

讲到sphinx,肯定的介绍一下sphinx的优势了:

Sphinx的主要功能包括:

  • 高速建立索引(可达10 MB/秒)
    • (本人初次创建索引的速度:collected 37594 docs, 104.0 MB
      sorted 19.9 Mhits, 100.0% done
      total 37594 docs, 103965976 bytes
      total 45.268 sec, 2296662.25 bytes/sec, 830.47 docs/sec)
  • 高性能搜索(在2-4 GB的文本上搜索,平均0.1秒内获得结果)(实现一些中小型的网站搜索,已经足够用的了)
  • 高扩展性(在单一CPU上,实测最高可对100GB的文本建立索引,单一索引可包括100M文件 )
  • 支持分布式检索
  •  
  • 支持基于短语和基于统计的复合结果排序机制
  • 支持任意数量的文件字段(数值属性或全文检索属性)
  •  
  • 支持不同的搜索模式( “完全匹配” , “短语匹配”和“任一匹配” )
  • 支持作为Mysql的存储引擎

 

从功能上看,sphinx很是适合我来使用,呵呵。

开始从实践中体验sphinx的优势吧,ok,安装

(我在mac os x 10.4与redhat 5上都有安装过,不过,每次都不是很顺利,而且遇到的问题都不尽相同,还好最后都找到解决的办法。)

 

这里介绍在redhat 5下编译的步骤:

1。下载需要的软件包 :

    从这里http://www.sphinxsearch.com/downloads.html下载Sphinx 0.9.8 rc2版:
http://www.sphinxsearch.com/downloads/sphinx-0.9.8-rc2.tar.gz

    但是,为了使用libmmseg支持中文分词,还需要下载两个补丁: 
    http://www.coreseek.com/uploads/sources/sphinx-0.98rc2.zhcn-support.patch
    http://www.coreseek.com/uploads/sources/fix-crash-in-excerpts.patch

   注意:补丁是针对特定的Sphinx版本的,若版本不匹配会更麻烦。所以最简单的方法是直接使用李沫南已经打好补丁的Coreseek包,和自己打补丁的效果是一样的:
http://www.coreseek.com/uploads/sources/coreseek_fulltext_2.5.tar.gz

   下载libmmseg:
http://www.coreseek.com/uploads/sources/mmseg-0.7.3.tar.gz

2。因为sphinx的编译需要--with-mmseg的支持,所以首先编译libmmseg:

    tar zxvf mmseg-0.7.3.tar.gz
     cd mmseg-0.7.3
     ./configure --prefix=/home/someone/mmseg
     make
     make install

     然后:

     tar zxvf sphinx-0.9.8-rc2.tar.gz
     cd sphinx-0.9.8-rc2

     为sphinx打补丁:
     patch -p1 < ../sphinx-0.98rc2.zhcn-support.patch
     patch -p1 < ../fix-crash-in-excerpts.patch

      ./configure --prefix=/home/someone/sphinx --with-mysql=/usr/local/mysql --with-mysql-includes=/usr/local/mysql/include --with-mysql-libs=/usr/local/mysql/lib/ --with-mmseg-includes=/home/someone/mmseg/include/mmseg/ --with-mmseg-libs=/home/someone/mmseg/lib/

       make & make install

 

      (这里是我的参数配置,--with-mysql --with-libmmseg是必须的,编译中遇到很多问题,但是,大部分都是由于mysql的版本与libmysqlclient.so文件导致的,所以要注意下。)

     ok,所需的软件包安装完毕了,开始修改配置文件sphinx.conf与创建索引词典吧。

CONTINUE
INFO: 2008-07-01 14:26:08 | purpen | digg | link

Linux压缩打包命令使用方法之compress 命令

[root@linux ~]# compress [-dcr] 文件或目录
参数:
-d :用来解压缩的参数
-r :可以连同目录下的文件也同时给予压缩呢!
-c :将压缩资料输出成为 standard output (输出到萤幕)
范例:
范例一:将 /etc/man.config 複制到 /tmp ,并加以压缩
[root@linux ~]# cd /tmp
[root@linux tmp]# cp /etc/man.config .
[root@linux tmp]# compress man.config
[root@linux tmp]# ls -l
-rw-r--r-- 1 root root 2605 Jul 27 11:43 man.config.Z

范例二:将刚刚的压缩档解开
[root@linux tmp]# compress -d man.config.Z

范例三:将 man.config 压缩成另外一个文件来备份
[root@linux tmp]# compress -c man.config > man.config.back.Z
[root@linux tmp]# ll man.config*
-rw-r--r-- 1 root root 4506 Jul 27 11:43 man.config
-rw-r--r-- 1 root root 2605 Jul 27 11:46 man.config.back.Z
# 这个 -c 的参数比较有趣!他会将压缩过程的资料输出到萤幕上,而不是写入成为
# file.Z 文件。所以,我们可以透过资料流重导向的方法将资料输出成为另一个档名。
# 关於资料流重导向,我们会在 bash shell 当中详细谈论的啦!
dd 命令
[root@linux ~]# dd if="input_file" of="outptu_file" bs="block_size" \
count="number"
参数:
if :就是 input file 啰~也可以是装置喔!
of :就是 output file 喔~也可以是装置;
bs :规划的一个 block 的大小,如果没有设定时,预设是 512 bytes
count:多少个 bs 的意思。
范例:

范例一:将 /etc/passwd 备份到 /tmp/passwd.back 当中
[root@linux ~]# dd if=/etc/passwd of=/tmp/passwd.back
3+1 records in
3+1 records out
[root@linux ~]# ll /etc/passwd /tmp/passwd.back
-rw-r--r-- 1 root root 1746 Aug 25 14:16 /etc/passwd
-rw-r--r-- 1 root root 1746 Aug 29 16:57 /tmp/passwd.back
# 仔细的看一下,我的 /etc/passwd 文件大小为 1746 bytes,因为我没有设定 bs ,
# 所以预设是 512 bytes 为一个单位,因此,上面那个 3+1 表示有 3 个完整的
# 512 bytes,以及未满 512 bytes 的另一个 block 的意思啦!
# 事实上,感觉好像是 cp 这个指令啦~

范例二:备份 /dev/hda 的 MBR
[root@linux ~]# dd if=/dev/hda of=/tmp/mbr.back bs=512 count=1
1+0 records in
1+0 records out
# 这就得好好瞭解一下啰~我们知道整颗硬盘的 MBR 为 512 bytes,
# 就是放在硬盘的第一个 sector 啦,因此,我可以利用这个方式来将
# MBR 内的所有资料都纪录下来,真的很厉害吧! ^_^

范例三:将整个 /dev/hda1 partition 备份下来。
[root@linux ~]# dd if=/dev/hda1 of=/some/path/filenaem
# 这个指令很厉害啊!将整个 partition 的内容全部备份下来~
# 后面接的 of 必须要不是在 /dev/hda1 的目录内啊~否则,怎么读也读不完~
# 这个动作是很有效用的,如果改天你必须要完整的将整个 partition 的内容填回去,
# 则可以利用 dd if=/some/file of=/dev/hda1 来将资料写入到硬盘当中。
# 如果想要整个硬盘备份的话,就类似 Norton 的 ghost 软体一般,
# 由 disk 到 disk ,嘿嘿~利用 dd 就可以啦~厉害厉害!
cpio 命令
[root@linux ~]# cpio -covB > [file|device] <==备份
[root@linux ~]# cpio -icduv < [file|device] <==还原
参数:
-o :将资料 copy 输出到文件或装置上
-i :将资料自文件或装置 copy 出来系统当中
-t :查看 cpio 建立的文件或装置的内容
-c :一种较新的 portable format 方式储存
-v :让储存的过程中文件名称可以在萤幕上显示
-B :让预设的 Blocks 可以增加至 5120 bytes ,预设是 512 bytes !
这样的好处是可以让大文件的储存速度加快(请参考 i-nodes 的观念)
-d :自动建立目录!由於 cpio 的内容可能不是在同一个目录内,
如此的话在反备份的过程会有问题! 这个时候加上 -d 的话,
就可以自动的将需要的目录建立起来了!
-u :自动的将较新的文件覆盖较旧的文件!
范例:
范例一:将所有系统上的资料通通写入磁带机内!
[root@linux ~]# find / -print | cpio -covB > /dev/st0
# 一般来说,使用 SCSI 介面的磁带机,代号是 /dev/st0 喔!

范例二:检查磁带机上面有什么文件?
[root@linux ~]# cpio -icdvt < /dev/st0
[root@linux ~]# cpio -icdvt < /dev/st0 > /tmp/content
# 第一个动作当中,会将磁带机内的档名列出到萤幕上面,而我们可以透过第二个动作,
# 将所有的档名通通纪录到 /tmp/content 文件去!

范例三:将磁带上的资料还原回来~
[root@linux ~]# cpio -icduv < /dev/st0
# 一般来说,使用 SCSI 介面的磁带机,代号是 /dev/st0 喔!

范例四:将 /etc 底下的所有『文件』都备份到 /root/etc.cpio 中!
[root@linux ~]# find /etc -type f | cpio -o > /root/etc.cpio
# 这样就能够备份啰~您也可以将资料以 cpio -i < /root/etc.cpio
# 来将资料捉出来!!!!

CONTINUE
INFO: 2008-06-29 13:27:00 | purpen | digg | link

Linux压缩打包命令使用方法之bzip2, bzcat 命令

[root@linux ~]# bzip2 [-cdz] 档名
[root@linux ~]# bzcat 档名.bz2
参数:
-c :将压缩的过程产生的资料输出到萤幕上!
-d :解压缩的参数
-z :压缩的参数
-# :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快!
范例:
范例一:将刚刚的 /tmp/man.config 以 bzip2 压缩
[root@linux tmp]# bzip2 -z man.config
# 此时 man.config 会变成 man.config.bz2 !

范例二:将范例一的文件内容读出来!
[root@linux tmp]# bzcat man.config.bz2
# 此时萤幕上会显示 man.config.bz2 解压缩之后的文件内容!!

范例三:将范例一的文件解压缩
[root@linux tmp]# bzip2 -d man.config.bz2

范例四:将范例三解开的 man.config 用最佳的压缩比压缩,并保留原本的文件
[root@linux tmp]# bzip2 -9 -c man.config > man.config.bz2

CONTINUE
INFO: 2008-06-29 13:26:08 | purpen | digg | link

Linux压缩打包命令使用方法之gzip, zcat 命令

[root@linux ~]# gzip [-cdt#] 档名
[root@linux ~]# zcat 档名.gz
参数:
-c :将压缩的资料输出到萤幕上,可透过资料流重导向来处理;
-d :解压缩的参数;
-t :可以用来检验一个压缩档的一致性~看看文件有无错误;
-# :压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!预设是 -6 ~
范例:
范例一:将 /etc/man.config 複制到 /tmp ,并且以 gzip 压缩
[root@linux ~]# cd /tmp
[root@linux tmp]# cp /etc/man.config .
[root@linux tmp]# gzip man.config
# 此时 man.config 会变成 man.config.gz !

范例二:将范例一的文件内容读出来!
[root@linux tmp]# zcat man.config.gz
# 此时萤幕上会显示 man.config.gz 解压缩之后的文件内容!!

范例三:将范例一的文件解压缩
[root@linux tmp]# gzip -d man.config.gz

范例四:将范例三解开的 man.config 用最佳的压缩比压缩,并保留原本的文件
[root@linux tmp]# gzip -9 -c man.config > man.config.gz

CONTINUE
INFO: 2008-06-29 13:24:53 | purpen | digg | link

Linux压缩打包命令使用方法之tar命令

tar命令

[root@linux ~]# tar [-cxtzjvfpPN] 文件与目录 ....
参数:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!
因为不可能同时压缩与解压缩。
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成
『 tar -zcvPf tfile sfile』才对喔!
-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :可以使用绝对路径来压缩!
-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
--exclude FILE:在压缩的过程中,不要将 FILE 打包!
范例:
范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar
[root@linux ~]# tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩!
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩
# 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。
# 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~
# 如果加 j 参数,则以 .tar.bz2 来作为附档名啊~
# 上述指令在执行的时候,会显示一个警告讯息:
# 『tar: Removing leading `/' from member names』那是关於绝对路径的特殊设定。

范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件?
[root@linux ~]# tar -ztvf /tmp/etc.tar.gz
# 由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,
# 就得要加上 z 这个参数了!这很重要的!

范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下
[root@linux ~]# cd /usr/local/src
[root@linux src]# tar -zxvf /tmp/etc.tar.gz
# 在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说,
# 我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz ,
# 则解开的目录会在 /usr/local/src/etc 呢!另外,如果您进入 /usr/local/src/etc
# 则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔!

范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd
# 我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件,
# 就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了!

范例五:将 /etc/ 内的所有文件备份下来,并且保存其权限!
[root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc
# 这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时!

范例六:在 /home 当中,比 2005/06/01 新的文件才备份
[root@linux ~]# tar -N '2005/06/01' -zcvf home.tar.gz /home

范例七:我要备份 /home, /etc ,但不要 /home/dmtsai
[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件!
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -cvf - /etc | tar -xvf -

# 这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的!
# 要注意的地方在於输出档变成 - 而输入档也变成 - ,又有一个 | 存在~
# 这分别代表 standard output, standard input 与管线命令啦!
# 这部分我们会在 Bash shell 时,再次提到这个指令跟大家再解释啰

CONTINUE
INFO: 2008-06-25 04:33:40 | purpen | digg | link

Copyright © 2008 Jaever. All rights reserved.

This Site looks and works best when viewed using browsers enabled with JavaScript 1.5 and CSS, such as Firefox 1+ or Safari 3+.