您的位置:

CentOS7下rsync备份详解

一、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完成数据迁移和备份工作是一个不错的选择。