2013年4月11日星期四

在Linux下查看端口的使用情况及启动


   Netstat -tln 命令是用来查看linux的端口使用情况
 
  /etc/init.d/vsftp start 是用来启动ftp端口~!
 
  看文件/etc/services
 
  netstat
 
  查看已经连接的服务端口(ESTABLISHED)
 
  netstat -a
 
  查看所有的服务端口(LISTEN,ESTABLISHED)
 
  sudo netstat -ap
 
  查看所有的服务端口并显示对应的服务程序名
 
  nmap <扫描类型><扫描参数>
 
  例如:
 
  nmap localhost
 
  nmap -p 1024-65535 localhost
 
  nmap -PT 192.168.1.127-245
 
  当我们使用 netstat -apn 查看网络连接的时候,会发现很多类似下面的内容:
 
  Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
 
  tcp 0 52 218.104.81.152:7710 211.100.39.250:29488 ESTABLISHED 6111/1
 
  显示这台服务器开放了7710端口,那么这个端口属于哪个程序呢?我们可以使用 lsof -i :7710 命令来查询:
 
  COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
 
  sshd 1990 root 3u IPv4 4836 TCP *:7710 (LISTEN)
 
  这样,我们就知道了7710端口是属于sshd程序的。

CentOS 6.4正式发布,可下载

CentOS 是一个基于Red Hat Linux 提供的可自由使用源代码的企业级 Linux发行版本。相对于其他Linux发行版,其稳定性值得信赖。昨日,CentOS 6.4正式发布,一起来看看CentOS 6.4的重大改进。

CentOS是一个企业级的Linux发行版本,它源于上游操作系统提供者(UOP)免费公开的源代码。昨日,CentOS 6.4正式发布,带来了诸多改进,下面具体来看一下。
CentOS 6.4正式发布!
CentOS 6.4重大改进:
——增加微软Hyper-V驱动,在微软Hyper-V服务器上,CentOS作为虚拟机可以更加高效;
——samba4库升级至最新版本,完善了与Active Directory(AD)域名的交互。如果你从CentOS 6.3升级至CentOS 6.4,而且已经在使用Samba,那么首先要确保卸载samba4包,以避免在升级中造成冲突。
——弃用matahari。CentOS 6.4最新升级需要删除所有matahari,为确保已删除所有残留,在更新至6.4后请运行yum erase matahari*。
——i386架构新增了dev86、iasl和qemu-guest-agent。
CentOS 6.4修改了大量组件:
abrt
anaconda
dhcp
fake-provides
firefox
gnome-applets
gnome-desktop
httpd
initscripts
kabi-whitelists
kabi-yum-plugins
kde-settings
kernel
libreport
librsvg2
luci
ntp
openssl098e
plymouth
redhat-bookmarks
redhat-logos
redhat-lsb
report
sos
system-config-date
thunderbird
virt-p2v
virt-who
xorg-x11-server
xulrunner
yum
CentOS 6.4下载(网易镜像):http://mirrors.163.com/centos/6.4/isos/
官方下载页面:http://wiki.centos.org/Download

Linux CentOS上安装XEN及虚拟机


CentOS XEN是目前Linux上的最佳的虚拟化解决方案,特别适合于服务器应用,如用于将多个服务器合并到一台物理服务器上,以节省运营成本(机房空间、电力消耗);或者是出于安全角度的考虑,需要将不同的应用进行分区,以便降低安全风险等。
名词:
完全虚拟化(Full Virtualization):full virtualized
半虚拟化(Para Virtualization):paravirtualized
查看CPU对虚拟化的支持程度:
Intel和AMD的半虚拟化支持标识 - PAE
# cat /proc/cpuinfo | grep flags
flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss nx constant_tsc pni ssse3
Intel全虚拟化支持标识 - VMX
# cat /proc/cpuinfo | grep flags
flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc up pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm
AMD全虚拟化支持标识 - SVM
# cat /proc/cpuinfo | grep flags
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8legacy 3dnowprefetch ts fid vid ttp tm stc 100mhzsteps
XEN的运行环境: Domain-0与Domain-U
Domain-0即虚拟母机或称为宿主机,与Linux主机为同一系统,以XEN的Linux内核启动的主机,负责管理和控制客户机。
Domain-U即虚拟客户机或称VPS,在Domain-0上可以建立多个虚拟客户机。
Domain-0与Domain-U的区别就是Domain-0是虚拟机,Domain-U是虚拟机上的操作系统。用过Windows上VMWare的可以把Domain-0理解为VMWare软件,Domain-U则是运行在VMWare上的操作系统。
XEN的运行方式:
XEN分成多个层级 (layer) 执行。它将Linux的核心修改后,再使用修改过的核心开机,而开机后先载入XEN的监控器 (Hypervisor) , 并且启动第一个操作系统,称为domain-0。在Xen上面所谓的一个domain就是指一个虚拟机。
Domain-0之所以要先被载入是因为Domain-0含有其他虚拟机启动所必须的控制指令,并且domain-0也是控制虚拟装置的重要主控系 统。在domain-0上最重要的就是一个xend的常住进程,其他的domain都是由这个xend来管理的。至於命名方面,除了domain-0之外 的其他虚拟机就依序被称为domain-1, domain-2等等, 我们统称为domain-U。
Domain-0是很重要的,因为它直接控制Xen的监控器(Hypervisor),而且掌握了真实的Linux驱动程序 (drivers)。而其他的虚拟机(domain-U)则是透过Xen监控器来与真实的硬件以及domain-0进行交互。为了让domain-0能够 与Xen结合,我们必须要修改domain-0的核心才能顺利运行。并且需要使用domain-0的核心来开机才可以。domain-0是所有虚拟机的基 础,所以它可以尽量简洁,其他的个别服务则可以放置到不同的domain中。
xend可以管理domain-0与其他domain之间的启动与交互,提供一个终端控制 (console) 界面来让 domain-0 登入其他的 domain。

NX Server相关问题


NX> 203 NXSSH running with pid: 13191
NX> 285 Enabling check on switch command
NX> 285 Enabling skip of SSH config files
NX> 285 Setting the preferred NX options
NX> 200 Connected to address: x.x.x.x: 22
NX> 202 Authenticating user: nx
NX> 204 Authentication failed.
nx server是读取如下目录的文件

/var/lib/nxserver/home/.ssh/client.id_dsa.key

非/etc/nxserver/client.id_dsa.key。
http://hi.baidu.com/he1a4428003ea4/blog/item/c516aba3817f60e89052ee84.html
Linux世界的远程桌面方案有:直接设置DISPLAY环境变量、VNC、NX。以NX性能最好。Linux上的NX server有两个选择:商业版(nomachine.com)和free版()。
NX 安装过程参考: http://wiki.centos.org/HowTos/FreeNX, http://blog.csdn.net/shuxiaotu/article/details/5675482, http://openfacts2.berlios.de/wikien/index.php/BerliosProject:FreeNX_- _FAQ/General。
现象1:我在一台CentOS 5机器上安装了nx server, PC机安装了nx client可以连接上。后来不知为何,认证成功,但是download session information时失败,通常给一个错误号,让你去看/var/log/messages。
分析与解决办法:nx client的错误消息提示查看server端系统日志。server上的/var/log/messages有如下信息:
Oct 19 20:33:03 platbuild NXNODE-3.5.0-3[2251]: ERROR: NX> 596 /usr/bin/xauth: /home/zhichyu/.nx/C-platbuild-1003-85DD9132B32309064906E8090162CE6F/scripts/authority:3: bad display name "platbuild:1003" in "add" command [e3B8855] Logger::log nxnode 2963
这说明hostname修改不彻底导致"platbuild:1003"不能被识别为有效DISPLAY值。
在/etc/hosts添加如下行即可:
127.0.0.1 platbuild


现象2:使用nx认证失败:
NX> 203 NXSSH running with pid: 3164
NX> 285 Enabling check on switch command
NX> 285 Enabling skip of SSH config files
NX> 285 Setting the preferred NX options
NX> 200 Connected to address: xx.xx.xx.xx on port: 22
NX> 202 Authenticating user: nx
NX> 208 Using auth method: publickey
NX> 204 Authentication failed.


