2012年12月12日 星期三

Heartbeat常见问题-centos6.2

[日期:2012-11-06]
来源:Linux社区  作者:crazylinux
[字体: ]

研究一下Heartbeat,其官方下载网站:http://www.linux-ha.org/wiki/Downloads

目前版本:
ClusterLabs-resource-agents-v3.9.2-0-ge261943.tar.gz
Heartbeat-3-0-7e3a82377fa8.tar.bz2
Pacemaker-1-2-cc0e4d295e29.tar.bz2
Reusable-Cluster-Components-glue--glue-1.0.9.tar.bz2

在安装过程中遇到各种错误,方便网上童靴会遇到和我一样的问题,我把解决办法整理如下,也同时希望大家补充:

我用的系统是:
[root@host2 ~]# cat /etc/RedHat-release
CentOS release 6.2 (Final)
[root@host2 ~]# uname -a
Linux host2.linuxbrother.com 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux

1、libtoolize: `COPYING.LIB' not found in `/usr/share/libtool/libltdl'
解决办法:
yum -y install libtool-ltdl-devel
2、checking for special libxml2 includes... configure: error: libxml2 config not found
解决办法:
yum -y install libxml2
3、configure: error: BZ2 libraries not found
解决办法:
yum -y install bzip2-devel glib2-devel
前三种感觉是常识性问题,各位如果经常安装源码包的话这种错误解决起来应该很easy的。
4、安装Reusable-Cluster-Components-glue--glue-1.0.9
./.libs/libplumb.so: undefined reference to `uuid_parse’
./.libs/libplumb.so: undefined reference to `uuid_generate’
./.libs/libplumb.so: undefined reference to `uuid_copy’
./.libs/libplumb.so: undefined reference to `uuid_is_null’
./.libs/libplumb.so: undefined reference to `uuid_unparse’
./.libs/libplumb.so: undefined reference to `uuid_clear’
./.libs/libplumb.so: undefined reference to `uuid_compare’
collect2: ld returned 1 exit status
gmake[2]: *** [ipctest] Error 1
gmake[2]: Leaving directory `/root/Reusable-Cluster-Components-glue-1.0.6/lib/clplumbing’
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/root/Reusable-Cluster-Components-glue-1.0.6/lib’
make: *** [all-recursive] Error 1
解决办法:
  ./configure --prefix=$PREFIX  --with-daemon-user=${CLUSTER_USER} --with-daemon-group=${CLUSTER_GROUP} --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
各位在./configure的时候指定一下LIBS,如果是32位系统的话改成LIBS='/lib/libuuid.so.1'。下面ClusterLabs-resource Heartbeat在./configure的时候都指定一下,要不然继续报错。
5、安装Heartbeat-3-0-7
uuid_parse.c:250: error: expected ‘;’, ‘,’ or ‘)’ before ‘uu’
uuid_parse.c:469: error: expected ‘)’ before ‘out’
uuid_parse.c:484: error: expected ‘)’ before ‘out’
uuid_parse.c:512: error: expected ‘)’ before ‘out’
gmake[1]: *** [uuid_parse.lo] Error 1
gmake[1]: Leaving directory `/usr/src/Heartbeat-3-0-7e3a82377fa8/replace'
make: *** [all-recursive] Error 1
解决办法:
# ./configure --prefix=$PREFIX --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
gmake[1]: --xinclude: Command not found
gmake[1]: *** [heartbeat.8] Error 127
gmake[1]: Leaving directory `/usr/src/Heartbeat-3-0-7e3a82377fa8/doc'
make: *** [all-recursive] Error 1
解决办法:
# yum -y install libxslt-devel

2012年11月2日 星期五

Vdspam反垃圾邮件问题收集(转)

以下没有标记 ID 的是翻译Dspam官方的FAQ,因为本人的英文水平有限,不对之处还请指出
1、
Q: 什么是DSPAM?为什么我要使用它?
A: DSPAM是一个智能的自适应学习什么是垃圾邮件垃的过滤器,而不是根据每个用户的个人电子邮件的行为。它的目的是为全系统的过滤和第三方一体化如果您正在寻找一个可扩展、快速、准确的垃圾邮件过滤器,并且能够自适应学习,您应该使用DSPAM。虽然这是一个垃圾邮件过滤器的设计,DSPAM表现出极大的能力。
2、
Q: 什么样的MTA可以和DSPAM工作?
A: DSPAM可以与任何的MTA (Mail Transfer Agent)Sendmail, Postfix, Exim, Courier, Communigate Pro, and QMail 工作
3、
Q: 需要多长时间开始过滤垃圾邮件?
A: 从一个完全空白库开始,DSPAM的头几天到一个星期左右,普遍攀升至约95-98 %的准确度,取决于您收到多少邮件。
4、
Q: DSPAM和SpamAssassin不同之处 ?
A: 双方的共同目标是消灭垃圾邮件。

