显示标签为“linux”的博文。显示所有博文
显示标签为“linux”的博文。显示所有博文

2010年9月8日星期三

linux 下vpn客户端配置

linux 下vpn客户端配置

配置步骤

1、安装软件包

(1)32位的包

#wget ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/lzo-2.02-3.el5.kb.i386.rpm #rpm -ivh lzo-2.02-3.el5.kb.i386.rpm #wget ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/openvpn-2.1-0.19.rc4.el5.kb.i386.rpm #rpm -ivh openvpn-2.1-0.19.rc4.el5.kb.i386.rpm 

(2)64位的包

#wget ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/x86_64/RPMS/lzo-2.02-3.el5.kb.x86_64.rpm #rpm -ivh lzo-2.02-3.el5.kb.x86_64.rpm #wget ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/x86_64/RPMS/openvpn-2.1-0.19.rc4.el5.kb.x86_64.rpm #rpm -ivh openvpn-2.1-0.19.rc4.el5.kb.x86_64.rpm 

2、配置文件

四个证书放在/etc/openvpn/ca/目录下

#vim /etc/openvpn/dev.ovpn  client dev tun proto tcp remote 公司网关IP 1194 float persist-key persist-tun ca /etc/openvpn/ca/ca.crt cert /etc/openvpn/ca/xxxx.crt key /etc/openvpn/ca/xxxx.key tls-auth /etc/openvpn/ca/ta.key 1 ns-cert-type server keepalive 10 30 comp-lzo verb 3 

#启动服务 # /etc/init.d/openvpn start # openvpn --config /etc/openvpn/dev.ovpn 2>&1 >/dev/null & 

这样就可以使用vpn了

2010年8月30日星期一

rsync 的高级应用(转)

转:http://www.ibm.com/developerworks/cn/aix/library/au-spunix_rsync/

对话 UNIX: rsync 的高级应用

developerWorks
文档选项
将打印机的版面设置成横向打印模式

打印本页

将此页作为电子邮件发送

将此页作为电子邮件发送

英文原文

英文原文


级别: 中级

Martin Streicher, 软件开发人员, Pixel, Byte, and Comma

2009 年 11 月 09 日

保持多台机器同步很困难。幸运的是,有一个流行的工具可以简化这个任务:rsync

在过去 20 年间,计算机网络的使用量已经急剧增加了。Internet 的快速发展,国家和国际主干网络基础结构方面的大量投资,以及连网和计算硬件的价格下降,这些因素都促进了网络使用量的增加。目前,网络已经非常普及了,而且新的应用仍然在推动网络的规模和速度。Internet 最初出现在 几台小型工作站 上,但是现在连接着无数计算机。

常用缩写词
  • FTP:File Transfer Protocol
  • WebDAV: Web-based Distributed Authoring and Versioning

与此同时,UNIX® 也在发展,连网软件的功能日益强大。FTP 属于第一批用于在系统之间共享文件的工具,目前仍然在广泛使用。rcp(“remote copy” 的简写)改进了 FTP,它具有与传统 cp 实用程序相似的功能,但是它在机器之间复制文件。rdist 基于 rcp,它自动地把文件从一台机器分布到许多系统。

现在,这些工具都过时了:rcprdist 过时了是因为它们不安全。scp 替代了它们。FTP 仍然在广泛使用,但是应该尽可能使用 FTP 的安全版本 Secure FTP (SFTP)。还有其他工具,比如 WebDAV 和 BitTorrent™ 等。当然,机器越多,保持所有机器同步(或者至少保持一种已知状态)就越困难,scp 和 WebDAV 无法解决这个问题,除非您自己编写解决方案。

最好的文件分布工具是 rsyncrsync 可以在中断之后恢复传输;它只传输源文件和目标文件之间不一致的部分;rsync 可以执行完整备份或增量备份。更棒的是,在所有风格的 UNIX 上都可以使用rsync,包括 Mac OS X,所以很容易连接任何系统。

我们先来回顾一下 rsync 的一般用法,然后讨论更高级的应用。这里采用的演示系统是 Mac OS X version 10.5 Leopard(FreeBSD 的一种变体)和 Ubuntu Linux® version 8。如果您使用其他操作系统,这里的大多数示例很可能可以移植。请阅读您机器上的 rsync 手册页,了解正确的操作。

快速回顾

cp 一样,rsync 也把文件从源复制到目标。但是,与 cp 不同,rsync 操作的源和目标既可以是本地的,也可以是远程的。例如,清单 1 中的命令把 /tmp/photos 目录及其内容按原样复制到主目录。


清单 1. 按原样复制内容
     $rsync -n -av /tmp/photos ~ building file list ... done photos/ photos/Photo 2.jpg photos/Photo 3.jpg photos/Photo 6.jpg photos/Photo 9.jpg  sent 218 bytes  received 56 bytes  548.00 bytes/sec total size is 375409  speedup is 1370.11 

-v 选项启用详细消息。-aa 代表存档)是 -rlptgoD 的简写(递归地复制,把符号链接复制为符号链接,保留权限,保留组,保留所有者,保留设备和特殊文件)。通常,-a 会生成文件的镜像;但是,在目标系统不支持相同的属性时会出现例外。例如,把 UNIX 中的目录复制到 Windows® 时无法准确地映射。下面会对一些不太常见的情况给出建议。