分析与解决办法:
(1) 在NX client GUI上,点击"Key...",删除框内文本,将nx server上的/etc/nxserver/client.id_dsa.key文件内容粘贴在那里,保存。如果这招不灵,还有下面一招。
(2) nx server的认证有多种模式。默认设置时,整个认证过程是两次SSH认证。第一次是用户nx的DSA publickey方式认证;第二次以client GUI上填写的用户名和密码认证。
不想去修改nx server的配置文件。既然两次都是SSH认证,完全可以在SSH服务设置方面动脑筋。
在任意linux机器上以任意身份生成一个DSA密钥对id_dsa和id_dsa.pub。把id_dsa.pub内容追加到~nx/.ssh /authorized_keys。(从/etc/passwd可知~nx为/usr/NX/home/nx。.ssh目录下还有个 authorized_keys2可以删除,因为OpenSSH v3以上此文件过时了,统一使用authorized_keys。)从任意linux机器上验证以nx身份和刚才生成的id_dsa看能否登录:
zhichyu@w-shdc-zhichyu:~$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/zhichyu/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/zhichyu/.ssh/id_dsa.
Your public key has been saved in /home/zhichyu/.ssh/id_dsa.pub.
The key fingerprint is:
11:90:69:11:20:8c:79:d1:eb:d2:72:f2:61:bd:aa:3c zhichyu@w-shdc-zhichyu


zhichyu@w-shdc-zhichyu:~$ $ ssh -i id_dsa -o PreferredAuthentications=publickey nx@134.64.221.156
HELLO NXSERVER - Version 3.5.0-4 - LFE
NX> 105 quit
Quit
NX> 999 Bye.
Connection to 134.64.221.156 closed.


此步骤成功后,在NX client GUI上,点击"Key...",删除框内文本,将id_dsa文件内容粘贴在那里,保存。


现象3:有时候能成功连接,有时候出现下面的错误:
(1) Session restore failed.
NX> 596 Error: Session restore failed. Reason was: Session: Display failure detected at 'Sun Feb 19 10:50:25 2012'.
(2) Could not yet establish the connection to the remote proxy. Do you want to terminate the current session?
似乎Windows NX client和Linux NX client来回切换连接NX server,或者两个client上设置不一致(如"Disable encryption of all traffic")比较容易遇到此问题。
分析与解决办法:
多个client切换,实际上是同一个session,只是改变了X输出的目的地而已(所以看到的桌面状态完全相同)。出现以上问题时,杀掉这个session:
zhichyu@tyr:~> ps -elfgrep nxagent
0 S zhichyu 1328 1321 4 75 0 - 25322 - 11:13 ? 00:00:00 /usr/lib/NX/nxagent -persistent -D -name NX - zhichyu@tyr:1002 - tyr (GPL Edition) -option /home/zhichyu/.nx/C-tyr-1002-B71017897411DEEE87BB72C4FA4A46D9/options -nolisten tcp :1002
zhichyu@tyr:~> kill -9 1328
再用client连接,将创建新session。

Centos 安裝使用rsync 進行備份


一、前言
使用rsync可以進行FTP, SSH進行備份同步資料,安裝設定簡單,安全性都不錯。在centos中很多都已經配備了rsync,只需要進行簡單設定就可以使用。

以下進行舉例說明安裝設定方法

系統:centos 5.4

A為伺服器端(210.0.128.111)

B為備份主機(192.168.0.10)

A 需要備份的目錄為

/home/html/public_html (網頁資料夾)

/var/lib/mysql/home (數據庫資料夾)



備份端B 要進行設定以下項目:

建立備份的資料夾

設定/etc/xinetd.d/rsync

設定/etc/rsyncd.conf

設定密碼檔或public/privacy key



目標伺服器端A進行設定:

1.密碼檔/etc/rsyncd.conf

2.rsync指令

3.加入定期執行指令(crontab)



二、安裝方法

1. 在B為備份主機(192.168.0.10)建立備份資料夾,本例將資料備份在

網頁:/home/backup

數據庫 /var/lib/mysql/backup

這樣做原因是可以即時測試備份後的數據是否能正常運作,可以在伺服器中建立backup用戶和其數據庫backup



2.在B為備份主機(192.168.0.10) centos 中用以下指令

yum -y install rsync xinetd

系統會判斷是否已經安裝rsync 和 xinetd,

設定/etc/xinetd.d/rsync,將disable=yes 改為no,簡單設定如下

service rsync

{

disable = no

socket_type = stream

wait = no

user = root

server = /usr/bin/rsync

server_args = –daemon

log_on_failure += USERID

}

保存後執行service xinetd restart, 確保沒有錯誤



3.設定/etc/rsyncd.conf (不存在請自行創建)

根據以下範例創建



log file = /var/log/rsyncd.log #記錄檔

[webdata] #可以自行命名

path = /home/backup #備份主機B備份的目錄

auth users = backup #備份主機B 創建的用戶backup

uid = root #執行用戶

gid = root

secrets file = /etc/rsyncd.secrets #備份主機B中的密碼檔

read only = no #是否唯讀



[mysql] #可以自行命名

path = /var/lib/mysql/backup     #備份主機B備份的目錄

auth users = backup     #備份主機B 創建的用戶backup

uid = root #執行用戶

gid = root

secrets file = /etc/rsyncd.secrets     #備份主機B中的密碼檔

read only = no     #是否唯讀



4.設定密碼檔

vi /etc/rsyncd.secrets 密碼檔密碼格式:username:password 如下例:

backup:123pass

保存後,要確保密碼檔權限為root 擁有,因此執行以下指令

chown root:root /etc/rsyncd.secrets

chmod 600 /etc/rsyncd.secrets

完成後執行service xinetd restart



三、目標伺服器A設定

1.設定密碼檔

vi /etc/rsyncd.secrets ,輸入備份端B中用戶backup的密碼123pass,然後儲存

同樣執行指令

chown root:root /etc/rsyncd.secrets

chmod 600 /etc/rsyncd.secrets



2. 測試指令是否成功,輸入下指令

/usr/bin/rsync -vzrtopg –progress –delete –password-file=/etc/rsyncd.secrets /home/html/public_html/ backup@192.168.0.10::webdata



上面file後是密碼檔案,密碼檔案後是你想要備份的資料夾/home/html/public_html/

資料夾後,@前是用戶名,然後@後是備份伺服器B的ip地址,然後::後是備份伺服器B中rsyncd.conf設定檔的設定項目webdata

成功的話會提示:

Build file list…

(一些檔案名)

Send xxxx bytes received xxx bytes xxx bytes/sec

Total size is xxx speedup is xx.xxx

這樣就表示成功備份,可以到備份伺服器B上瀏覽一下資料是否已經複製過去了

3.設定cronab定期工作

可以用指令,假如有webmin可以在webmin中設定,建議凌晨時分進行

crontab -e0 0 * * * /usr/bin/rsync -vzrtopg –progress –delete –password-file=/etc/rsyncd.secrets /home/html/public_html/ backup@192.168.0.10::webdata

crontab -e0 0 * * * /usr/bin/rsync -vzrtopg –progress –delete –password-file=/etc/rsyncd.secrets /var/lib/mysql/home/ backup@192.168.0.10::mysql



完成,當然要注意本例只是用內部主機進行備份,假如是共同在線主機,要注意在防火牆設定rsync 端的連線範圍

以下是參考網址:

http://www.backup.idv.tw/good_doc/linux/backup/20030726/rsync.htm

public/privacy key

http://dz.adj.idv.tw/thread-48-1-4.html

詳細的設定:

http://fanqiang.chinaunix.net/a6/b7/20010908/1305001258_b.html

远程数据同步工具--Rsync的介绍与使用