SpamAssassin 确实使用匹配规则来标识可能是垃圾邮件的邮件,但它采用了一种概率统计的、基于分数的方法来对消息分类,而没有采用二进制方法。它没有寻求创建那些将消息标识为“一定是垃圾邮件”或“一定不是垃圾邮件”的规则,而是使用利用概率来推断给定的消息是垃圾邮件的可能性的规则。

DSPAM的基础是相信机器学习(基本人工智能)可以本身解决垃圾邮件问题,而不需要人为维持的规则,不准确的黑名单或任何hodge-podge 的解决方案。DSPAM的一个中央垃圾邮件检测功能集成了先进的的统计分析。这导致了各级的准确性高达10倍,除了极少数误报。DSPAM细分每封电子邮件的部分,分析了历史数据的每个组件,并确定了特征来判断一封电子邮件通过。虽然DSPAM支持许多pre-filters, post-filters和其他层面的分析,其核心功能完全在于在自适应学习和语言分析。仅此一点就已经产生了各级精度最高达到99.991 % 。
5、
Q: 收到的垃圾邮件该怎么办?
A: DSPAM的目的是'学习'您会收到的垃圾邮件的基础上(和或不是),所以当您收到垃圾邮件,您可以在extmail的web界面提交,DSPAM将自动进行分析和学习。另外,用户可以通过DSPAM的WEB界面提交,这是一个极好的途径 ,为确保DSPAM不会过时,需继续学习新技巧的垃圾邮件。
6、
Q: 什么是DSPAM隔离区?
A: 每个用户都有一个隔离区,拥有DSPAM认为是垃圾邮件的信息,而不是简单地删除这些邮件,隔离区使用户能够识别false positive和不定期重新学习是误判的电子邮件 。 这是一个非常重要的步骤在学习过程中 ,据了解 , 没有垃圾邮件过滤器100 %的准确,因此,重要的是能够了解自己的错误。 DSPAM的隔离使它比其他一些解决办法更容易管理的垃圾邮件。
7、
Q: DSPAM支持白名单吗?
A: DSPAM支持白名单功能 ,DSPAM的白名单是一个自动功能的贝叶斯过滤机制。 是训练DSPAM建立一个内部的白名单。可自动识别谁最绝对不会发送垃圾邮件。
8、
Q: DSPAM支持病毒过滤吗?
A: DSPAM本身不过滤病毒,需要调用Clamav来进行病毒过滤。
以下是收集社区一些兄弟的解决方法
1、
Q:mini_httpd 在这当中起何作用,是替代 apache 吗?
A: ID:liushaobo   是的,这样比较方便,省去大家配置时在权限方面的不少麻烦;当然你要是一定要用apache也可以;
2、
Q:DSPAM有没有类似spamlocker的那样的开关?也就是说假如我使用有什么问题的话,通过修改哪几个配置就可以停用DSPAM
A: ID:liushaobo   把在main.cf 和master.cf 里做的配置 注释就可以了,再把相关的 DSPAM 服务停止,你做之前可以先把要改的文件备份一下,
3、
Q:Trust 的这几个账户是什么意思 是连接数据库的账户还是什么?
A: ID:hondasky   如果没有上面的账户,其它用户将没有权限操作 邮件存储目录的话就会报这个错误
Apr 24 11:02:19 mail dspam[8365]: Option --user requires special privileges when user does not match current user, e.g.. root or Trusted User
4、
Q: 怎么判断DSPAM 就在工作了呢?
A: ID:liushaobo  如果dspam工作正常,邮件的信头会出现以下标识,
X-DSPAM-Result: Spam
X-DSPAM-Processed: Fri Apr 3 10:40:02 2009
X-DSPAM-Confidence: 0.8222
X-DSPAM-Probability: 1.0000
X-DSPAM-Signature: 49d57702286051336712104
X-DSPAM-Factors: 15,
5、
Q:dspam-web里有如下错误提示:
An Error Has Occured
The following error occured while trying to process your request:
No historical data is available.
A: ID:liushaobo   用户的对dspam 的 data目录的访问权限不够或邮件收发没有经过dspam
6、
Q:举报功能 好像不起作用哦 我把一份邮件举报为垃圾邮件下次他会收到正常收件箱里去哦 是怎么会事?
A: ID:liushaobo   Dspam默认要学习五次,才会把邮件识别为垃圾邮件
7、
Q:Preference "spamAction=tag" //曾经在其他文档中看到过此参数注释掉,否则不能更改message handling,不太理解其含义,个人认为应该是设置Preference "spamSubject=**SPAM**"信件标题无法正常加载**SPAM**;
A: ID:liushaobo   "spamAction= " 有三种动作,一个隔离、二是加标记tag、三是投递 deliver
8、
Q: 若训练垃圾邮件的时候,出现以下错误:
Signature retrieval for '49f1790399401343511188' failed
Unable to find a valid signature. Aborting.
process_message returned error -5. dropping message.
A: ID:wendyzh    MySQLUIDInSignature on //此项一定要打开