rsync 有许多选项。如果担心指定的选项或者源或目标不正确,可以使用 -n 执行试运行。试运行 会预览对每个文件的操作,但是不会实际复制数据。当确认所有设置是正确的之后,删除 -n 选项,再次运行命令。

清单 2 中的示例说明了使用 -n 选项的重要性。清单 1 中的命令和下面的命令会产生不同的结果。


清单 2. 复制指定目录的内容
     $ rsync -av /tmp/photos/ ~ ./ Photo 2.jpg Photo 3.jpg Photo 6.jpg Photo 9.jpg  sent 210 bytes  received 56 bytes  532.00 bytes/sec total size is 375409  speedup is 1411.31 

差异是什么?差异是源参数末尾的斜杠。如果源参数的末尾有斜杠,就会复制指定目录的内容,而不复制目录本身。目标参数末尾的斜杠没有作用。

清单 3 中的示例把同一个目录转移到另一个系统上。


清单 3. 把目录转移到另一个系统上
     $ rsync -av /tmp/photos example.com:album created directory album Photo 2.jpg Photo 3.jpg Photo 6.jpg Photo 9.jpg  sent 210 bytes  received 56 bytes  21.28 bytes/sec total size is 375409  speedup is 1411.31 

假设您在远程机器上有相同的登录名,rsync 会提示输入密码。提供正确的凭证之后,它创建目录 album 并把图像复制到这个目录中。在默认情况下,rsync 使用 Secure Shell (SSH) 作为传输机制;可以在 rsync 中重用机器别名和公共密钥。





回页首


rsync 模式

清单 2清单 3 中的示例演示了 rsync 的四种模式中的两个。第一个示例是 shell 模式,也称为本地模式。第二个示例是远程 shell 模式,它使用 SSH 执行底层连接和传输。rsync 还有两种模式。列表模式ls 相似:它列出源的内容,见 清单 4


清单 4. 列出源的内容
     $  drwxr-xr-x         238 2009/08/22 18:49:50 photos -rw-r--r--        6148 2008/07/03 01:36:18 photos/.DS_Store -rw-r--r--       71202 2008/06/18 04:51:36 photos/Photo 2.jpg -rw-r--r--       69632 2008/06/18 04:51:45 photos/Photo 3.jpg -rw-r--r--       61046 2008/07/14 00:31:17 photos/Photo 6.jpg -rw-r--r--      167381 2008/07/14 00:31:56 photos/Photo 9.jpg 

第四种模式是服务器模式。在这种模式下,rsync 守护进程在一台机器上永久运行,接收文件传输请求。可以把文件发送给守护进程,也可以向它请求文件。服务器模式非常适合创建中心备份服务器或项目存储库。

远程 shell 模式和服务器模式的差异在于,后者在源和目标名中使用两个冒号 (:)。假设 whatever.example.com 存在,下面的命令把文件从源复制到一个本地目标:

$ rsync -av whatever.example.com::src /tmp 

src 究竟是什么?它是在守护进程的主机上定义和配置的一个 rsync 模块。模块有名称、路径(包含它的文件)和其他一些参数,比如 read only 禁止修改内容。

执行以下命令运行 rsync 守护进程:

$ sudo rsync --daemon 

不一定要作为超级用户(根用户)运行 rsync 守护进程,但是这种做法可以保护机器上的其他文件。在作为根用户运行时,rsync 通过使用 chroot 只访问模块的目录层次结构(路径)。执行 chroot之后,其他所有文件和目录就看不到了。如果用自己的特权运行 rsync 守护进程,要选择未使用的套接字并确保它的模块有下载和/或上传所需的权限。清单 5 中的简单配置共享主目录中的一些文件,而不需要使用 sudo。这些配置存储在 rsyncd.conf 文件中。


清单 5. 用于共享文件的简单配置
     motd file = /home/strike/rsyncd/rsync.motd_file pid file = /home/strike/rsyncd/rsyncd.pid port = 7777 use chroot = no  [demo] path = /home/strike comment = Martin home directory list = no  [dropbox] path = /home/strike/public/dropbox comment = A place to leave things for Martin read only = no  [pickup] path = /home/strike/public/pickup comment = Get your files here! 

这个文件分为两部分。第一部分(前四行)配置 rsync 守护进程的操作。(还可以使用其他选项)。第一行指定一个文件,文件包含指明服务器的消息。第二行指定另一个文件,它记录服务器的进程 ID。在必须手工杀死 rsync 守护进程时,可以使用这个文件:

kill -INT `cat /home/strike/rsyncd/rsyncd.pid` 

这两个文件放在主目录中,因为这个示例不使用超级用户特权运行软件。为这个守护进程选择大于 1000 的端口号,用户可以把这个范围的端口号分配给任何应用程序。第四行关闭 chroot

第二部分分为几个小节,每个模块一小节。每个小节包含标题行和模块的选项(键-值对)列表。在默认情况下,所有模块都是只读的;设置 read only = no 允许写操作。另外,在默认情况下,所有模块在模块编目中列出;设置 list = no 隐藏模块。

运行以下命令启动守护进程:

$ rsync --daemon --config=rsyncd.conf  

现在,从另一台机器连接这个守护进程,省略模块名。应该会看到:

rsync --port=7777 mymachine.example.com:: Hello! Welcome to Martin's rsync server.  dropbox         A place to leave things for Martin pickup          Get your files here! 

如果没有在冒号 (::) 后面指定模块,守护进程会返回可用模块的列表。如果指定了模块,但是没有指定模块中的文件或目录,守护进程会提供模块内容的编目,见 清单 6


