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. ^ 搜狗高速浏览器首页