9、
Q: DSPAM举报功能 好像不起作用哦  我把一份邮件举报为垃圾邮件下次他会收到正常收件箱里去哦 是怎么会事? MAILDROP 我已经配置好了
A: ID:liushaobo   DSPAM默认要学习五次,才会识别,这是为了防止误判,可以通过修改 Feature tb=x   参数来改变次数,x 表示数字;

10、
Q:我要自己再训练如何操作呢?
A: ID:hzqbbc   在webmail点“这是垃圾邮件”、“这不是垃圾邮件”。(前提是spam_report.pl里指定的dspamc路径正确)或在dspam-web 都可以直接训练dspam的。
11、
Q: dspam-webui 中出现很多类型为resend的,这算什么呢?
A: ID:xueron   resend的出现是因为同一封邮件有多个收件人,但是dspam会分别为两个人扫描,因为可能启动用户级过滤的话,两个收件人的判断结果可能不一样。这个时候,就会出现resend的标记,因为邮件的msgid是一样的。
12、
Q:  内网邮件别名无法发送,全部收到退信说user unkown,bcc 时不会监控发出的邮件
A: ID:liushaobo   修改 main.cf 文件的 #receive_override_options = no_address_mappings
修改master.cf 文件中的 -o receive_override_options=no_address_mappings,no_unknown_recipient_checks,no_header_body_checks
13、
Q:  每封邮件,不管正常或者是垃圾邮件用都有!DSPAM:1,49179586289971925617086!  的标识,现在想去掉。在mysql做了把用户的signature 置空也不行,在dspam.conf设置把相关项关掉也没有成功。
A: ID:zhanghuiwo   Preference "signatureLocation=message"  改为headers
14、
Q: dspam-web 不能生成图形
A: ID:liushaobo  请安装dspam-web 需要用到的Perl图形模块: perl-GD、perl-GDGraph、perl-GDTextUtil、perl-GD-Graph3d
15、
Q: Dspam出现以下日志 :
Jun 23 16:19:28 localhost dspam[4642]: Unable to determine the destination user
A: ID:hzqbbc  dspam没有设定 --user  参数
16、
Q: 请问Dspam的数据库是否一定要安装?hashdb是数据库吗?
A: ID:xueron   hashdb是内建默认的数据库,用户量小的话,用它很好,速度快。用户量多的话,建议使用mysql
17、
Q: 能不能让dspam只学习一次,就能作用于服务器上面的全部用户呢?
A: ID:xueron   当作全局过滤使用,--user 这个地方可以指定为一个固定的虚拟帐号,并且学习的时候都用这个虚拟帐号学习。
18、
Q: 如何导出我用dspam训练好的数据库?
A: ID:liushaobo   导出mysqldspam库就可以了,如果还要history的话,把 dspam  的data目录也备份
19、
Q: Dspam工作正常的情况下,Internet 邮件头没有发现类似X-DSPAM-*的标记
A: ID:liushaobo   如果按照《Dspam-Amavisd-SpamAssassin-Clamav for EMOS》的设置,因为Dspam对本地网络不过滤,最好从Internet发一封信测试;
20、
Q: 《Dspam-Amavisd-SpamAssassin-Clamav for EMOS》这篇文章的10024、10025、10028这三个端口的作用是什么?
A: ID:hzqbbc     ctfilter(10028) dspam ==> 10024 amavisd ==> 10025 (smtpd)
21、
Q: 《Dspam-Amavisd-SpamAssassin-Clamav for EMOS》这篇文章,复制 dspam.pm 模块,提示找不到/usr/lib/perl5/vendor_perl/5.8.5/Mail/SpamAssassin/Plugin路径。
A: ID:liushaobo   EMOS里SA的Plugin路径和你自己的SA的Plugin路径不一样;要自己找一下路径了;或者用EMOS里面的rpm包;
22、
Q: 一个用户发同一封信到a<at>domain和b<at>domain,dspam 给出2种不同的判断结果,<at>domain把信当成是(X-DSPAM-Result: spam)垃圾邮件,b<at>domain把信当成(X-DSPAM-Result: Innocent)正常邮件。
A: ID:xueron   在dspam.conf中新增IgnoreHeader To参数,忽略邮件的一些标题。
23、
Q: Dspam 源代码编译后,无法生成 libmysql_drv.so 文件
A: ID:liushaobo   dspam的drv分两种,一是静态库,二是动态库,官方的dspam的drv是动态加载的,编译时指定两个mysql_drv 。用逗号隔开。动态库可以在dspam.conf中指定  mysql_drv,pgsql_drv,sqlite_drv,sqlite3_drv,hash_drv,
24、
Q: Dspam的history里面还能保留更多的记录吗?
A: ID:zhaodongxi   修改configure.pl文件的$CONFIG{'HISTORY_SIZE'} = number