清单 6. 模块内容的编目输出
     rsync --port=7777 mymachine.example.com::pickup Hello! Welcome to Martin's rsync server.  drwxr-xr-x        4096 2009/08/23 08:56:19 . -rw-r--r--           0 2009/08/23 08:56:19 article21.html -rw-r--r--           0 2009/08/23 08:56:19 design.txt -rw-r--r--           0 2009/08/23 08:56:19 figure1.png 

通过指定模块和文件本地复制文件,见 清单 7


清单 7. 指定模块,本地复制文件
     rsync --port=7777 mymachine.example.com::pickup/ Hello! Welcome to Martin's rsync server.  drwxr-xr-x        4096 2009/08/23 08:56:19 . -rw-r--r--           0 2009/08/23 08:56:19 article21.html -rw-r--r--           0 2009/08/23 08:56:19 design.txt -rw-r--r--           0 2009/08/23 08:56:19 figure1.png 

通过对掉源和目标目录,然后指定用于写操作的模块,可以执行上传,见 清单 8


清单 8. 对掉源和目标目录
     $ rsync -v --port=7777 application.js mymachine.example.com::dropbox Hello! Welcome to Martin's rsync server.  application.js  sent 245 bytes  received 38 bytes  113.20 bytes/sec total size is 164  speedup is 0.58 

快速回顾 rsync 之后,现在我们看看如何在日常任务中应用 rsyncrsync 对于备份尤其有用。另外,因为它可以同步本地文件及其远程副本(也可以对整个文件系统进行同步),它非常适合管理那些必须相同(至少是部分相同)的大型集群。





回页首


用 rsync 备份数据

定期执行备份是一项重要的任务,但是常常被忽视。每天运行长时间的备份可能很无聊,或者需要大量外部介质来存储文件;但是,不要找借口,为了保证数据安全,应该坚持每天备份数据。

为了简化这个任务,可以使用 rsync 并指定一个远程服务器,这个服务器可以是服务提供商提供并备份的服务器。您的每台 UNIX 机器可以使用相同的技术,这非常适合保护笔记本计算机上的数据。

在远程机器上生成 SSH 密钥和 rsync 守护进程,创建一个允许写的备份模块。完成之后,运行 rsync 创建每日备份,这个备份几乎不占用任何空间,见 清单 9


清单 9. 创建每日备份
     #!/bin/sh # This script based on work by Michael Jakl (jakl.michael AT gmail DOTCOM) and used  # with express permission. HOST=mymachine.example.com SOURCE=$HOME PATHTOBACKUP=home-backup  date=`date "+%Y-%m-%dT%H:%M:%S"`  rsync -az --link-dest=$PATHTOBACKUP/current $SOURCE $HOST:PATHTOBACKUP/back-$date  ssh $HOST "rm $PATHTOBACKUP/current && ln -s back-$date $PATHTOBACKUP/current"  

HOST 替换为自己的备份主机名,把 SOURCE 替换为希望保存的目录。把 PATHTOBACKUP 改为自己的模块名。(还可以把脚本的最后三行嵌入一个循环,动态地修改 SOURCE,从而备份同一系统上的一系列目录)。备份的过程如下:

  • 首先,把 date 设置为当前日期和时间,产生 2009-08-23T12:32:18 这样的字符串,它惟一地标识备份。
  • rsync 命令执行复制操作。-az 保留所有文件信息并执行压缩。关键之处是 --link-dest=$PATHTOBACKUP/current,它指定如果文件没有修改过,就不把它复制到新的备份。相反,在新备份中创建一个指向现有备份中同一文件的硬链接。换句话说,新备份只包含已经修改过的 文件;其他文件都是链接。

    具体地说(展开所有变量),mymachine.example.com::home-backup/current 是当前存档。/home/strike 的新存档是 mymachine.example.com::home-backup/back-2009-08-23T12:32:18。如果 /home/strike 中的文件没有修改过,那么文件在新备份中表示为指向当前存档的硬链接。否则,把文件复制到新存档中。

    如果您每天只修改少量文件和目录,那么生成完整的备份实际上是没有意义的,这样做很浪费空间。另外,因为每个每日备份都非常小(除了第一个),可以保存长时间的文件历史。

  • 最后一步是更改远程机器上备份的组织,让新创建的存档成为当前存档,这会减小下一次运行脚本时要记录的差异。最后一个命令删除当前存档(这只是符号链接),重新创建相同的符号链接,但是指向新的存档。

请记住,硬链接指向相同的文件。硬链接的创建和维护开销很低,所以只使用增量方案就可以模拟完整备份的效果。





回页首


其他高级技巧

开始在日常任务中应用远程 rsync 之后,很可能会发现有必要让守护进程一直运行。Linux 和 UNIX 都为 rsync 提供了启动脚本,通常在 /etc/init.d/rsync 中。请在自己的操作系统中查找启动脚本以及启用和禁用组件的实用程序。如果您要按自己的方式作为守护进程运行 rsync,或者无法访问启动脚本,那么可以用 cron 启动 rsync

@reboot /usr/bin/rsync --daemon --port=7777 --config=/home/strike/rsyncd/rsyncd.conf 

这个命令在机器每次启动时启动守护进程。把这一行放在 crontab 文件中并保存文件。

