一、rsync介绍
Rsync是一款功能强大的数据同步工具,它可以在本地或者网络之间进行文件同步。Rsync是一个开源软件,可以跨平台运行,并且支持文件压缩传输,只传输不同之处,同时可以保留文件权限、时间戳等信息。rsync 支持 ssh,rsh,直接使用 socket 方式进行传输,同时支持许多过滤规则与操作,如:压缩传输、删除已被删除文件、删除目录等等,比起传统的scp,rsync的效率较高,压缩协议可提高网络带宽使用率。
二、rsync特点
1、速度快:rsync采用特有的算法对目标项与本地项的比较结果进行最小化处理。每一次同步操作,只会对两端不同的地方进行备份。rsync的独有算法可以让同步速度达到惊人的快速。rsync在数据超过多个G的情况下,不开启压缩传输,传输速度远比scp快。
2、支持备份文件的权限、时间、链接、设备文件等资源属性:这是rsync的另一个亮点。rsync支持defalut、archive、link、copy、copy-devices、hard-links、verbose等属性设置,使得备份文件几乎跟原件没有什么区别,而其他备份工具一般只能做到数据的同步,无法反映原件属性。
3、支持删除对方已经删除的文件:这也是rsync其他备份工具的一大优势。rsync支持--delete选项,能删除对方端已经删除的文件,很好地维护了文件的一致性。
三、rsync使用步骤
1、安装rsync。在centos7中,rsync工具默认安装,可以通过以下命令验证是否安装:
rsync --version
2、rsync使用示例。
(1)基本命令
rsync [options] source destination
(2)实战示例:同步远程文件夹到本地
rsync -vzrtopg --exclude "*.log" --exclude "*.bak" --progress -e "ssh -p 22" root@192.168.1.1:/usr/local/src /home/rsync
参数含义:
-v:详细模式输出
-z:使用压缩模式传输文件
-r:递归同步子目录
-t:保持文件时间属性
-o:保持文件属主属性
-p:保持文件权限属性
-g:保持文件属组属性
--exclude:过滤传输文件,忽略指定文件类型
--progress:传输进度条
-e:传输加密协议
四、rsync常用命令选项
1、指定输出信息到文件或tty输出
rsync [options] source destination > logfile 2>&1
2、同步本地目录
rsync -vzrtopg --exclude "*.log" --exclude "*.bak" --progress /usr/local/src /home/rsync
3、同步本地目录到远程主机
rsync -vzrtopg --exclude "*.log" --exclude "*.bak" --progress /usr/local/src root@192.168.1.1:/home/rsync
4、同步远程主机的目录到本地
rsync -vzrtopg --exclude "*.log" --exclude "*.bak" --progress root@192.168.1.1:/usr/local/src /home/rsync
5、同步本地目录到远程主机(加密传输,指定端口)
rsync -vzrtopg --exclude "*.log" --exclude "*.bak" --progress -e "ssh -p 22" /usr/local/src root@192.168.1.1:/home/rsync
五、rsync安全性设置
为了保证rsync数据传输过程中的安全性,我们可以定制化rsync的参数。可以设置密码或是在生成ssh key的基础上增加密钥验证,如下:
1、添加rsync用户 useradd rsync -s /bin/false passwd rsync 2、生成key ssh-keygen -t rsa 3、指定rsync客户端IP vim /etc/rsyncd.conf [module] path = /data comment = just for testing uid = nobody gid = nobody read only = no auth users = rsync secrets file = /etc/rsyncd.passwd hosts allow = 192.168.1.27 4、修改rsync用户权限 chmod 600 /etc/rsyncd.passwd 5、设置rsync用户密码 rsync rsync:2001:backup 6、重新加载配置文件 rsync --daemon --port=873 7、设置root用户的秘钥认证 ssh-keygen -t rsa ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.30 8、备份远程机器文件到本地 rsync -vzrtopg --delete -e ssh root@192.168.1.30:/data/ /data_backup/
六、rsync常见错误及解决方法
1、Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
解决方法:确认是否开启root用户密码认证
2、rsync error: error in rsync protocol data stream (code 12) at io.c(226)
解决方法:确认远程服务器的AllowTcpForwarding是否为yes状态;修改/etc/ssh/sshd_config文件内容:AllowTcpForwarding yes
3、rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.9]
解决方法:修改/etc/ssh/sshd_config文件内容:PermitRootLogin yes 和 RSAAuthentication yes
以上是CentOS7下rsync备份详解,使用rsync进行数据备份,可以更有效、更安全的管理系统数据,尤其在生产环境下,使用rsync完成数据迁移和备份工作是一个不错的选择。