2012年10月25日 星期四

修改mysql密码

1.使用mysqladmin修改mysql密码
C:\>mysqladmin -udbuser -p password newpass
Enter password: oldpass
当然用此命令的前提是你把mysql加入了环境变量,如果没有加入环境变量的话那只能在命令行下cd到mysqladmin所在的目录下与此那个次命令了!
-----------------------------------------
2.重置root密码
方法一:
在my.ini的[mysqld]字段加入:
skip-grant-tables
重启mysql服务,这时的mysql不需要密码即可登录数据库
然后进入mysql
mysql>use mysql;
mysql>update user set password=password('新密码') WHERE User='root';
mysql>flush privileges;
运行之后最后去掉my.ini中的skip-grant-tables,重启mysqld即可。
修改mysql密码方法二:
不使用修改my.ini重启服务的方法,通过非服务方式加skip-grant-tables运行mysql来修改mysql密码
停止mysql服务
打开命令行窗口,在bin目录下使用mysqld-nt.exe启动,即在命令行窗口执行: mysqld-nt --skip-grant-tables
然后另外打开一个命令行窗口,登录mysql,此时无需输入mysql密码即可进入。
按以上方法修改好密码后,关闭命令行运行mysql的那个窗口,此时即关闭了mysql,如果发现mysql仍在运行的话可以结束掉对应进程来关闭。
启动mysql服务

在CSS中 ID与Class的区别

id与class
class的主要功能,用来对对象的样式设置,id除了可以定义样式之外,还可以成为网站交互行为一个特使标识。
id名字在每个页面中只能允许出现一次。
何时使用id:
1.样式只使用一次
2.用于对页面的区域进行标识
何时使用class
1.同一页面中出现多次
2.通用及经常使用的元素
3.class高级使用技巧-同事使用多个类
<p class="content red newsblock">hello</p>

div与span
div对象的默认显示模式display:block; span对象默认显示模式display:inline;
div对象的任务是呈现一个块状内容; span对行内元素进行结构编码以方便样式设计

rpc.statd端口及进程的处理

最近linux系统安全加固,一些漏洞修复经验和大家分享一下!
RPC Statd 服务  RPC类    危险级别:::高 
发现主机##########################################################
漏洞编号
漏洞分类RPC类
危险级别  高 
影响平台AIX IRIX DG/UX HPUX: 9.x, HPUX: 10.x NEC EWS-UX/V,NEC UP-UX/V,NEC UX/4800, NeXT STEP NCR  linux
详细描述:
  远程rpc.lockd 文件可能提供假的信息给rpc.statd 文件,使文件可以被移动或新建。RPC statd 与RPC lockd 一起工作维护状态信息,来提供跨NKS文件锁定的崩溃及恢
