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