前面演示了如何用 -n 预览 rsync 将执行的操作,发现可能存在的问题。还可以使用两个选项监视传输的状态:--progress--stats。前者显示一个进度条。后者显示如何执行压缩和传输。可以使用--compress 压缩两台机器之间传输的数据。在使用这个选项时并不发送原始数据,而是由发送方压缩数据,由接收方解压数据,这会加快传输速度 — 数据越少,花费的时间越少。

在默认情况下,rsync 会把源中的所有文件复制到目标。这就是复制。如果希望建立镜像(即目标是源的精确拷贝),那么应该指定 --delete。例如,如果源包含文件 A、B 和 C,标准的 rsync 会把 A、B 和 C 复制到目标。但是,如果在源中删除了 B,再次复制,目标就不再是源的镜像了:B 不再是有效的。--delete 选项建立镜像,从目标中删除源中不再存在的文件。

常常有一些文件不希望复制到备份或存档中。这些文件包括编辑器和其他实用程序创建的草稿文件(文件名常常以波浪线 [~] 结尾),以及许多不重要的文件,比如主目录中的 MP3 文件,如果需要的话,可以重新创建它们。可以使用模式排除某些文件。可以在命令行上指定模式,或者在文本文件中指定模式列表。还可以组合使用模式和 --delete-excluded 选项,从目标中删除这些文件。

要想通过命令行根据模式排除文件,应该使用 --exclude。请记住,如果模式中的任何字符对于 shell 有特殊含义,比如 *,那么应该把模式放在单引号中:

$ rsync -a --exclude='*~' /home/strike/data example.com::data 

假设文件 /home/strike/excludes 包含下面的模式列表:

*~ *.old *.mp3 tmp 

就可以排除与这些模式匹配的所有文件:

$ rsync -a --exclude-from=/home/strike/excludes /home/strike/data example.com::data 





回页首


结束语

既然了解了 rsync,您就无法为忽视备份找借口了。您还能有什么借口呢?只要适当地应用 rsync,您的数据就不会丢失了。现在有价值的文件都可以保存FIDOnet 中。



参考资料

学习
  • rsync:访问项目主页,进一步了解 rsync 及其开发进度。

  • rsync tutorial:阅读这份教程,了解 rsync 的相关信息。

  • rsync 手册页:阅读 rsync 的手册页。

  • 对话 UNIX:阅读本系列中的其他部分。

  • UNIX shells:了解关于 UNIX shell 的更多信息。

  • AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。

  • AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。

  • AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。

  • 技术书店 浏览关于这些主题和其他技术主题的图书。


讨论

2010年8月2日星期一

iptables

/etc/sysconfig/iptables

iptables-restore < /etc/sysconfig/iptables

2010年7月14日星期三

linux基础之教你如何查看linux版本(转)

转:http://dev.firnow.com/course/6_system/linux/Linuxjs/20090315/161658.html
如何得知自己正在使用的linux是什么版本呢,下面的几种方法将给你带来答案!

  1. 查看内核版本命令:

  1) [root@q1test01 ~]# cat /proc/version

   Linux version 2.6.9-22.ELsmp (bhcompile@crowe.devel.redhat.com) (gcc version 3.4.4 20050721 (Red Hat 3.4.4-2)) #1 SMP Mon Sep 19 18:00:54 EDT 2005

  2) [root@q1test01 ~]# uname -a
  Linux q1test01 2.6.9-22.ELsmp #1 SMP Mon Sep 19 18:00:54 EDT 2005 x86_64 x86_64 x86_64 GNU/Linux

  3) [root@q1test01 ~]# uname -r

  2.6.9-22.ELsmp

  2. 查看linux版本:

  1) 登录到服务器执行 lsb_release -a ,即可列出所有版本信息,例如:

  [root@3.5.5Biz-46 ~]# [root@q1test01 ~]# lsb_release -a

  LSB Version: :core-3.0-amd64:core-3.0-ia32:core-3.0-noarch:graphics-3.0-amd64:graphics-3.0-

  ia32:graphics-3.0-noarch

  Distributor ID: RedHatEnterpriseAS

  Description: Red Hat Enterprise Linux AS release 4 (Nahant Update 2)

  Release: 4

  Codename: NahantUpdate2

  注:这个命令适用于所有的linux,包括Redhat、SuSE、Debian等发行版。

  2) 登录到linux执行cat /etc/issue,例如如下:

  [root@q1test01 ~]# cat /etc/issue

  Red Hat Enterprise Linux AS release 4 (Nahant Update 2)

  Kernel \r on an \m

  3) 登录到linux执行cat /etc/redhat-release ,例如如下:

  [root@q1test01 ~]# cat /etc/redhat-release

  Red Hat Enterprise Linux AS release 4 (Nahant Update 2)

  注:这种方式下可以直接看到具体的版本号,比如 AS4 Update 1

  4)登录到linux执行rpm -q redhat-release ,例如如下:

  [root@q1test01 ~]# rpm -q redhat-release

  redhat-release-4AS-3

  注:这种方式下可看到一个所谓的release号,比如上边的例子是3

  这个release号和实际的版本之间存在一定的对应关系,如下:

  redhat-release-3AS-1 -> Redhat Enterprise Linux AS 3

  redhat-release-3AS-7.4 -> Redhat Enterprise Linux AS 3 Update 4

  redhat-release-4AS-2 -> Redhat Enterprise Linux AS 4

  redhat-release-4AS-2.4 -> Redhat Enterprise Linux AS 4 Update 1

  redhat-release-4AS-3 -> Redhat Enterprise Linux AS 4 Update 2

  redhat-release-4AS-4.1 -> Redhat Enterprise Linux AS 4 Update 3

  redhat-release-4AS-5.5 -> Redhat Enterprise Linux AS 4 Update 4

  另:第3)、4)两种方法只对Redhat Linux有效。diyblPic

