Rsync (remote sync)是一款开源、快速,多功能、可实现增量的本地或远程数据镜像同步备份优秀工具。它可通过 LAN/WAN 快速同步多台主机间的文件。
RSYNC的特性:
1、支持拷贝特殊文件如链接、设备等。
2、可以有排除制定文件或目录同步的功能,相当于打包命令tar。
3、可以做到保持原来文件或目录的权限、时间、软硬连接等所有属性均不改变。
4、可实现增量同步,既只同步发生变化的数据,因此数据传输效率很高。
5、可以使用rcp,rsh,ssh等方式配合传输文件,也可以通过直接的socket连接。
6、支持匿名的或认证的进程模式传输,方便进行数据备份及镜像
7、优化的流程,文件传输效率高
RSYNC工作模式:
Rsync有四种工作模式,具体如下:
1、列表模式
和ls -l相似,负责列出源的内容。不仅可以看本地还可以看远端。
2、shell模式,也称为本地模式
和cp相似,本地拷贝文件
3、远程shell模式,可以通过通过rcp,ssh等通道传输
和rcp相似,不过可以实现增量备份,并且能够通过安全的ssh方式进行数据传输。
4、服务器模式
在这种模式下,rsync守护进程在一台机器上永久运行,接收文件传输请求。可以把文件发送给守护进程,也可以向它请求文件。
服务器模式非常适合创建中心备份服务器或项目存储库
安装rsync
先检查系统有没有安装: rpm -qa rsync
如有返回,则系统已经安装过.
安装rsync有两种方式 .一种是yum安装,另一种是编译安装
yum安装:
yum install -y rsync
rsyncd.conf 文件中 [module] 之前的所有参数为全局参数,也可以在全局参数部分定义模块参数。在这种情况下该参数的值就是所有模块的默认值。
rsyncd.conf文件详解:
uid = rsync # 指定的模块传输文件时所用的用户身份 gid = rsync # 指定的site模块传输文件时所用的用户组身份 port=873 # 默认端口 use chroot = no # 默认为true,修改为no,增加对目录文件软连接的备份 max connections = 200 # 指定最大并发连接数以保护服务器,超过限制的连接请求将被告知随后再试。默认值为 0,即没有限制 timeout = 300 # 服务器会话的超时时间 pid file = /var/run/rsyncd.pid # 进程启动后,进程号存放路径 lock file = /var/run/rsyncd.lock # 服务启动、停止会用到锁文件 log file = /var/log/rsyncd.log # 指定日志文件的路径 Log fromat = %h %o %f %l %b # 指定日志记录的格式 motd file = /etc/rsyncd.motd # 登陆消息提示文件,可以不配置。默认为空。 [test] # 模块名称,名称可以任意写,不过一般是以路径命名,最好见名意 Comment = test # 模块信息描述,该描述连同模块名在客户连接得到模块列表时显示给客户。默认没有描述定义 path=/test/ # 指定供备份的目录路径,必须指定该参数。该目录路径是rsync服务端的一个路径,提供给客户端上传或下载 ignore erros # 忽略错误 read only = false # 设定是否允许客户上载文件。若为 true 任何上载请求均会失败,若为 false 且客户端拥有服务器目录读写权限则可以上载。默认值为 true 。 write only 设定是否允许客户下载文件。若为 true 任何下载请求均会失败,默认值为 false 。 list = false # 设定当客户请求可以使用的模块列表时,是否列出该模块。若为 false,则创建隐藏的模块。默认值为 true hosts allow=192.168.137.0/24 # 指定允许客户连接的 IP 地址。可以为单个 IP 地址或整个网段。多个 IP 或网段需要以空格隔开。默认是允许所有主机连接。 hosts deny=* # 指定拒绝连接的客户IP地址,设置方式和hosts allow相同。 Dont commpress # 指定不进行压缩处理即可传输的文件,默认值是 *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz auth users = rsync_backup # 该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户不一定是客户端存在的用户。如果"auth users"被设置,那么客户端发出对该模块的连接请求时,需要对用户身份进行验证。用户的名和密码以明文方式存放在"secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块 ( 也就是匿名方式 )。 secrets file = /etc/rsync.password # 虚拟用户的密码文件 exclude = common/ # 用来指定多个由空格隔开的多个文件或目录 ( 相对路径 ),并将其添加到 exclude 列表中。这等同于在客户端命令中使用 --exclude 参数。一个模块只能指定一个 exclude 选项。但是需要注意的一点是该选项有一定的安全性问题,客户端很有可能绕过 exclude 列表,如果希望确保特定的文件不能被访问,那就最好结合 uid/gid 选项一起使用。 pre-xfer exec, post-xfer exec # 设置可在文件传输前/后执行的命令。若在文件传输前执行的命令失败,则取消本次传输操作
下面,就配置rsync服务端跟客户端:
环境:
rsync_server :192.168.1.34 centos6.5
rsync_client:192.168.1.35 centos6.5
一.RSYNC 服务端部署:
1、安装rsync,并且配置服务端主配置文件
[root@localhost ~]# yum install rsync -y [root@localhost ~]# vim /etc/rsyncd.conf #注:yum安装后/etc目录下没有rsyncd.conf ,我们就手动添加它! uid = root gid = root use chroot = no max connections = 200 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log ignore errors read only = false list = false hosts allow = 192.168.1.0/24 hosts deny = * auth users = rsync secrets file = /etc/rsync.password [sunsky] path = /test
2、创建 rsync.password 作为用户密码文件
[root@localhost rsync]# touch /etc/rsync.password [root@localhost rsync]# chmod 600 /etc/rsync.password [root@localhost rsync]# vi /etc/rsync.password [root@localhost rsync]# cat /etc/rsync.password rsync:123456
3.创建模块中指定的文件
[root@localhost ~]# mkdir /test [root@localhost ~]# chown root:root /test #更改目录的权限为rsyncd.conf中uid和gid指定属主和属組
4、以守护进程方式启动 rsync
[root@localhost ~]#/usr/bin/rsync --daemon --config=/etc/rsyncd.conf #注意如果你的rsyncd.conf文件在/etc/目录下,就不需要再用--config去指定了。--daemon是以守护进程的方式启动
可以将上面的命令写入 /etc/rc.local 中,这样当系统启动时,就会自动以守护进程的方式去运行 rsync
重启rsync的组合命令
[root@localhost ~]# pkill rsync #关闭rsync服务 [root@localhost ~]# rsync --daemon #启动rsync服务 [root@localhost ~]# ps -ef | grep rsync #检查是否启动
5、检查服务状态
lsof -i:873 或者: netstat -lntup |grep 873
手动启动rsync的常见参数:
[root@rsync-server ~]# rsync --daemon # daemon 表示以守护进程的方式启动rsync服务 常用启动参数: --daemon # 表示以守护进程的方式启动rsync服务 --address # 绑定指定ip地址提供服务,即服务器是多网卡模式或多虚拟IP模式,需要指定某个固定ip提供服务 --config=FILE # 更改配置文件路径,而不去使用默认的/etc/rsyncd.conf --port=PORT # 更改其它端口提供服务,而不去使用模式的873端口。
以上即为rsync服务端的整个配置步骤了!
RSYNC 服务端已经部署完毕,接下来如果要使用的话,肯定还需要搭配 rsync 客户端才行!下面就来看,rsync客户端怎么部署!
二.RSYNC 客户端部署
RSYNC 客户端部署起来非常简单,我们仅仅需要安装 rsync 软件,然后创建一个本地密码文件。该密码文件为对应rsync 服务端配置文件里面每个模块下面的虚拟用户的密码,以此来实现免密码同步!
1. 安装rsync: yum install -y rsync
2、配置本地密码文件: vi /etc/rsync.password
#添加服务端的密码就行了
[root@localhost ~]# cat /etc/rsync.password 123456
到此,服务端跟客户端都配置完成!
实例:
第一种格式: 拉取: rsync -avzP rsync@192.168.1.34::sunsky /test/ --password-file=/etc/rsync.password 推送: rsync -avzP /test/ rsync@192.168.1.34::sunsky --password-file=/etc/rsync.password 第二种格式: 拉取: rsync -avzP rsync://rsync@192.168.1.34:/sunsky/ /test/ --password-file=/etc/rsync.password 推送: rsync -avzP /test/ rsync://rsync@192.168.1.34:/sunsky/ --password-file=/etc/rsync.password
远程shell模式实例:
[root@localhost ~]# rsync -avz /opt/backup/ root@192.168.1.35:/opt