复功能。因为statd不验证从远程lockd 收到的信息,所以攻击者可以发送RPC去建立或取消系统上任何文件。
修补建议 建议您采取以下措施进行修补以降低威胁: 请用户联系供应商或他们的网站,索取补丁或参考供应商的指示。选定以下的操作系统:
1.Hewlett-Packard: 安装补丁前,请阅读Security Advisory HPSBUX9607-032 "Security Vulnerability in rpc.pcnfsd & rpc.statd." 输入patch Ids 作为搜索
字串及点击Search Technical Knowledge Base 链接,就可以看到这篇文章。The HP Patch Database 不需要付费口令。网址:http://us-
support.external.hp.com/wpsl/bin/doc.pl/.
登录后,到Individual Patches (Patch Database) 的库,搜索符合你漏洞版本的HP-UX 扑丁。
2.IBM 的补丁网址:http://aix.boulder.ibm.com/aix.us/aixfixes.
输入APAR 号,就可以得到有关资料及补丁。
3.Sony: NEWS-OS Patch Ids: 0124, 6063, 6176, 及6207.
4.NEWS-OS 补丁的网址:ftp://ftp1.sony.co.jp/pub/patch/news-os/un-official.
5.DEC (Digital Equipment Corporation): Ultrix ECO ID#: SSRT03901;OSF/1 ECO ID#: SSRT038301 网址 :
http://www.service.digital.com/html/patch_service.html
6.SunOS 补丁的网址:http://sunsolve.sun.com/sunsolve/pubpatches/patches.html.
7.Silicon Graphics:之前的版本升级到IRIX 5.3;之后的版本使用SGI Security Advisory描述的修复方法。安装补丁前,请阅读SGI Security Advisory 19971201-01-
P: "Buffer Overrun Vulnerability in statd(1M) Program" 网址:ftp://sgigate.sgi.com/security/19971201-01-P1391.SGI
补丁的网址:http://www.sgi.com/Support/security/security.html.
以前的版本一定要升级或采用“安全建议”给出的暂时修复方法,专为IRIX 5.3 平台的补丁在网址:ftp://sgigate.sgi.com/patches/5.3/patch1391.tar
8.linux平台: 联系系统厂商获取最新版本。 www.2cto.com
#########################################################################
我的修复之旅!
如果你的系统没有使用NFS服务就关掉rpc.statd服务,下面说一下,RPC的作用和如何关闭!
CentOS使用核心级的支持和守护进程的组合来提供NFS文件共享.NFS依靠远程过程调用(RPC)在客户端和服务器端路由请求。而在Linux下RPC服务由portmap服务控制。为了能够正常
使用NFS,还需要一些相关的服务来协同工作:
nfs:启动相应RPC服务进程来服务对于NFS文件系统的请求。
nfslock:一个可选的服务,用于启动相应的RPC进程,允许NFS客户端在服务器上对文件加锁。
portmap:Linux的RPC服务,它响应RPC服务的请求和与请求的RPC服务建立连接。
下面的RPC后台进程是为NFS提供服务的
rpc.mountd:这个进程接受来自NFS客户端的加载请求和验证请求的文件系统正在被输出。这个进程由NFS服务自动启动,不需要用户的配置。
rpc.nfsd:这个进程是NFS服务器.它和Linux核心一起工作来满足NFS客户端的动态需求,例如提供为每个NFS客户端的每次请求服务器线程。这个进程对应于nfs服务。
rpc.lockd:一个可选的进程,它允许NFS客户端在服务器上对文件加锁。这个进程对应于nfslock服务。
rpc.statd:这个进程实现了网络状态监控(NSM)RPC协议,通知NFS客户端什么时候一个NFS服务器非正常重启动。这个进程被nfslock服务自动启动。不需要用户的配置。
rpc.rquotad:这个进程对于远程用户提供用户配额信息。这个进程被nfs服务自动启动,不需要用户的配置。
所以说,要想关掉CentOS的rpc.statd服务,我们只需要执行下面的命令就能搞定
rpcgssd, rpcidmapd, rpcsvcgssd
用于NFS v4。除非你需要或使用NFS v4,否则关闭它。
具体操作如下:
1停服务
service nfslock stop
service portmap stop
/etc/init.d/rpcgssd stop
/etc/init.d/rpcidmapd stop
/etc/init.d/rpcsvcgssd stop
2禁止开机启动
chkconfig nfslock off
chkconfig portmap off
chkconfig  rpcgssd off
chkconfig  rpcidmapd off
chkconfig  rpcsvcgssd off
3查看状态
/etc/init.d/nfslock status
/etc/init.d/portmap status
/etc/init.d/rpcgssd status
/etc/init.d/rpcidmapd status
/etc/init.d/rpcsvcgssd status