openvpn client 安装

(1)32位的包

#wget ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/lzo-2.02-3.el5.kb.i386.rpm
#rpm -ivh lzo-2.02-3.el5.kb.i386.rpm
#wget ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/openvpn-2.1-0.19.rc4.el5.kb.i386.rpm
#rpm -ivh openvpn-2.1-0.19.rc4.el5.kb.i386.rpm


(2)64位的包

#wget ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/x86_64/RPMS/lzo-2.02-3.el5.kb.x86_64.rpm
#rpm -ivh lzo-2.02-3.el5.kb.x86_64.rpm
#wget ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/x86_64/RPMS/openvpn-2.1-0.19.rc4.el5.kb.x86_64.rpm
#rpm -ivh openvpn-2.1-0.19.rc4.el5.kb.x86_64.rpm


2、配置文件

四个证书放在/etc/openvpn/ca/目录下

#vim /etc/openvpn/dev.ovpn

client
dev tun
proto tcp
remote [网关IP] 1194
float
persist-key
persist-tun
ca /etc/openvpn/ca/ca.crt
cert /etc/openvpn/ca/server.crt
key /etc/openvpn/ca/server.key
tls-auth /etc/openvpn/ca/ta.key 1
ns-cert-type server
keepalive 10 30
comp-lzo
verb 3


#启动服务
# /etc/init.d/openvpn start
# openvpn --config /etc/openvpn/dev.ovpn 2>&1 >/dev/null &

2010年7月12日星期一

ftp 自动脚本 写法之一

1. -n 禁止 .netrc, 不自动登陆

2. ftp 是命令行工具, 因此下边的方式是有效的



#!/bin/bash

# Script to retrieve a file via FTP

FTP_SERVER=ftp.nl.debian.org

FTP_PATH=/debian/dists/lenny/main/installer-i386/current/images/cdrom

REMOTE_FILE=debian-cd_info.tar.gz

ftp -n <<>

open $FTP_SERVER

user anonymous me@linuxbox

cd $FTP_PATH

hash

get $REMOTE_FILE

bye

_EOF_

ls -l $REMOTE_FILE



vim 基本参数设置

:syntax on

:set syntax=sh

:set hlsearch

搜索高亮

:set tabstop=4

:set autoindent

2010年7月9日星期五

将man转换成pdf

zcat /usr/share/man/man1/ls.1.gz | groff -mandoc >~/Desktop/foo.ps
ps2pdf ~/Desktop/foo.ps ~/Desktop/ls.pdf

补充知识:
1. zcat 相当于 gzip -cd
2. groff 文档格式化工具
3. ps 扩展名为 postscript 文件, 一个曾经很nb的格式

2010年6月29日星期二

LINUX RSYNC配置详解(转)


\
转:http://blog.chinaunix.net/u/15758/showart_263611.html
LINUX RSYNC配置详解

LINUX-RSYNC同步(自写文档)

我自己写的一个关于RSYNC的总结
测试报告

1,首先SERVER与CLIENT都需要安装RSYNC
2,其次在SERVER的/etc/下面建立rsyncd.conf 内容可以按照下面的写法

[root@vm-base-01 local]# more /etc/rsyncd.conf
uid = root ///RSYNC启动ID
gid = root
use chroot = no
log file = /var/log/rsyncd.log ////日志存放
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock

[publishonline] ///模块名称---也就一个需要同步或备份的目录
path = /usr/local/apache/htdocs/publish/online/images
comment = home cad folder
ignore errors
read only = yes
list = no
auth users = xp20adm ////登录用户名--自我随意设置
secrets file = /etc/rsyncd.scrt ////密码存放文件----一般需要自我建立此文件,路经与命名随意
[publishdown]
path = /usr/local/apache/htdocs/publish/down/images
comment = home cad folder
ignore errors
read only = yes
list = no
auth users = xp20adm
secrets file = /etc/rsyncd.scrt
[magdown]
path = /usr/local/apache/htdocs/publish/down
comment = home cad folder
ignore errors
read only = yes
list = no
auth users = xp20adm
secrets file = /etc/rsyncd.scrt
3,SERVER就基本配置好了,自己不要忘记配置模块中制定的目录与密码存放点
//////////////////////////////注意////////////////////////////////////
bash-2.03# cat /etc/rsyncd.scrt
  密码格式如下
用户名:密码 (有个冒号哟)
!!!!!!!!出于安全目的,文件的属性必需是只有属主可读(不能错)!!!!!!!!!!!!!!!!!

chmod 400
4,然后就可以启动SERVER端的RSYNC程序了,如果上述配置不正确,rsync是无法正常启动的
启动方案

在server端将rsync以守护进程形式启动

bash-2.03# rsync --daemon

如果要在启动时把服务起来,有几种不同的方法,比如:

a、加入inetd.conf

  编辑/etc/services,加入rsync 873/tcp,指定rsync的服务端口是873
  编加/etc/inetd.conf,加入rsync stream tcp nowait root /bin/rsync rsync --daemon

b、加入rc.local

  在各种操作系统中,rc文件存放位置不尽相同,可以修改使系统启动时rsync --daemon加载进去。