目录:
一、什么是Rsync
二、Rsync同步算法
三、Rsync安装配置
(一)rsync的安装配置
1 rsync软件包的获取
2 rsync的安装
3 rsync的配置
(二)rsyncd.conf配置文件参数说明
1 全局参数
2 模块参数
(三)rsync常用命令
四、Rsync实例测试
(一)测试环境
(二)测试目的
(三)测试方式及测试结果
1 SSH方式
2 后台服务方式
3 使用crontab建立脚本 实现定期同步备份文件
4 与最佳搭档inotify的合作 实现实时触控式自动更新
5 使用inotify+rsync实现双向同步更新文件
(四)测试结果数据分析
1 测试目的
2 测试数据来源
3 测试结果数据(三次测试结果)
4 测试结果数据分析
五、问题排除及注意事项
附录一:源主机和备份服务器的配置文档
附录二:Rsync的INSTLL文档
附录三:Inotify的INSTALL文档
一、什么是Rsync
Rsync(remote synchronize),顾名思义,可以知道这是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
Rsync本来是用于替代rcp的一个工具,目前由rsync.samba.org维护,所以rsync.conf文件的格式类似于samba 的主配置文件。Rsync可以通过rsh或ssh使用,也能以daemon模式去运行,在以daemon方式运行时Rsync server会打开一个873端口,等待客户端去连接。连接时,Rsync server会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,以后则就只需进行增量备份。
Rsync支持大多数的类Unix系统,无论是Linux、Solaris还是BSD上都经过了良好的测试。此外,它在windows平台下也有相应的版本,如cwRsync和Sync2NAS等工具。
Rsync的基本特点如下:
1.可以镜像保存整个目录树和文件系统;
2.可以很容易做到保持原来文件的权限、时间、软硬链接等;
3.无须特殊权限即可安装;
4.优化的流程,文件传输效率高;
5.可以使用rsh、ssh等方式来传输文件,当然也可以通过直接的socket连接;
6.支持匿名传输。
二、Rsync同步算法
Rsync之所以同步文件的速度相当快,是因为“Rsync同步算法”能在很短的时间内计算出需要备份的数据,关于Rsync的同步算法描述如下:假定在1号和2号两台计算机之间同步相似的文件A与B,其中1号对文件A拥有访问权,2号对文件B拥有访问权。并且假定主机1号与2号之间的网络带宽很小。那么rsync算法将通过下面的五个步骤来完成:
1、2号将文件B分割成一组不重叠的固定大小为S字节的数据块,最后一块可能会比S 小
2、2号对每一个分割好的数据块执行两种校验:一种是32位的滚动弱校验,另一种是128位的MD4强校验
3、2号将这些校验结果发给1号
4、1号通过搜索文件A的所有大小为S的数据块(偏移量可以任选,不一定非要是S的倍数),来寻找与文件B的某一块有着相同的弱校验码和强校验码的数据块。这项工作可以借助滚动校验的特性很快完成
5、1号发给2号一串指令来生成文件A在2号上的备份。这里的每一条指令要么是对文件B经拥有某一个数据块而不须重传的证明,要么是一个数据块,这个数据块肯定是没有与文件B的任何一个数据块匹配上的
三、Rsync的安装配置
Rsync目前由rsync.samba.org维护,所以rsync.conf文件的格式类似于samba 的主配置文件,其主配置文件为rsyncd.conf。
(一)rsync的安装配置
1、rsync软件包的获取
rsync的主页地址为:http://rsync.samba.org/
最新版为rsync-3.0.8.tar.gz
下载到本地src文件夹:
[promise@bogon src]# wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.8.tar.gz
2、rsync的安装
解压:
[promise@bogon src]# tar -zxvf rsync-3.0.8.tar.gz
进入rsync-3.0.8文件夹:
[promise@bogon src]# cd rsync-3.0.8
切换到root权限:
[promise@bogon src]# su -
编译安装:
[root@bogon rsync-3.0.8]# ./configure –prefix=/usr
[root@bogon rsync-3.0.8]# make && make install
清理现场:
[root@bogon rsync-3.0.8]# make clean
3、rsync的配置
修改/etc/xinetd.d/rsync文件:
# default: off
# description: The rsync server is a good addition to an ftp server, as it \
#       allows crc checksumming etc.
service rsync
{
disable = yes
socket_type     = stream
wait            = no
user            = root
server          = /usr/bin/rsync
server_args     = –daemon
log_on_failure  += USERID
}
将 disable = yes
改为 disable = no
保存退出
(二)rsyncd.conf配置文件参数说明
1、全局参数
在文件中[module]之前的所有参数都是全局参数,当然也可以在全局参数部分定义模块参数,这时候该参数的值就是所有模块的默认值。
Port
指定后台程序使用的端口号,默认为873。
motd file
“motd file”参数用来指定一个消息文件,当客户连接服务器时该文件的内容显示给客户,默认是没有motd文件的。
log file
“log file”指定rsync的日志文件,而不将日志发送给syslog。比如可指定为“/var/log/rsyncd.log”。
pid file
指定rsync的pid文件,通常指定为“/var/run/rsyncd.pid”。
syslog facility
指定rsync发送日志消息给syslog时的消息级别,常见的消息级别是:uth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, sys-log, user, uucp, local0, local1, local2, local3,local4, local5, local6和local7。默认值是daemon。
2、模块参数
主要是定义服务器哪个目录要被同步。其格式必须为“[module]”形式,这个名字就是在rsync 客户端看到的名字,其实有点象Samba服务器提供的共享名。而服务器真正同步的数据是通过 path 来指定的。我们可以根据自己的需要,来指定多个模块,模块中可以定义以下参数:
comment
给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户。默认没有描述定义。
path
指定该模块的供备份的目录树路径,该参数是必须指定的。
use chroot
如果”use chroot”指定为true,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要以root权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true。
uid
该选项指定当该模块传输文件时守护进程应该具有的uid,配合gid选项使用可以确定哪些可以访问怎么样的文件权限,默认值是”nobody”。
gid
该选项指定当该模块传输文件时守护进程应该具有的gid。默认值为”nobody”。
max connections
指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。默认值是0,也就是没有限制。
list
该选项设定当客户请求可以使用的模块列表时,该模块是否应该被列出。如果设置该选项为false,可以创建隐藏的模块。默认值是true。
read only
该选项设定是否允许客户上载文件。如果为true那么任何上载请求都会失败,如果为false并且服务器目录读写权限允许那么上载是允许的。默认值为true。
exclude
用来指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到exclude列表中。这等同于在客户端命令中使用–exclude来指定模式,一个模块只能指定一个exclude选项。但是需要注意的一点是该选项有一定的安全性问题,客户很有可能绕过exclude列表,如果希望确保特定的文件不能被访问,那就最好结合uid/gid选项一起使用。
exclude from
指定一个包含exclude模式的定义的文件名,服务器从该文件中读取exclude列表定义。
include
用来指定不排除符合要求的文件或目录。这等同于在客户端命令中使用–include来指定模式,结合include和exclude可以定义复杂的exclude/include规则。
include from
指定一个包含include模式的定义的文件名,服务器从该文件中读取include列表定义。
auth users
该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。如果”auth users”被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的 challenge/response认证协议。用户的名和密码以明文方式存放在”secrets file”选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)。
secrets file
该选项指定一个包含定义用户名:密码对的文件。只有在”auth users”被定义时,该文件才有作用。文件每行包含一个username:passwd对。一般来说密码最好不要超过8个字符。没有默认的 secures file名,需要限式指定一个(例如:/etc/rsyncd.passwd)。注意:该文件的权限一定要是600,否则客户端将不能连接服务器。
strict modes
该选项指定是否监测密码文件的权限,如果该选项值为true那么密码文件只能被rsync服务器运行身份的用户访问,其他任何用户不可以访问该文件。默认值为true。
hosts allow
该选项指定哪些IP的客户允许连接该模块。客户模式定义可以是以下形式:单个IP地址,例如:172.16.10.16;整个网段,例如:172.16.10.0/24,也可以是172.16.0.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服务器完全忽略那些用户没有访问权限的文件。这对于在需要备份的目录中有些文件是不应该被备份者得到的情况是有意义的。
lock file
指定支持max connections参数的锁文件,默认值是/var/run/rsyncd.lock。
transfer logging
使rsync服务器使用ftp格式的文件来记录下载和上载操作在自己单独的日志中。
log format
通过该选项用户在使用transfer logging可以自己定制日志文件的字段。其格式是一个包含格式定义符的字符串,可以使用的格式定义符如下所示:
%h 远程主机名
%a 远程IP地址
%l 文件长度字符数
%p 该次rsync会话的进程id
%o 操作类型:”send”或”recv”
%f 文件名
%P 模块路径
%m 模块名
%t 当前时间
%u 认证的用户名(匿名时是null)
%b 实际传输的字节数
%c 当发送文件时,该字段记录该文件的校验码
默认log格式为:”%o %h [%a] %m (%u) %f %l”,一般来说,在每行的头上会添加”%t [%p] “。在源代码中同时发布有一个叫rsyncstats的perl脚本程序来统计这种格式的日志文件。
timeout
通过该选项可以覆盖客户指定的IP超时时间。通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户端。超时单位为秒钟,0表示没有超时定义,这也是默认值。对于匿名rsync服务器来说,一个理想的数字是600。
refuse options
通过该选项可以定义一些不允许客户对该模块使用的命令参数列表。这里必须使用命令全名,而不能是简称。但发生拒绝某个命令的情况时服务器将报告错误信息然后退出。如果要防止使用压缩,应该是:”dont compress = *”。
dont compress
用来指定那些不进行压缩处理再传输的文件,默认值是*.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
(三)rsync常用命令
在对rsync服务器配置结束以后,下一步就需要在客户端发出rsync命令来实现将服务器端的文件备份到客户端来。rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,下面就对它的选项一一进行分析说明。 Rsync的命令格式可以为以下六种:
  rsync [OPTION]… SRC DEST
  rsync [OPTION]… SRC [USER@]HOSTEST
  rsync [OPTION]… [USER@]HOST:SRC DEST
  rsync [OPTION]… [USER@]HOST::SRC DEST
  rsync [OPTION]… SRC [USER@]HOST:EST
  rsync [OPTION]… rsync://[USER@]HOST[ORT]/SRC [DEST]
  对应于以上六种命令格式,rsync有六种不同的工作模式:
  1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号”:“分隔符时就启动这种工作模式。如:rsync -a /data /backup
  2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号”:“分隔符时启动该模式。如:rsync -avz *.c foo:src
  3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号”:“分隔符时启动该模式。如:rsync -avz foo:src/bar /data
  4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::“分隔符时启动该模式。如:rsync -avroot@172.16.10.16::www /databack
  5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::“分隔符时启动该模式。如:rsync -av /databackroot@172.16.10.16::www
  6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://172.16.10.16/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 指定使用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实例测试
