rsync远程同步
一.概念
Rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持连接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份,镜像服务器等应用。rsync时Linux和Unix系统默认安装的基本组件之一。
在远程同步任务中,负责发起rsync同步操作哦的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为同步源。在同步过程中,同步源负责提供文档的原始位置,发起端对该目录具有读取权限。
[root@crushlinux ~]# rpm -qa | grep rsync
rsync-3.0.6-9.el6_4.1.x86_64
二.配置文件
1.开启rsyncd服务
vim /etc/xinetd.d/rsync
在这个路径下有配置文件
service rsync
{
disable = yes #说明rysnc是关闭的
flags = IPv6
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
可以看到rysnc服务是关闭的(disable = yes),这里把它开启,把disable的值改为no
2.创建rsync服务器配置文件vim /etc/rsyncd.conf
手动添加一下内容
uid = www 使用的用户
gid = www
use chroot = no 是否使用根目录锁 如果"use chroot"指定为true,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要以roots权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true。
max connections = 20000 指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。默认值是0,也就是没有限制。
timeout = 600 通过该选项可以覆盖客户指定的IP超时时间。通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户端。超时单位为秒钟,0表示没有超时定义,这也是默认值。对于匿名rsync服务器来说,一个理想的数字是600。
address = 10.2.1.254监听地址(要备份的主机地址)
hosts allow = //允许的主机
hosts deny = * //拒绝所有主机
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
[wwwroot] 模块名字,自定义命名
path = /mier/wwwroot/ 指定该模块的提供备份的目录路径,该参数是必须指定的
comment = frist
read only = no
#list = no 是否把rsync 服务器上提供同步数据的目录显示
incoming chmod = Du=rwx,Dg=rwx,Fu=rwx,Fgo=r
如果想要认证在另行配置
auth users = a //授权用户
secrets = /etc/rsyncd_users.db //存放账户信息的数据文件
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z
//同步时不再压缩的文件类型
3.启动rsync
/usr/bin/rsync --daemon
注意:1.同步的“目的“目录(也就是你往里同步的目录)的属主属组要和你同步时的用户一样。
2.selinux要关闭
3.iptables要关闭
rsync -avz --exclude=*svn /data/www/$line/ /data/wwwroot/$line
红色部分是同步的时候不同步那些数据
关闭rsync
Kill $(cat /var/run/rsyncd.pid)
三.rsync命令的基本用法
1.命令格式及常用备份选项
格式:rsync [选项]原始位置目标位置
常用选项:
-r:递归创建
-l:对于符号链接文件仍然复制为符号链接文件
-v:显示同步过程中的详细信息
-a:归档模式保留文件的权限。属性等信息,等同于组合选项“-rlptgoD”
-z:在传输文件时进行压缩
-p:保留文件的权限标记
-t:保留文件的时间标记
-o:保留文件的文件的属主标记
-g:保留文件的属组标记
-H:保留硬链接文件
-A:保留ACL属性信息
-D:保留设备文件及其他特殊文件
--delete:删除目标位置有而原始位置没有的文件
--checkdum:根据校验和(而不是文件大小)来决定是否跳过文件
2.配置源的标记方法
rsync同步源的资源表示方法为
用户名@主计地址::共享模块名
或
rsync://用户名@主机地址/共享模块名
例:rsync –avz a@192.168.8.10::wwwroot /root
或
rsync –avz rsync://a@192.168.8.10/wwwroot /root