5 CLIENT设置
如果CLIENT想不输入RSYNC的密码而自动同步的话,可以设置一个秘密文件:可以用--password-file=/password/path/file来指定密码文件,这样就可以在脚本中使
用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。

下面这个命令行中-vzrtopg里的v是verbose,z是压缩,r是recursive,topg都是保持文件原有属性如属主、时间的参数。--progress是指显示
出详细的进度情况,--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。后面的inburst@ip中,
inburst是指定密码文件中的用户名,之后的::inburst这一inburst是模块名,也就是在/etc/rsyncd.conf中自定义的名称。最后的/tmp是备份
到本地的目录名。

举例CLIENT

如: rsync -vzrtopg --progress --delete inburst@192.168.*.*::inburst --exclude="*.sh" --exclude="images*" --exclude="*.log"
--password-file=/etc/rsync.pas /home/quack/backup/

这个例子基本包含所有应用

参数说明
-vzrtopg里的
v是verbose,
z是压缩,
r是recursive,
topg都是保持文件原有属性如属主、时间的参数
----progress
是指显示出详细的进度情况
--delete
是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致

inburst@192.168.168.52::inburst
用户名 模块名

--exclude="*.sh"
不包含某些文件

--password-file
指定CLIENT端密码文件存放路径
/home/quack/backup/
指定CLIENT端存放镜象目的路径

基本就这些了~~~剩下就是把CLINET端的RSYNC做一个启动脚本放入CRONTAB中以便定时同步 88

BY:IORI 2006-7

IN beijing XPLUS

Rsync命令参数详解(转)



转:http://hi.baidu.com/isno/blog/item/2e2a2f73fc838c1a8601b041.html

在对rsync服务器配置结束以后,下一步就需要在客户端发出rsync命令来实现将服务器端的文件备份到客户端来。rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。