(一)测试环境:
两台主机H1和H2:
H1
系统 CentOS 5.5
主机名 promise
IP地址 172.16.10.189
要备份的目录 /home/promise/tarbak/
备份的路径 /home/www/
H2
系统 CentOS 5.5 x86_64
主机名 qqing
IP地址 172.16.10.3
要备份的目录 /home/bak/
备份的路径 /home/bakup
(二)测试目的:
分别采用SSH方式和后台服务方式同步文件,测试单向、双向文件同步功能,当文件夹或文件有更新(包括增加、删除、移动、新建等)时手动或者自动检测更新备份文件,并保持权限的一致性。
(三)测试方式及测试结果:
1、SSH方式(将H1中/home/promise/tarbak/的文件备份至H2的/home/bakup/)
1)在源主机(H1)上启动ssh服务:
[root@bogon ~]# /etc/init.d/sshd start
启动 sshd:                                                [确定]
2)在备份服务器(H2)上使用rsync备份(SSH方式是通过系统用户来进行备份的):
[root@bogon bakup]# rsync -avz –progress -e ssh –delete promise@172.16.10.189:/home/promise/tarbak/ /home/bakup
出现如下信息:
Address 172.16.10.189 maps to bogon, but this does not map back to the address – POSSIBLE BREAK-IN ATTEMPT!
promise@172.16.10.189′s password:
3)测试结果:
receiving incremental file list
./
Document.tar.gz
     3911680 100%   11.44MB/s    0:00:00 (xfer#1, to-check=8/10)
Document2.tar.gz
     4628480 100%    6.13MB/s    0:00:00 (xfer#2, to-check=7/10)
Document3.tar.gz
     4628480 100%    3.96MB/s    0:00:01 (xfer#3, to-check=6/10)
Images.tar.gz
      532480 100%    3.19MB/s    0:00:00 (xfer#4, to-check=5/10)
QuickSync.zip
      264979 100%    1.39MB/s    0:00:00 (xfer#5, to-check=4/10)
discuz.png
      502105 100%    2.12MB/s    0:00:00 (xfer#6, to-check=3/10)
inotify-tools-3.14.tar.gz
      358772 100%    1.34MB/s    0:00:00 (xfer#7, to-check=2/10)
rsync-3.0.8.tar.gz
      790722 100%    2.33MB/s    0:00:00 (xfer#8, to-check=1/10)
src.tar.gz
     4854407 100%    6.29MB/s    0:00:00 (xfer#9, to-check=0/10)
sent 185 bytes  received 20479655 bytes  718590.88 bytes/sec
total size is 20472105  speedup is 1.00
上面的信息描述了整个的备份过程,以及总共备份数据的大小。
2、后台服务方式(将H1中/home/promise/tarbak/的文件备份至H2的/home/bakup/)
1)启动rsync服务,然后编辑/etc/xinetd.d/rsync文件,将其中的disable=yes改为disable=no,并重启xinetd服务,如下:
[root@bogon ~]# vim /etc/xinetd.d/rsync
# vi /etc/xinetd.d/rsync
#default: off
# description: The rsync server is a good addition to an ftp server, as it \
#       allows crc checksumming etc.
service rsync
{
        disable = no
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = –daemon
        log_on_failure  += USERID
}
[root@bogon ~]# /etc/init.d/xinetd restart
停止 xinetd:                                              [确定]
启动 xinetd:                                              [确定]
2)创建配置文件,在安装好rsync程序后,并不会自动创建rsync的主配置文件,需要手工来创建,其主配置文件为rsyncd.conf
[root@bogon ~]# mkdir /etc/rsyncd  
//创建rsync的配置目录
[root@bogon ~]#
touch /etc/rsyncd/rsyncd.conf
//创建rsync的主配置文件
[root@bogon ~]# touch /etc/rsyncd/rsyncd.secrets
//创建rsync的密码文件
[root@bogon ~]#
chmod 600 /etc/rsyncd/rsyncd.secrets
//设置创建的密码文件权限为600
[root@bogon ~]# touch /etc/rsyncd/rsyncd.motd
//创建客户连接服务器时显示给客户的消息
rsyncd.conf内容如下:
[root@bogon ~]# vim /etc/rsyncd/rsyncd.conf
pid file = /var/run/rsyncd.pid  //运行rsync时进程ID文件
port = 873    //默认端口为873
address = 172.16.10.189   //把源主机(H1)的IP写进配置文件
uid = root    //传输文件时守护进程应该具有的uid
gid = root    //传输文件时守护进程应该具有的gid
use chroot = no    //不使用chroot功能
read only = no    //禁止只读功能
hosts allow = 172.16.10.1/255.255.255.0 //指定哪个网段允许连接
hosts deny = *    //除了指定的IP或网段以外禁止连接
max connections = 5   //设置最大并发连接数以保护服务器
motd file = /etc/rsyncd/rsyncd.motd //指定消息文件路径
log file = /var/log/rsync.log  //指定日志文件路径
log format = %t %a %m %f %b  //使用transfer logging时定制日志文件的字段
transfer logging = yes   //使用transfer logging功能
syslog facility = local3   //指定发送日志消息给syslog时的消息级别
timeout = 300    //设置覆盖客户指定的IP超时时间
[bakup]     //认证的模块名,在备份服务端需要指定
path = /home/bakup   //指定备份目录路径
list = yes    //允许列出客户请求时可以使用的模块列表
ignore errors    //指定rsyncd忽略在判断运行传输时的删除操作时源主面上的IO错误
auth users = promise   //设置允许连接的用户
secrets file = /etc/rsyncd/rsyncd.secrets //指定密码文件路径
comment = bakup web   //描述该模块
rsyncd.secrets内容如下:
[root@bogon ~]# vim /etc/rsyncd/rsyncd.secrets
qqing:qqing99
rsyncd.motd内容如下:
[root@bogon ~]# vim /etc/rsyncd/rsyncd.motd
Welcome to linuxrsync system!
3)以—daemon方式启动rsync服务
[root@bogon ~]# rsync –daemon –config=/etc/rsyncd/rsyncd.conf
4)完成以上工作,现在对数据进行备份:
[root@bogon bakup]# rsync -avz –progress –delete qqing@172.16.10.189::bakup /home/bakup/
出现如下信息:
Welcome to linuxrsync system!
Password:
5)测试结果:
receiving incremental file list
./
Document.tar.gz
     3911680 100%   11.51MB/s    0:00:00 (xfer#1, to-check=8/10)
Document2.tar.gz
     4628480 100%    6.14MB/s    0:00:00 (xfer#2, to-check=7/10)
Document3.tar.gz
     4628480 100%    3.97MB/s    0:00:01 (xfer#3, to-check=6/10)
Images.tar.gz
      532480 100%    3.21MB/s    0:00:00 (xfer#4, to-check=5/10)
QuickSync.zip
      264979 100%    1.40MB/s    0:00:00 (xfer#5, to-check=4/10)
discuz.png
      502105 100%    2.15MB/s    0:00:00 (xfer#6, to-check=3/10)
inotify-tools-3.14.tar.gz
      358772 100%    1.35MB/s    0:00:00 (xfer#7, to-check=2/10)
rsync-3.0.8.tar.gz
      790722 100%    2.35MB/s    0:00:00 (xfer#8, to-check=1/10)
src.tar.gz
     4854407 100%    6.30MB/s    0:00:00 (xfer#9, to-check=0/10)
sent 230 bytes  received 20479749 bytes  4551106.44 bytes/sec
total size is 20472105  speedup is 1.00
上面的信息描述了整个的备份过程,以及总共备份数据的大小。
6)恢复备份的内容,当服务器的数据出现问题时,那么这时就需要通过客户端的数据对服务端进行恢复,但前提是服务端允许客户端有写入权限,否则也不能在客户端直接对服务端进行恢复,使用rsync对数据进行恢复的方法如下:
[root@bogon bakup]# rsync -avz –progress /home/bakup/ qqing@172.16.10.189::bakup
出现如下信息:
Welcome to linuxrsync system!
Password:
输入密码,按Enter后看到整个恢复过程:
sending incremental file list
./
Document.tar.gz
     3911680 100%   30.07MB/s    0:00:00 (xfer#1, to-check=8/10)
Document2.tar.gz
     4628480 100%   13.84MB/s    0:00:00 (xfer#2, to-check=7/10)
Document3.tar.gz
     4628480 100%    9.33MB/s    0:00:00 (xfer#3, to-check=6/10)
Images.tar.gz
      532480 100%    1.01MB/s    0:00:00 (xfer#4, to-check=5/10)
QuickSync.zip
      264979 100%  507.39kB/s    0:00:00 (xfer#5, to-check=4/10)
discuz.png
      502105 100%  928.67kB/s    0:00:00 (xfer#6, to-check=3/10)
inotify-tools-3.14.tar.gz
      358772 100%  650.02kB/s    0:00:00 (xfer#7, to-check=2/10)
rsync-3.0.8.tar.gz
      790722 100%    1.31MB/s    0:00:00 (xfer#8, to-check=1/10)
src.tar.gz
     4854407 100%    6.15MB/s    0:00:00 (xfer#9, to-check=0/10)
sent 20479633 bytes  received 182 bytes  561090.82 bytes/sec
total size is 20472105  speedup is 1.00
7)创建用户密码验证文件,免去输入密码的麻烦
[root@bogon bakup]# vim /etc/rsyncd.pass
#密码验证文件
qqing99
保存退出
同样要设置密码验证文件的权限为600
[root@bogon bakup]# chmod 600 /etc/rsyncd.pass
进行备份,无需输入密码验证:
[root@bogon bakup]# rsync -avz –progress –delete –password-file=/etc/rsyncd.pass qqing@172.16.10.189::bakup/home/bakup/
出现如下信息:
Welcome to linuxrsync system!
receiving incremental file list
./
Document.tar.gz
     3911680 100%   11.44MB/s    0:00:00 (xfer#1, to-check=8/10)
Document2.tar.gz
     4628480 100%    6.13MB/s    0:00:00 (xfer#2, to-check=7/10)
Document3.tar.gz
     4628480 100%    3.97MB/s    0:00:01 (xfer#3, to-check=6/10)
Images.tar.gz
      532480 100%    3.19MB/s    0:00:00 (xfer#4, to-check=5/10)
QuickSync.zip
      264979 100%    1.39MB/s    0:00:00 (xfer#5, to-check=4/10)
discuz.png
      502105 100%    2.14MB/s    0:00:00 (xfer#6, to-check=3/10)
inotify-tools-3.14.tar.gz
      358772 100%    1.34MB/s    0:00:00 (xfer#7, to-check=2/10)
rsync-3.0.8.tar.gz
      790722 100%    2.34MB/s    0:00:00 (xfer#8, to-check=1/10)
src.tar.gz
     4854407 100%    6.29MB/s    0:00:00 (xfer#9, to-check=0/10)
sent 230 bytes  received 20479749 bytes  1638398.32 bytes/sec
total size is 20472105  speedup is 1.00
可见不再提示输入密码
3、使用crontab建立脚本,实现定期同步备份文件
[root@bogon bakup]# crontab -e
设置每隔5分钟自动同步备份:
*/5 * * * * rsync -avz –progress –delete –password-file=/etc/rsyncd.pass qqing@172.16.10.189::bakup /home/bakup/
4、与最佳搭档inotify的合作,实现实时触控式自动更新
Inotify的使用
查看是否支持inotify,从kernel 2.6.13开始正式并入内核,RHEL5已经支持。看看是否有 /proc/sys/fs/inotify/目录,以确定内核是否支持inotify
[root@bogon Rsync]# ll /proc/sys/fs/inotify
total 0
-rw-r–r– 1 root root 0 Oct  9 09:36 max_queued_events
-rw-r–r– 1 root root 0 Oct  9 09:36 max_user_instances
-rw-r–r– 1 root root 0 Oct  9 09:36 max_user_watches
1)获取Inotify:
[root@bogon]# wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
2)Inotify的安装:
[root@bogon]# cd inotify-tools-3.14
[root@bogon]# ./configure
[root@bogon]# make
[root@bogon]# make install
3)创建脚本文本:
[root@bogon]# cd /usr/local/sbin
[root@bogon]# touch rsync.sh
[root@bogon]# chmod a+x rsync.sh
[root@bogon]# vim rsync.sh
rsync.sh内容如下:
#!/bin/sh
src=/home/promise/bakup/  //需要备份的目录
des=bakup    //配置文件里的模块名
ip=172.16.10.3    //备份服务器的IP
user=promise
/usr/local/bin/inotifywait -mrq –timefmt ‘%d/%m/%y %H:%M’ –format  ‘%T %w%f’ -e modify,delete,create,attrib ${src} | while read file
        do
                 rsync -avz –delete –progress –password-file=/etc/rsyncd.pass ${src} [url=mailto%7Buser%7D@$%7Bip%7D:%7Bdes]${user}@${ip}:{des[/url]} &&
                 echo “${src} was rsynced”
                 echo “—————————————————–”
        done
注:–password-file存放用户${user}的密码
password-file的添加如下:密码与上文中的用户名对应于rsync.secrets文件中的用户名和密码。
[root@bogon bakup]# vim /etc/rsyncd.pass
[root@bogon bakup]# chmod 600 rsyncd.pass
[root@bogon bakup]# vim rsyncd.pass
#添加密码
qqing99
4)执行:
rsyncd.sh
PS:将rsync.sh添加到开机启动:
sed -i ‘$i \/usr/local/sbin/rsync.sh’ /etc/rc.local
5、使用inotify+rsync实现双向同步更新文件
网上有很多资料说rsync不能双向同步,其实,在两台主机上同时安装rsync和inotify,并按以上基础配置就可以实现双向同步更新备份文件。
(四)测试结果数据分析
1、测试目的
分析rsync在同步时加参数-z进行压缩时的压缩比例
2、测试数据来源
1)源主机(H1)上的sof.tar压缩文件包
详细资料:
[root@bogon www]# ls -al sof.tar
-rw-r–r– 1 root root 498739200 04-19 14:24 sof.tar
[root@bogon www]# ls -hl sof.tar
-rw-r–r– 1 root root 476M 04-19 14:24 sof.tar
2)通过实时触控式(inotify+rsync)同步更新,将源主机(H1)上的sof.tar同步备份到备份服务器(H2)上
3、测试结果数据(三次测试结果)
第一次测试结果:
不加参数-z(即不进行压缩同步)
[root@bogon sbin]# rsync.sh
Welcome to linuxrsync system!
building file list …
4 files to consider
./
sof.tar
   498739200 100%    7.87MB/s    0:01:00 (xfer#1, to-check=2/4)
deleting html/
sent 498800218 bytes  received 30 bytes  6786397.93 bytes/sec
total size is 28907509760  speedup is 57.95
/home/www/ was rsyncd.
——————————————————–
加参数-z(即进行压缩同步)
[root@bogon sbin]# rsync.sh
Welcome to linuxrsync system!
building file list …
4 files to consider
./
sof.tar
   498739200 100%    6.93MB/s    0:01:08 (xfer#1, to-check=2/4)
deleting html/
sent 492633703 bytes  received 30 bytes  6119673.70 bytes/sec
total size is 28907509760  speedup is 58.68
/home/www/ was rsyncd.
——————————————————–
第二次测试结果:
不加参数-z
[root@bogon sbin]# rsync.sh
Welcome to linuxrsync system!
building file list …
5 files to consider
./
sof.tar
   498739200 100%    7.26MB/s    0:01:05 (xfer#1, to-check=3/5)
htl/
sent 498800233 bytes  received 33 bytes  6274217.18 bytes/sec
total size is 28907509760  speedup is 57.95
/home/www/ was rsyncd.
——————————————————–
加参数-z
[root@bogon sbin]# rsync.sh
Welcome to linuxrsync system!
building file list …
4 files to consider
./
sof.tar
   498739200 100%    5.80MB/s    0:01:21 (xfer#1, to-check=2/4)
deleting htl/
sent 492633703 bytes  received 30 bytes  5213055.38 bytes/sec
total size is 28907509760  speedup is 58.68
/home/www/ was rsyncd.
第三次测试结果:
不加参数-z
[root@bogon sbin]# rsync.sh
Welcome to linuxrsync system!
building file list …
4 files to consider
./
sof.tar
   498739200 100%    6.96MB/s    0:01:08 (xfer#1, to-check=2/4)
deleting html/
sent 498800218 bytes  received 30 bytes  6196276.37 bytes/sec
total size is 28907509760  speedup is 57.95
/home/www/ was rsyncd.
——————————————————–
加参数-z
[root@bogon sbin]# rsync.sh
Welcome to linuxrsync system!
building file list …
5 files to consider
./
sof.tar
   498739200 100%    6.95MB/s    0:01:08 (xfer#1, to-check=3/5)
html/
sent 492633723 bytes  received 33 bytes  6044585.96 bytes/sec
total size is 28907509760  speedup is 58.68
/home/www/ was rsyncd.
——————————————————–
4、测试结果数据分析
由以上测试结果数据可得:
1)不加参数-z,共发送的数据大小,取三次平均值:
S1=(498800218+498800233+498800218)/3=498800223
2)加参数-z,共发送的数据大小,取三次平均值:
S2=(492633703+492633703+492633723)/3=492633710
3)sof.tar压缩包实际大小:
T= 498739200
[root@bogon www]# ls -al sof.tar
-rw-r–r– 1 root root 498739200 04-19 14:24 sof.tar
4)压缩比例:
P=(S1-S2)/T
  =(498800223-492633710)/498739200
  =6166513/498739200
  =0.012364204
  =1.2364204%
五、问题排除及注意事项
问题排除:
1、问题1
rsync: read error: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(614) [receiver=2.6.8]
解决:在服务器上查看日志,看到有这么一行:
rsync: unable to open configuration file “/etc/rsyncd.conf”: No such file or directory
于是执行如下命令:
[root@bogon ~]# ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf
但是继续报如下错误:
sending incremental file list
ERROR: module is read only
rsync error: syntax or usage error (code 1) at main.c(879) [Receiver=3.0.8]
rsync: read error: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(760) [sender=3.0.8]
到备份服务器上修改主配置文件
[root@bogon ~]# vim /etc/rsyncd/rsyncd.conf

read only=yes
改为
read only=no
问题解决,实现单向同步
2、问题2
[root@www backup]# rsync -vzrtopg –progress –delete promise@172.16.10.189::promise /home/bak/
Password:
@ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(1516) [Receiver=3.0.8]
解决:目录设置错误
确定配置文件里的目录正确
3、问题3
在Linux下使用rsync同步时,出现以下错误:
@ERROR: auth failed on module bakup
其中,bakup是rsync服务模块名称。
出现这种情况,先检查了用户名和密码正确性,经检查无误,排除了这个可能性,另外可能的原因是:rsync服务器的帐户密码文件的权限没有设置为600,修改/etc/rsyncd/rsyncd.secrets文件:
[root@bogon ~]#
chmod 600 /etc/rsyncd/rsyncd.secrets
问题解决。
4、问题4
在备份路径后面一定要加“/”,否则在双向同步时会一直循环同步。如:
src=/var/www/  //后面一定要加“/”
5、问题5
同步mysql数据时需要注意:
本地源主机(H1)是一台web服务器,把/var/lib/mysql备份到备份服务器(H2),当web服务器上的数据受损时需要从备份服务器把数据同步到web服务器
执行脚本文件:/usr/local/sbin/rsync.sh
同步备份服务器上的/var/lib/mysql到web服务器后仍然无法访问网站,此时需要重启mysql
#/etc/init.d/mysqld restart
问题解决。
网上相关资料:
资料一:
最近在配置rsync服务器镜像备份。中间遇到@ERROR: auth failed on module  这个问题,网上找了好多资料,也具体对照测试了。
    1、
    [root@bo bin]# /usr/local/rsync/bin/rsync -vazu -progress –delete backup@192.168.1.238::www /tmp –password-file=/etc/backserver.pas
    rsync: Failed to exec ss: No such file or directory (2)
    rsync error: error in IPC code (code 14) at pipe.c(86) [receiver=2.6.9]
    rsync: writefd_unbuffered failed to write 12 bytes [receiver]: Broken pipe (32)
    rsync error: error in rsync protocol data stream (code 12) at io.c(1122) [receiver=2.6.9]
    [root@ht-store bin]#
    以上错误可能是上面使用的参数前面的符号不正确。换成下面的就没有上面的错误了
    [root@bo /]# usr/local/rsync/bin/rsync -vzrtopgu –progress –delete –password-file=/etc/backserver.pasbackup@192.168.1.238:www /tmp
    2、
    [root@ht-store /]# usr/local/rsync/bin/rsync -vzrtopgu –progress –delete backup@192.168.1.238:www /tmp/ –password-file=/etc/backserver.pas
    backup@192.168.1.238′s password:
    Permission denied, please try again.
    backup@192.168.1.238′s password:
    Permission denied, please try again.
    backup@192.168.1.238′s password:
    Permission denied (publickey,gssapi-with-mic,password).
    rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
    rsync error: unexplained error (code 255) at io.c(453) [receiver=2.6.9]
    [root@ht-store /]#
    更改成
    [root@ht-store /]# usr/local/rsync/bin/rsync -vzrtopgu –progress –delete –password-file=/etc/backserver.pas
 backup@192.168.1.238::www /tmp
    @ERROR: auth failed on module www
    rsync error: error starting client-server protocol (code 5) at main.c(1383) [receiver=2.6.9]
    [root@ht-store /]#
    3、
    [root@ht-store /]# /usr/local/rsync/bin/rsync -vazu –progress –delete –password-file=/etc/backserver.pas
    backserver@192.168.1.238::www /tmp
    @ERROR: auth failed on module www
    rsync error: error starting client-server protocol (code 5) at main.c(1383) [receiver=2.6.9]
    检查一下用户名是否错误backserver 应该是backup
    4、
    [root@ht-store /]# /usr/local/rsync/bin/rsync -vzar –progress –delete –password-file=/etc/backserver.pasbackup@192.168.1.238:www /tmp
    backup@192.168.1.238′s password:
    Permission denied, please try again.
    backup@192.168.1.238′s password:
    rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(244) [receiver=2.6.9]
    是双引号“::”backup@192.168.1.238::www  而不是单引号“:”backup@192.168.1.238:www
    5、
    [root@ht-store /]# /usr/local/rsync/bin/rsync -vzrtopgu –progress –delete –password-file=/etc/backserver.pasbackup@192.168.1.238::www /tmp
    @ERROR: Unknown module ‘www’
    rsync error: error starting client-server protocol (code 5) at main.c(1383) [receiver=2.6.9]
    这是因为服务器端hosts allow 没有允许该主机访问
资料二:
  1. Q: 出現以下這個訊息, 是怎麼一回事?
    @ERROR: auth failed on module xxxxx
    rsync: connection unexpectedly closed (90 bytes read so far)
    rsync error: error in rsync protocol data stream (code 12) at io.c(150)
    A: 這是因為密碼設錯了, 無法登入成功, 請再檢查一下 rsyncd.pwd ,rsyncd.sec中的密碼設定, 二端是否一致?有时服务器
    端没有起动服务也会出现这种情况
    2. Q: 出現以下這個訊息, 是怎麼一回事?
    password file must not be other-accessible
    continuing without password file
    Password:
    A: 這表示 rsyncd.pwd rsyncd.sec 的檔案權限屬性不對, 應設為 600
    請下 chmod 600 rsyncd.pwd rsyncd.sec
    3. Q: 出現以下這個訊息, 是怎麼一回事?
    @ERROR: chroot failed
    rsync: connection unexpectedly closed (75 bytes read so far)
    rsync error: error in rsync protocol data stream (code 12) at io.c(150)
    A: 這通常是您的 rsyncd.conf 中
    的 path 路徑所設的那個目錄並不存在所致.
    請先用 mkdir 開設好備份目錄.
    4.Q:出现一下信息是怎么回事
    rsync: failed to connect to 218.107.243.2: No route to host (113)
    rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9]
    所以情況會是:
    1. 對方主機沒開機
    2. 對方有 firewall 阻擋
    3. 所通過的網路上有 firewall 阻擋
    shell>setup   #关闭防火墙,其实最重要的也就是把tcp udp 的873端口打开。
    5.Q:出现一下信息是怎么回事
    当
    /server/rsync/bin/rsync -vzrutogp –progress –password-file=/etc/rsyncclien
    t.pwd backup@60.173.7.35:backup /var/www/backup
    出现
    backup@60.173.7.6′s password
    Permission denied, please try again.
  最有可能的情况是,系统没有认出来,你现在的通信是rsync,所以请仔细检查一下上面加红的那句话中ip地址后面是否为两个:也就是说::为rsync通信,:为ssh通信
    6.Q:
    当/server/rsync/bin/rsync rsync://backup@61.156.238.119/backup时,出现如下
    rsync: link_stat “/.” (in backup) failed: Permission denied (13)
    rsync error: some files could not be transferred (code 23) at main.c(1385) [receiver=2.6.9]
    解决方法:更改你的rsyncd.conf中的
    uid=nobody
    gid=nobody
    为
    uid=root
    gid=root
  解决方法2
    出现这样问题的原因是我要同步的这个root目录在掩位的最后一位
    不是r-x或以上的权限,也就是说root这个目录一定要等于或大于drwxr-xr-x才能同步。

linux centos rsync同步设置详细指南

配置rsync 同步数据     rpm包安装rsync及配置
[root@Hammer home]# rpm -qa |grep rsync                 #检查系统是否安装了rsync软件包
yum install rsync xinetd 不安装xinetd也可以  自己修改启动配置文件即可

 1 配置rsync servervi /etc/xinetd.d/rsync
 将disable=yes改为no
 service rsync
 {
         disable = no
         socket_type     = stream
         wait            = no
         user            = root
         server          = /usr/bin/rsync
         server_args     = --daemon
         log_on_failure  += USERID
 }
 2 配置rsync自动启动
 [root@test etc]# chkconfig rsync on
 [root@test etc]# chkconfig rsync --list
 rsync           on
 3 配置rsyncd.conf
 [root@test etc]# vim rsyncd.conf
 uid = root
 gid = root
 use chroot = no
 max connections = 4
 strict modes = yes
 port = 873
 pid file = /var/run/rsyncd.pid
 lock file = /var/run/rsync.lock
 log file = /var/log/rsyncd.log
 [backup]
 path = /srv
 comment = This is test
 auth users = scihoo
 uid = root
 gid = root
 secrets file = /home/rsync.ps
 read only = no
 list = no

 4 确保etc/services中rsync端口号正确
 [root@test etc]# vim /etc/services
 rsync           873/tcp                         # rsync
 rsync           873/udp                         # rsync
 5 配置rsync密码(在上边的配置文件中已经写好路径)/home/rsync.ps(名字随便写,只要和上边配置文件里的一致即可),格式(一行一个用户)
 [root@test etc]# vi /home/rsync.ps
 scihoo:scihoo
 6 配置rsync密码文件权限
 [root@test home]# chown root.root rsync.ps
 [root@test home]# chmod 400 rsync.ps
 7 启动配置
 [root@test home]# /etc/init.d/xinetd restart
 Stopping xinetd:                                           [  OK  ]
 Starting xinetd:                                           [  OK  ]
 8 如果xinetd没有的话,需要安装一下
 [root@test home]# yum -y install xinetd

  启动rsync server
   RSYNC服务端启动的两种方法
 9、启动rsync服务端(独立启动)
 [root@test home]# /usr/bin/rsync --daemon
 10、启动rsync服务端 (有xinetd超级进程启动)
 [root@test home]# /etc/init.d/xinetd reload
 11  加入rc.local
 在各种操作系统中,rc文件存放位置不尽相同,可以修改使系统启动时把rsync --daemon加载进去。
 [root@test home]# vi /etc/rc.local
/usr/bin/rsync --daemon         #加入一行
 12 检查rsync是否启动
 [root@test home]# lsof -i :873
 COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
 xinetd  4396 root    5u  IPv4 633387       TCP *:rsync (LISTEN)

 客户端配置
 1 配置三个过程就可以了
   1.1 设定密码文件
   1.2 测试rsync执行指令
   1.3 将rsync指令放入工作排程(crontab)
 [root@aj1 home]# vi /etc/xinetd.d/rsync
 # default: off
 # description: The rsync server is a good addition to an ftp server, as it \
 #       allows crc checksumming etc.
 service rsync
 {
         disable = yes
         socket_type     = stream
         wait            = no
         user            = root
         server          = /usr/bin/rsync
         server_args     = --daemon
         log_on_failure  += USERID
 }
 1.1  配置密码文件  (注:为了安全,设定密码档案的属性为:600。rsync.ps的密码一定要和Rsync Server密码设定案里的密码一样)
 [root@aj1 home]# vi rsync.ps
 sciooo
 [root@aj1 home]# chown root.root .rsync.ps   # 注意必须给权限
 [root@aj1 home]# chmod 600 .rsync.ps         # 必须修改权限
 1.2 从服务器上下载文件
 [root@aj1 rsync-3.0.4]# rsync -avz --password-file=/home/rsync.ps scihoo@192.168.0.206::backup /home/
    从本地上传到服务器上去
 [root@aj1 rsync-3.0.4]# rsync -avz --password-file=/home/rsync.ps /home scihoo@192.168.0.206::backup

现将 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 指定替代rsh的shell程序
 --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 显示帮助信息
(责任编辑:ken)

解决Rsync ERROR: auth failed on module

今天在两台服务器同步备份在用户权限上纠结了很多,主要关于这个问题网上的配置方法不一,源自rsync版本不一致。
rsync同步备份服务器配置

Rsync 版本

[root@mail video]# rsync –version
rsync  version 3.0.6  protocol version 30
Copyright (C) 1996-2009 by Andrew Tridgell, Wayne Davison, and others.
Web site: rsync.samba.org
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, no symtimes
rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.

服务器同步任务需求

  • 服务器A与服务器B同步备份,这里只说明服务器A同步到服务器B,服务器B还原到服务器A。
  • 考虑安全因素,使用普通用户进行同步。
  • 使用cronjob,定时同步。

错误提示

错误发生在rsync 3.0.6版本,64位 CentOS5.5 系统。
首页这篇文章主要解决的错误是以下:
@ERROR: auth failed on module ***
rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]
*** 是你/etc/rsyncd.conf 中配置的模块,我这里用
password file must not be other-accessible
continuing without password file
Password:
@ERROR: auth failed on module ***
rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]

Rsync 配置

#vi /etc/rsyncd.conf
uid = nobody
gid = nobody
max connections = 4
read only = true
#hosts allow = 202.207.177.180
hosts allow = *
transfer logging = true
log format = %h %o %f %l %b
log file = /var/log/rsyncd.log
slp refresh = 300
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
[web]
path = /home/admin/public_html
comment = Mirror to Hk server
read only = true
list = false
auth users = lixiphp
[test]
path = /home/admin/domains/test
read only = false
auth users = lixiphp
secrets file = /etc/rsyncd.secrets

配置普通用户密码

[root@mail video]# vi /etc/rsyncd.secrets
格式为: username:password
rsync_user:rsyncofpass
设置权限为只读:
chmod 600 /etc/rsyncd.secrets

首次启动rsync

rsync –daemon –config=/etc/rsyncd.conf
如果提示
failed to create pid file /var/run/rsyncd.pid: File exists
使用指令
rm -rf /var/run/rsyncd.pid

重启已经在运行的rsync

[root@mail video]# ps -ef | grep rsync
root     27284     1  0 10:26 ?        00:00:00 rsync –daemon –config=/etc/rsyncd.conf
root     30516 29986  0 18:35 pts/3    00:00:00 grep rsync
[root@mail video]# kill -9 27284
[root@mail video]# rsync –daemon –config=/etc/rsyncd.conf
这样服务器A配置成功!

服务器B配置

一般错误都会发生在服务器B,注意这部分的讲解!
通过CentOS yum install rsync,安装rsync服务。
在rsync安装之后,运行以下指令同步备份:
rsync -vzrtopg –progress –delete –password-file=/home/admin/admin_backups/password.rsync rsync://lixiphp@203.171.237.245/test  /home/admin/admin_backups/test
地址rsync://lixiphp@203.171.237.245/test,lixiphp为服务器A用户,203.171.237.245服务器A IP地址或者域名 test为服务器A配置模块
密码存放在/home/admin/admin_backups/password.rsync,这里存放位置,可自由安排。
password.rsync内容格式为: password
rsyncofpass
设置权限为只读:
chmod 600 /home/admin/admin_backups/password.rsync

解决错误

用户密码错误
@ERROR: auth failed on module test
rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]
检查服务器A存储密码文件和服务器B密码文件。
  • 服务器A密码文件 /etc/rsyncd.secrets 格式为: username:password
  • 服务器B密码文件 password.rsync 格式为:password
文件权限错误
password file must not be other-accessible
continuing without password file
Password:
@ERROR: auth failed on module ***
rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]
检查服务器A存储密码文件和服务器B密码文件。
  • 服务器A密码文件 /etc/rsyncd.secrets 权限为600: chmod 600 /etc/rsyncd.secrets
  • 服务器B密码文件 password.rsync 权限为600:chmod 600 password.rsync

定时任务

[root@hk admin_backups]# vi backup.sh
内容如下:
#/bin/sh
rsync -vzrtopg –progress –delete –password-file=/home/admin/admin_backups/password.rsync rsync://lixiphp@203.171.237.245/test  /home/admin/admin_backups/test
添加定时任务:
[root@hk admin_backups]# crontab –e
添加以下内容:
*/1 * * * * /home/admin/admin_backups/backup.sh > /dev/null 2>&1
每个一分钟从服务器A同步到服务器B!

服务器B向下备份到服务器A

rsync -vzrtopg –progress –delete –password-file=/home/admin/admin_backups/password.rsync  /home/admin/admin_backups/test rsync://lixiphp@203.171.237.245/test
请确保服务器A同步用户lixiphp,对模块test所在目录有读、写、执行的权限。

PHP CURL 多线程

工作中经常需要采集一些内容,所以深入研究了一下PHP CURL多线程,不得不说这个扩展很变态。经过几十次的修改终于写出一个完美的CURL类,有多厉害用“终极”二字形容也不为过。PHP文档中资料甚少,到网上也看到一些类,感觉实在太烂,有些类资源占用很高,有些稍微好点的效率真不敢恭维,说白了就是个原始的多线程而已,根本无法充分利用CPU和带宽。
本类的特点:
运行非常稳定。
设置一个并发就会始终以这个并发数进行工作,即使通过回调函数添加任务也不影响。
CPU占用极低,绝大部分CPU消耗在用户的回调函数上。
内存利用率高,任务数量较多(15W个任务占用内存会超过256M)可以使用回调函数添加任务,个数自定。
能够最大限度的占用带宽。
链式任务,比如一个任务需要从多个不同的地址采集数据,可以通过回调一气呵成。
能够对CURL错误进行多次尝试,次数自定(大并发一开始容易产生CURL错误,网络状况或对方服务器稳定性也有可能产生CURL错误)。
回调函数相当灵活,可以多种类型任务同时进行(比如下载文件,抓取网页,分析404可以在一个PHP进程中同时进行)。
可以非常容易的定制任务类型,比如检查404,获取redirect的最后url等。
可以设置缓存,挑战产品节操。
不足:
不能充分利用多核CPU(可以开多个进程解决,需要自己处理任务分割等逻辑)。
最大并发500(或512?),经过测试是CURL 内部限制,超过最大并发会导致总是返回失败。
目前没有断点续传功能。
目前任务是原子性的,不能对一个大文件分为几部分分别开线程下载。
我这里有34W张图片需要下载,先下载13W截图如下
每秒钟下载300张左右图片,每张图片300K左右,下载速度约100MB/s(1G的网卡用的差不多了),速度和下载文件总数有非常小的偏差,这个数值是根据CURL的传输字节数计算而来。速度超过100MB/s的时候SSH基本连接不上了。。。
iostat

主要瓶颈在IO上,否则速度会更快。
采集http://www.lyricsmode.com/的歌词速度也很快,一共60多万歌词页,平均每秒钟能稳定采集1200页,处理采集的HTML的速度根本追不上采集的速度,瓶颈应该是对方服务器速度,那个没有截图,有兴趣的可以试一下。
完整的文档在这里 。
类随时可能更新所以本文只做参考。
最新版本的类可以在这里找到:https://code.google.com/p/php-fastmvc/source/browse/trunk/framework/class/CURL.phpgoogle经常被封,较新版本在这下载 CUrl