2012年10月19日 星期五

不同网段之间的nfs以及rsync

一共3台linux,如:HostA,HostB,HostC,其中,a与C不能互访,且三台主机都有各自的网段但都是10开头的网段

A:10.2.3.10

B:10.29.33.2

C:10.4.3.90

B可以访问A和C,所以试想将a和c主机通过b主机来进行同步,将要同步的目录使用nfs同时挂载到B主机上,而后再用rsync来进行同步

挂载时遇到问题时nfs不能挂载

/doc (rw,sync,no_root_squash,no_all_squash,insecure)
使用这样配置,任何主机都可挂载只适用临时的挂载,工作完成后即时的去掉共享

rsync的使用看前几篇

2012年10月18日 星期四

rsync 工具介绍及配置

rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。它的特性如下:

  可以镜像保存整个目录树和文件系统。

  可以很容易做到保持原来文件的权限、时间、软硬链接等等。

  无须特殊权限即可安装。

  优化的流程,文件传输效率高。

  可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。

  支持匿名传输,以方便进行网站镜象。

  软件下载

  rsync的主页地址为:http://rsync.samba.org/

rsync配置文件配置格式

name = value

rsync配置参数:

[Global parameters]

motd file:  指定一个关于网站的信息和法律公告信息的文件

pid file:  rsync daemon的进程IP文件

port:  rsync daemon 的缺省端口号:873,当rsync运行在xinetd模式下则端口被忽略

address: rsync daemon监听的IP,当rsync运行在xinetd模式下则IP被忽略

socket:rsync daemon的socket文件

[module parameters]

comment:模块的描述性说明

path:指定同步的文件目录

use chroot:如果"use chroot"指定为true,那么rsync在传输文件以前首先chroot到path参数所指定的目  录下。这样做的原因是实现额外的安全防护,但是缺点是需要以roots权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true。

numeric ids

munge symlinks

charset

max connections:指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。默认值是0,也就是没有限制。

log file:指定rsync的日志文件

syslog facility:是否使用系统日志工具。可以有如下选项:

auth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, syslog, user, uucp, local0, local1, local2, local3, local4, local5, local6 and local7. The default is daemon.

max verbosity

lock file:指定支持max connections参数的锁文件

read only:该选项设定是否允许客户上载文件。如果为true那么任何上载请求都会失败,如果为false并且服务器目录读写权限允许那么上载是允许的。默认值为true。

write only:该选项设定是否允许客户下载文件。如果为true那么任何下载请求都会失败,如果为false并且服务器目录读写权限允许那么下载是允许的。默认值为true。

list:该选项设定当客户请求可以使用的模块列表时,该模块是否应该被列出。如果设置该选项为false,可以创建隐藏的模块。默认值是true。

uid:指定传送数据的帐号,仅仅用于指定模块。默认是:-2 ,即Nobody 帐号.

gid:指定传送数据的帐号组,仅仅用于指定模块。默认是:-2 ,即Nobody 组.

fake super

filter

exclude:用来指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到exclude列表中。这等同于在客户端命令中使用--exclude来指定模式,一个模块只能指定一个exclude选项。但是需要注意的一点是该选项有一定的安全性问题,客户很有可能绕过exclude列表,如果希望确保特定的文件不能被访问,那就最好结合uid/gid选项一起使用。

include:用来指定不排除符合要求的文件或目录。这等同于在客户端命令中使用--include来指定模式,结合include和exclude可以定义复杂的exclude/include规则。

exclude from:指定一个包含exclude模式的定义的文件名,服务器从该文件中读取exclude列表定义。

include from:指定一个包含include模式的定义的文件名,服务器从该文件中读取include列表定义。