Rsync的命令格式可以为以下六种:

  rsync [OPTION]... SRC DEST

  rsync [OPTION]... SRC [USER@]HOST:DEST

  rsync [OPTION]... [USER@]HOST:SRC DEST

  rsync [OPTION]... [USER@]HOST::SRC DEST

  rsync [OPTION]... SRC [USER@]HOST::DEST

  rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

  对应于以上六种命令格式,rsync有六种不同的工作模式:

  1)拷贝本地文件。当SRCDES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:rsync -a /data /backup

  2)使用一个远程shell程序(rshssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。如:rsync -avz *.c foo:src

  3)使用一个远程shell程序(rshssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。如:rsync -avz foo:src/bar /data

  4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。如:rsync -av root@172.16.78.192::www /databack

  5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:rsync -av /databack root@172.16.78.192::www

  6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://172.16.78.192/www

rsync参数的具体解释如下:

-v, --verbose 详细模式输出
-q, --quiet 精简输出模式
-c, --checksum 打开校验开关,强制对文件传输进行校验
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, --recursive
对子目录以递归模式处理
-R, --relative 使用相对路径信息
-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
--backup-dir 将备份文件(~filename)存放在在目录下。
-suffix=SUFFIX 定义备份文件前缀
-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
-l, --links
保留软链结
-L, --copy-links 想对待常规文件一样处理软链结
--copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结
--safe-links 忽略指向SRC路径目录树以外的链结
-H, --hard-links 保留硬链结
-p, --perms 保持文件权限
-o, --owner 保持文件属主信息
-g, --group 保持文件属组信息
-D, --devices 保持设备文件信息
-t, --times 保持文件时间信息
-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间
-n, --dry-run现实哪些文件将被传输
-W, --whole-file 拷贝文件,不进行增量检测
-x, --one-file-system 不要跨越文件系统边界
-B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节
-e, --rsh=COMMAND 指定使用rshssh方式进行数据同步
--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息
-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件
--existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件
--delete 删除那些DSTSRC没有的文件
--delete-excluded 同样删除接收端那些被该选项指定排除的文件
--delete-after 传输结束以后再删除
--ignore-errors 及时出现IO错误也进行删除
--max-delete=NUM 最多删除NUM个文件
--partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
--force 强制删除目录,即使不为空
--numeric-ids 不将数字的用户和组ID匹配为用户名和组名
--timeout=TIME IP超时时间,单位为秒
-I, --ignore-times 不跳过那些有同样的时间和长度的文件
--size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间
--modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0
-T --temp-dir=DIR
DIR中创建临时文件
--compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份
-P 等同于 --partial
--progress
显示备份过程
-z, --compress 对备份的文件在传输时进行压缩处理
--exclude=PATTERN 指定排除不需要传输的文件模式
--include=PATTERN 指定不排除而需要传输的文件模式
--exclude-from=FILE 排除FILE中指定模式的文件
--include-from=FILE 不排除FILE指定模式匹配的文件
--version 打印版本信息
--address 绑定到特定的地址
--config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件
--port=PORT 指定其他的rsync服务端口
--blocking-io 对远程shell使用阻塞IO
-stats
给出某些文件的传输状态
--progress 在传输时现实传输过程
--log-format=formAT 指定日志文件格式
--password-file=FILE FILE中得到密码
--bwlimit=KBPS 限制I/O带宽,KBytes per second
-h, --help
显示帮助信息


2010年6月25日星期五

看看文件到底是干啥的,从哪里来到哪里去

1. 可执行文件 是啥类型的
type [filename]
2. locate a program file in the user's path
which [filename]
3. locate programs
whereis [filename]
4. 文件信息
stat [filename]
5. 文件内容编码格式
file [filename]

2010年6月24日星期四

刻录命令

1. 盘对盘
dd if=/dev/cdrom of=ubuntu.iso
换张空盘
dd if=ubuntu.iso of=/dev/cdrom

注: CDs 不能用此方式, 可用cdrdao 命令

2. 文件对盘
mkdir ~/cd-rom-files
将要刻录的内容 放到 ~/cd-rom-files 下
genisoimage -o cd-rom.iso -R -J ~/cd-rom-files

Sync Algorithm: RSync vs. RDC(转)

转:http://morganchengmo.spaces.live.com/blog/cns!9950CE918939932E!521.entry

Sync Algorithm: RSync vs. RDC

数据同步(Sync)是很多网络应用需要的解决的问题,比如文件镜像。这里就以文件同步为例,问题模型:网络中两个主机Host-A和Host-B,都有同一文件File-Old的拷贝,现在这个文件在Host-A上做了一些改变成为了File-New,需要通过同步让Host-B也获得F-New。
让我们想想怎么处理这个问题,最简单的方法,把所有数据都传输一遍,这样是简单,但是显得浪费,因为File-New相对于File-Old只是有些小改变,全部copy代价太大。如果我们能够只传输发生改变的部分,也就是增、删、改的文件部分,那就太好了。这样,我们要解决的问题变成,如何得到File-Old和File-New的差别。
如果Host-A上面保留有一个File-Old,那用普通的diff算法求一下和File-New的差别就行了,但是实际应用中,Host-A往往不会保留File-Old;或者文件格式本身有很强的版本控制功能,Host-B告诉Host-A它手上文件的版本,Host-A就能够计算出差别;更多情况下,文件就是一串bytes,没有版本控制信息,没有历史拷贝,Rsync和RDC就是解决这种情况的同步的。
RSync算法是澳大利亚人Andrew Tridgell发明的,我看懂这个算法之后的第一感觉是:“嘿,这算法我也应该能想出来!”的确,按照Andrew Tridgell自己的话,这个算法只需要半个小时就能够理解,但是花费了他几年时间研究出来。
这里大概介绍一下Rsync算法大概原理:
1) Host-B把File-Old划分成不重合的大小为K字节的若干块,不足K字节的结尾部分加上Padding,然后对每一块求弱Hash和强Hash。弱Hash就是说很有可能两个不同的块Hash值相同,但是计算起来快,而且这里要求这个若Hash能够Rolling,也就是说已知字节1到字节K这个块的Hash值,能够很快的计算出字节2到字节K+1这个块的Hash值,往前Roll一个字节,计算很快;强Hash就是可以认为不同块肯定有不同Hash值,Rsync用的是MD4。我们让WH表示弱Hash,SH表示强Hash。
2) Host-B把每个块的WH和SH值发送给Host-A。
3) 该Host-A上场了,他的运算量比较大。Host-A对File-New每一个长度为K的块(也就是以每个字节开头的长度为K的块)计算WH,计算出来之后和Host-B发送过来的WH匹配,如果发现有相同的,再计算这个块的SH进行匹配,如果还是相符,说明这个块在File-Old里面也存在。假如File-New长度为N,那么Host-A要处理大约(N-K)个块,这里可见用两个Hash算法的作用,WH用来做初步比较,而且因为它可以Rolling,所以能够很快筛选掉大多数不匹配,对于漏网之鱼,也躲不过SH的筛选。
4) 通过上面的计算,Host-A可知道,File-New中哪些块和File-Old中的块相同,这样自然也可以计算出哪些不同,Host-A把这些不同encode一下送给Host-B。
5) Host-B收到Host-A送来的数据,decode,就得到了File-New相对于File-Old的改变,于是获得了File-New。
整个过程只需要一个round-trip,而且可以精确的得到一个字节级别的差别,Host-A的运算量相对要大一些。
Rsync的实现已经是*inx上面的一个重要工具,所以,当Microsoft在Windows 2003 Server上推出DFSR(Distributed File System Replication)时,Open Source Community颇有嘘声。其实DFSR采用的是RDC(Remote Differential Compression)算法,和RSync相差很大,并没有抄袭RSync。
我感觉,RSync有学院气息(这个算法本来就是Andrew Tridgell的博士论文),结果很完美,File-New和File-Old每一个字节的差别都计算出来了,但是Host-A和Host-B的计算量不对等,大部分的计算都集中在Host-A上。RDC和RSync相比方向上有点不同,RDC并不追求计算出字节级别的diff,而是用较少的运算求出数据块级别的diff。
RDC算法要求Host-A和Host-B通过一致的规则对File-New和File-Old分别进行分块,然后对每个块计算SH,Host-B把每个块的SH值发给Host-A,Host-A对两组SH进行diff,就可以知道有哪些块不同,哪些块被删掉了,哪些块被添加了。RDC的关键在于分块规则,也使用WH,要让同一规则应用于File-Old和File-New的时候,分出来的块能够尽量体现出区别。
比如File-Old包含“I Love Playing Basketball”,
File-New是“I Like Playing Football"。
如果是RSync算法,Host-A能够计算出准确的差别,“I Like Playing Football" 黄色部分修改了,绿色部分是增加的,精确到每个字符,Host-A主要告诉Host-B:“把第4-6号字符换成'ike',把16-21号字符去掉,插入'Foot'”。
如果是RDC算法,可能得到下面的结果:
File-Old分块的结果,分成3块。
I Love Playing Basketball
File-New分块的结果,分成3块。
I Like Playing Football"
Host-A经过比对,发现只有File-Old的第2块和File-New的第2块匹配,于是就告诉Host-B:“把你的第一块换成‘I Like’,把你的第3块换成‘Football’”。
如上面看到,RDC相对而言比较浪费,相比RSync,要多传输一些数据,但是Host-A和Host-B的计算量比较平均。为了让RDC发挥好的性能,一定要制定一个好的分块机制,让包含Diff的块尽量少包含没有Diff的数据,怎么做到这一点呢,还要靠WH,通过rolling checksum来从数据中快速挖掘出数据的性质。
注意一点就是RSync的分块策略是每块都是固定长度的,而RDC则每块长度可能不一样。
虽然RDC相对浪费一点,但是传送的大部分还是Delta数据,而且计算量相对平均而且较少,目前Window 2003 Server R2上的DFS使用的就是RDC算法,还有一个应用就是Live Messenger的Shared Folder功能,用一用,就知道效率不差了:)

