CanPHP框架技术讨论

导航

 

Rsync简介

 rsync 是一个 Unix 系统下的文件同步和传输工具。

它具备以下特性:

1. 能更新整个目录和树和文件系统

2. 有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间

3. 对于安装来说,无任何特殊权限要求

4. 对于多个文件来说,内部流水线减少文件等待的延时

5. 能用 rsh、ssh 或直接端口做为传输入端口

6. 支持匿名 rsync 同步文件,是理想的镜像工具;

 

Rsync服务器是指以deamon方式运行rsync服务的服务器,需要打开rsync deamon和启动xinetd服务。默认端口873。

 

Rsync客户端是发起rsync连接的服务器,安装rsync即可。

Rsync工作场景

Rsync客户端发起连接后,Rsync服务器会检查Rsync客户端提交Rsync服务器内建的户名和密码是否正确,如果通过认证检测,则开始文件传输,传输的过程是按要求先比对文件的大小、属性、权限、MD5值等信息,如果两端文件信息不一致,则按要求同步文件的区别块。

以下以备份rsync服务器的/usr/local/tomcat6/web 目录为例进行部署。

Rsync服务器架设简单,多数发行版本unix或者linux操作系统甚至默认都安装了rsync

全局配置文件 /etc/rsyncd.conf  有时候安装后没有此文件不必惊慌,自己创建一个。默认安装的也可能不存在该文件。

 

 

Rsync服务器搭建步骤:

1,安装rsync软件(略)

2,开启rsync deamon的xinetd服务

#chkconfig xinetd on     打开了xinetd的启动项(输入命令,如果系统不报错即可)

#chkconfig rsync on      打开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

}

3,配置rsync

#vi /etc/rsyncd.conf      设置rsync配置文件(新建文件)

添加以下内容

uid=nobody

gid=nobody

max connetctions=4

use chroot=no

log file=/var/log/rsyncd.log

transfer logging=yes

log format=%t %a %m %f %b

pid file=/var/run/rsyncd.pid

lock file=/var/run/rsyncd.lock

#auth users=root

secrets file=/etc/rsyncd.pwd

[web]

path=/usr/local/tomcat6/web

comment=backup web

ignore errors

read only=yes

list=no

auth users=cms

secrets file=/etc/rsyncd.pwd

 

配置说明:

uid=nobody

gid=nobody

uid 和 gid是系统内建用户,必须存在于系统/etc/passwd文件中。这里设置了最小权限

max connetctions=4

max connections是客户端同时连接数,为了限制多线程同步的。

use chroot=no

不使用chroot。如果使用chroot,同步时候需要root权限,另外对符号链接文件, 将会排除在外。所以我们不使用chroot。

secrets file=/etc/rsyncd.pwd定义密码文件rsyncd.pwd

 

[web]

设置备份任务名称为web,下面的都是web备份任务参数设置,一直到另一个[]截止。我们可以创建多个备份任务。

path=/usr/local/tomcat6/web定义需要备份目录

comment=backup web定义显示说明,备份web目录

ignore errors 忽略同步中出现的错误

read only=yes定义访问方式为只读

list=no  定义了Rsync客户端是不可以列出目录结构

auth users=cms 定义了客户端备份web项目的用户,这个用户是rsync内建用户与rsync服务器和客户端系统用户无关

 

4,设置rsync内建用户和密码

#echo "cms:cmscms" >> /etc/rsyncd.pwd

这里我们设置rsync内建用户cms,密码cmscms

修改密码文件执行权限

#chmod 600 /etc/rsyncd.pwd

5,重启rsync服务

# service xinetd restart  启动服务

 

Rsync客户端搭建步骤

1,安装rsync软件(略)

2,客户端生成生成验证证文件

#echo "cmscms" >> /etc/rsyncd.pwd     cmscms是密码

#chmod 600 /etc/rsyncd.pwd

3,测试

使用如下命令测试Rsync客户端是否可以同步Rsync服务端

#/usr/bin/rsync -vzrtopg --password-file=/etc/rsyncd.pwd --progress --delete-after cms@100.1.1.147::web  /usr/local/tomcat6/web