incoming chmod:

outgoing chmod

auth users:设置连接指定模块的授权用户名。

secrets file:密码认证文件,格式为:username:password

strict modes:该选项指定是否监测密码文件的权限,如果该选项值为true那么密码文件只能被rsync服务器运行身份的用户访问,其他任何用户不可以访问该文件。默认值为true。

hosts allow:该选项指定哪些IP的客户允许连接该模块。客户模式定义可以是以下形式:
单个IP地址,例如:192.167.1.1整个网段,例如:192.168.1.0/24,也可以是192.168.1.0/255.255.255.0多个IP或网段需要用空格隔开,“*”则表示所有,默认是允许所有主机连接。

hosts deny:指定不允许连接rsync服务器的机器,可以使用hosts allow的定义方式来进行定义。默认是没有hosts deny定义。

ignore errors:指定rsyncd在判断是否运行传输时的删除操作时忽略server上的IO错误,一般来说rsync在出现IO错误时将将跳过--delete操作,以防止因为暂时的资源不足或其它IO错误导致的严重问题。

ignore nonreadable:指定rysnc服务器完全忽略那些用户没有访问权限的文件。这对于在需要备份的目录中有些文件是不应该被备份者得到的情况是有意义的。

transfer logging:使rsync服务器使用ftp格式的文件来记录下载和上载操作在自己单独的日志中。

log format:通过该选项用户在使用transfer logging可以自己定制日志文件的字段。

#The single-character escapes that are understood are as follows:

#%a the remote IP address

#%b the number of bytes actually transferred

#%B the permission bits of the file (e.g. rwxrwxrwt)

#%c the total size of the block checksums received for the basis file (only when sending)

#%f the filename (long form on sender; no trailing "/")

#%G the gid of the file (decimal) or "DEFAULT"

#%h the remote host name

#%i an itemized list of what is being updated

#%l the length of the file in bytes

#%L the string " -> SYMLINK", " => HARDLINK", or "" (where SYMLINK or HARDLINK is a filename)

#%m the module name

#%M the last-modified time of the file

#%n the filename (short form; trailing "/" on dir)

#%o the operation, which is "send", "recv", or "del." (the latter includes the trailing period)

#%p the process ID of this rsync session

#%P the module path

#%t the current date time

#%u the authenticated username or an empty string

#%U the uid of the file (decimal)

#For a list of what the characters mean that are output by "%i", see the --itemize-changes option in the rsync manpage.

timeout:该选项可以覆盖客户指定的IP超时时间。通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户端。超时单位为秒钟,0表示没有超时定义,这也是默认值。对于匿名rsync服务器来说,一个理想的数字是600。

refuse options:通过该选项可以定义一些不允许客户对该模块使用的命令参数列表。这里必须使用命令全名,而不能是简称。但发生拒绝某个命令的情况时服务器将报告错误信息然后退出。如果要防止使用压缩,应该是:"dont compress = *"。

dont compress:指定那些不进行压缩处理再传输的文件,默认值是*.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

以上为rsync 官方的关于rsync配置文件中的所有配置选项。中文是我自己翻译解释的,有些选项还没翻译解释,主要是因为还没有完全理解透彻官方的英文解释。

rsync的使用方法:

Local:  rsync [OPTION...] SRC... [DEST]

Access via remote shell:

  Pull(拉): rsync [OPTION...] [USER@]HOST:SRC... [DEST]

  Push(推): rsync [OPTION...] SRC... [USER@]HOST:DEST

Access via rsync daemon:

  Pull(拉): rsync [OPTION...] [USER@]HOST::SRC... [DEST]

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

  Push(推): rsync [OPTION...] SRC... [USER@]HOST::DEST

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

“拉”复制是指从远程主机复制文件到本地主机

“推”复制是指从本地主机复制文件到远程主机

相关命令参数:

rsync参数的具体解释如下:

官方的英文解释:http://rsync.samba.org/ftp/rsync/rsync.html

-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 指定使用rsh、ssh方式进行数据同步

--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息

-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件

--existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件

--delete 删除那些DST中SRC没有的文件

--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 显示帮助信息

rsync实例配置

系统环境:RHEL5.5

软件版本:rsync-3.0.8.tar.gz

安装说明:需在两台server上都安装

rsync 安装配置参数:

1.先建立个同步数据的帐号

groupadd rsync

useradd -g rsync -s /sbin/nologin -d /dev/null rsync

passwd rsync

2.配置

./configure --prefix=/usr/local/rsync --with-rsyncd-conf=/usr/local/rsync/etc --with-nobody-group=rsync

make && make install

3.建立rsync的配置文件rsyncd.conf

因为configure的时候指定了config的文件路径在/usr/local/rsync/etc 下面,因此需要在此目录下建立配置文件

cd /usr/local/rsync

mkdir etc

cd etc

touch rsyncd.conf

配置文件的配置项根据实际需要配置,我的配置文件如下:

  1. motd file = /usr/local/rsync/etc/rsyncd.motd /*当你登录到服务器上显示的一些信息*/
  2. pid file = /usr/local/rsync/pid/rsyncd.pid
  3. port = 873
  4. address = 192.168.200.133
  5. socket options = /usr/local/rsync/socket/rsyncd.socket
  6. [soft]  /*定义要同步的模块,自己随便定义*/
  7. comment = this is a software reposity /*模块的说明信息*/
  8. path = /soft /*模块的路径*/
  9. use chroot = false
  10. #numeric ids
  11. #munge symlinks
  12. #charset
  13. max connections = 0 /*最大连接数,0表示无限制*/
  14. log file = /usr/local/rsync/log/rsyncd.log /*数据同步日志*/
  15. syslog facility = syslog /*系统日志工具,也可以不定义*/
  16. #max verbosity
  17. lock file = /usr/local/rsync/lock/rsyncd.lock /*锁文件,与最大连接数配合,若超过最大连接数,则锁定相应的模块*/
  18. read only = true
  19. write only = false
  20. list = false
  21. uid = rsync /*同步用的帐号,此账户对模块要有相应的权限*/
  22. gid = rsync /*同步用的帐号组*/
  23. #fake super
  24. #filter
  25. #exclude
  26. #include
  27. #exclude from
  28. #include from
  29. #incoming chmod
  30. #outgoing chmod
  31. auth users = rsync /*授权的帐号,对要同步的模块有相应的权限*/
  32. secrets file = /usr/local/rsync/secrets/rsyncd.secrets /*同步帐号的密码文件*/
  33. strict modes = true /*使用限制模式*/
  34. #hosts allow
  35. #hosts deny
  36. ignore errors = true
  37. ignore nonreadable = false
  38. transfer logging = true /*对传输数据进行日志记录*/
  39. log format = %a-%b-%f-%m-%o-%P-%t-%u /*日志格式*/
  40. timeout = 600 /*传输数据超时时间*/
  41. #refuse options
  42. dont compress = true
  43. #pre-xfer exec
  44. #post-xfer exec

rsync服务器启动

--daemon 是让rsync 以服务器模式运行

/usr/local/rsync/bin --daemon --config=/usr/local/rsync/etc/rsyncd.conf

rsync服务器和防火墙

iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT

根据以上的配置文件:/usr/local/rsync目录下应该有如下相关目录:

这是top图上服务器上rsync 配置

至于top图上的客户端rsync,因为我做的单项同步,也就从服务器上复制到客户端上,因此客户端只需要安装rsync,不需要配置。

在客户端上执行如下:

我将服务器端的soft模块复制到本地客户端的/soft目录下

输入同步帐号rsync的密码,就开始同步:

sent 130661 bytes  received 250703289 bytes  2099028.87 bytes/sec

total size is 445934450  speedup is 1.78

有两个文件因为没有权限所以提示“permission denied”,

总之,就是大家在设置的时候注意要同步的目录的权限设置!

主要参数范例:

--delete
假如server端有:a , b , c ,三个文件,
client端有:a , b , c , d ,四个文件,使用如下命令:

./rsync -avz --progress --delete rsync@192.168.200.133::soft /soft

将删除client 中的d 文件,其他保持不变。

恢复数据,从client 恢复数据到server端

1.需要在服务器关闭 read only
read only = false ,即开启上传功能

./rsync -avz --progress /soft rsync@192.168.200.133::soft

把client 端/soft 目录中的数据上传到server 192.168.200.133 中的 soft 模块

根据我的配置,服务器上的日志会记录同步的每一个数据,目录,很详细的日志,不过越详细的日志就越大!

大家自己试试看!!