webkit(转)

转:http://zh.wikipedia.org/zh/WebKit

WebKit

维基百科,自由的百科全书

WebKit
開發WebKit.org
作業系統跨平台
語言C/C++
類型软件框架
許可協議LGPL/BSD许可证
網站http://webkit.org/

WebKitMac OS X v10.3及以上版本所包含的软件框架(对v10.2.7及以上版本也可通过软件更新获取)。同时,WebKit也是Mac OS XSafari网页浏览器的基础。WebKit是一个开源项目,主要由KDEKHTML修改而來並且包含了一些来自苹果公司的一些组件。

传统上,WebKit包含一个网页引擎WebCore和一个脚本引擎JavaScriptCore,它们分别对应的是KDE的KHTMLKJS。不过,随着JavaScript引擎的独立性越来越强,现在WebKit和WebCore已经基本上混用不分(例如Google Chrome采用V8引擎,却仍然宣称自己是WebKit内核)。

目录

[隐藏]

[编辑]跨平台之路

苹果公司在设计WebKit之时加入了太多Mac OS X平台的独有事物,这给向其它系统的移植造成了很大障碍。不过,由于WebKit出色的开源特性,这些障碍正在被不断克服。

[编辑]Symbian

2005年诺基亚公司S60团队成为手机端WebKit的先驱,他们将WebKit框架移植到了Symbian S60平台,作为S60第三版的浏览器内核。

[编辑]iPhone OS

2007年6月29日iPhone上市,WebKit通过Safari浏览器进入iPhone OS平台,而且立即成为iPhone OS平台唯一的排版引擎。

苹果公司[1]成为了这一项目的领导者。

[编辑]Windows

2008年3月18日,Safari 3.1 for Windows转正,解决了Windows平台下WebKit一直存在的部分兼容性问题。同年9月3日推出的Google Chrome使得这一平台进一步成熟。而在Windows Mobile战线,领先推出稳定版的是拓驰公司的Iris Browser。

Windows[2]是除Mac OS X[3]外另一个得到WebKit.org官方支持的版本。

[编辑]Linux

2008年10月22日投入市场的Android,其内置浏览器Google Chrome Lite是第一款Linux平台的稳定版WebKit浏览器,也是迄2009年3月为止整个Linux体系中与系统配合最完善的WebKit浏览器之一。能够与之相提并论的是Palm公司第二代操作系统webOS的内置浏览器,也是建基于Linux的WebKit浏览器。而在桌面Linux战线,尽管Midori孤身奋战多年,Google Chrome声称要推出Linux版颇有时日,GNOMEEpiphanyKDEKonqueror,乃至Flock都宣言要转向WebKit内核,但迄2009年3月为止,还没有稳定版的完整WebKit浏览器见于桌面Linux。

尽管WebKit的原型K内核是由Qt写成,但Linux下目前最受瞩目的WebKit项目却是Gnome领导的WebKit/Gtk+[4]。随着奇趣科技于2008年6月Nokia收购,Qt方面[5]也加快了WebKit的“回归”进程。

[编辑]现在使用WebKit引擎的浏览器(部分软件并非开源产品)

/ 2010-06-02(20天前所用的引擎版本是530.6。

/ 2010-06-20(2天前所用的引擎版本是530.9[7]

  • Midori:当前最新测试版0.1.5所用的引擎版本是WebKitGTK+ 1.1.13
  • Safari:当前最新正式版4.0所用的引擎版本是531.9.1。2009年6月8日Safari退出公开测试,进入正式版
  • Epiphany:原使用Gecko,2.28版開始改用WebKit。
  • 搜狗高速浏览器:其最新的2.0正式版开始采用webkit/trident双引擎。[8]

[编辑]参考资料

  1. ^ http://developer.apple.com/safari/mobile.php
  2. ^ http://nightly.webkit.org/builds/trunk/win/1
  3. ^ http://nightly.webkit.org/builds/trunk/mac/1
  4. ^ http://www.webkitgtk.org/ 这种现象的原因之一在于Objective-CGTK+都是基于C语言,而Qt是基于C++
  5. ^ http://labs.trolltech.com/page/Projects/Internet/WebKit
  6. ^ QQ浏览器5官方网站
  7. ^ http://googlechromereleases.blogspot.com/
  8. ^ 搜狗高速浏览器首页