/usr/bin/rsync 是rsync可执行文件路径

-vzrtopg --password-file=/etc/rsyncd.pwd --progress --delete-after 同步参数

cms@100.1.1.147::web  表示客户端以cms用户进行同步,100.1.1.147是rsync服务器端ip地址,web表示rsync服务器端的@web备份任务。

/usr/local/tomcat6/web 是客户端存放备份文件的位置。

 

 

 

rsync参数详解

v,

verbose

详细模式输出

q,

quiet

精简输出模式

c,

checksum

打开校验开关,强制对文件传输进行校验

a,

archive

归档模式,表示以递归方式传输文件,并保持所有文

件属性,等于rlptgoD

r,

recursive

对子目录以递归模式处理

R,

relative

使用相对路径信息

rsync foo/bar/foo.c remote:/tmp/

则在/tmp目录下创建foo.c文件,而如果使用R

参数:

rsync R

foo/bar/foo.c remote:/tmp/

则会创建文件/tmp/foo/bar/foo.c,也就是会保持完全路径信息。

b,

backup

创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用suffix选项来指定不同的备份文件前缀。

backupdir

将备份文件(如~filename)存放在在目录下。

suffix=

SUFFIX 定义备份文件前缀

u,

update

仅仅进行更新,也就是跳过所有已经存在于DST,并

且文件时间晚于要备份的文件。(不覆盖更新的文件)

l,

links

保留软链结

L,

copylinks

想对待常规文件一样处理软链结

copyunsafelinks

仅仅拷贝指向SRC路径目录树以外的链结

safelinks

忽略指向SRC路径目录树以外的链结

H,

hardlinks

保留硬链结

p,

perms

保持文件权限

o,

owner

保持文件属主信息

g,

group

保持文件属组信息

D,

devices

保持设备文件信息

t,

times

保持文件时间信息

S,

sparse

对稀疏文件进行特殊处理以节省DST的空间

n,

dryrun

现实哪些文件将被传输

W,

wholefile

拷贝文件,不进行增量检测

x,

onefilesystem

不要跨越文件系统边界

B,

blocksize=

SIZE 检验算法使用的块尺寸,默认是700字节

e,

rsh=

COMMAND 指定替代rsh的shell程序

rsyncpath=

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

C,

cvsexclude

使用和CVS一样的方法自动忽略文件,用来排

除那些不希望传输的文件

existing

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

创建的文件

delete

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

deleteexcluded

同样删除接收端那些被该选项指定排除的文件

deleteafter

传输结束以后再删除

ignoreerrors

及时出现IO错误也进行删除

maxdelete=

NUM 最多删除NUM个文件

partial

保留那些因故没有完全传输的文件,以是加快随后的再次传输

force

强制删除目录,即使不为空

numericids

不将数字的用户和组ID匹配为用户名和组名

timeout=

TIME IP超时时间,单位为秒

I,

ignoretimes

不跳过那些有同样的时间和长度的文件

sizeonly

当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间

modifywindow=

NUM 决定文件是否时间相同时使用的时间戳窗口,

默认为0

T

tempdir=

DIR 在DIR中创建临时文件

comparedest=

DIR 同样比较DIR中的文件来决定是否需要备份

P

等同于 partial

progress

显示备份过程

z,

compress

对备份的文件在传输时进行压缩处理

exclude=

PATTERN 指定排除不需要传输的文件模式

include=

PATTERN 指定不排除而需要传输的文件模式

excludefrom=

FILE 排除FILE中指定模式的文件

includefrom=

FILE 不排除FILE指定模式匹配的文件

version

打印版本信息

address

绑定到特定的地址

config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf

文件

port=

PORT 指定其他的rsync服务端口

blockingio

对远程shell使用阻塞IO

stats

给出某些文件的传输状态

progress

在传输时现实传输过程

logformat=

FORMAT 指定日志文件格式

passwordfile=FILE 从FILE中得到密码

bwlimit=KBPS 限制I/O带宽,KBytes per second

h,

help

显示帮助信息

posted on 2014-08-12 16:32  創丗仼  阅读(227)  评论(0编辑  收藏  举报