rsync简单介绍
rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。支持跨平台,可以在Windows与Linux间进行数据同步。
1.rsync可以实现本机文件拷贝同步(考虑和cp的区别)
#rsync -av /etc/passwd /opta/backup
2.rsync本机使用远程shell与远程主机之间实现数据拷贝同步(考虑和scp的区别)
# rsync -av --delete /share/data/ root@192.168.121.164:/opt/backup
3.rsync本机客户端通过网络套接字连接rsync deamon服务的端口,然后实现文件数据传输。
# rsync -av --delete /share/data/ rsync://192.168.121.164/backup
或者
# rsync -av --delete /share/data/ 192.168.121.164::backup
# rsync -av --delete rsync://192.168.121.164/backup /tmp
环境配置
主机 状态 ip 系统 备份目录
133 主 192.168.121.133 RHEL7 /data
164 备 192.168.121.161 RHEL7 /data/backup
下面开始操作
首先两台机子都下载rsync安装包,安装好后在/etc下就会有rsyncd.conf配置文件
[root@localhost ~]# yum install -y rsync
[root@node110 ~]# rpm -ql rsync
/etc/rsyncd.conf
/etc/sysconfig/rsyncd
/usr/bin/rsync
/usr/lib/systemd/system/rsyncd.service
分别创建好两台要用到的目录
164是/data/backupmul
133是/data目录
然后在备份机164上配置rsyncd.conf文件
[root@localhost ~]# vim /etc/rsyncd.conf
uid = root
gid = root
port = 873
max connections = 0
ignore errors
exclude = lost+found/
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
reverse lookup = no
[backup]
path = /data/backup/
comment = backup
read only = no
auth users = rsyncuser
secrets file = /etc/rsync.pass
下面是配置的解释
uid = root #提定以哪个用户来访问共享目录,将之指定为生成的文件所有者,默认为nobody
gid = root #默认为nobody
\#port = 874 #可指定非标准端口,默认873/tcp
\#use chroot = no #限定用户目录
max connections = 0 #'0'表示无限制
ignore errors #忽略传输过程的错误
exclude = lost+found/ #排查哪些文件不同步
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
reverse lookup = no #关闭连接时的反向解析,提高连接效率
[backup] #每个模块名对应一个不同的path目录,如果同名后面模块生效
path = /data/backup/
comment = backup
read only = no #默认是yes,即只读
auth users = rsyncuser #默认anonymous可以访问rsync服务器,无需密码验证
secrets file = /etc/rsync.pass
然后配置验证用户的信息
编辑rsyncuser用户文件,确保安全设置权限0600,
这里注意!!!
一定是0600权限,多给都不行
[root@node110 ~]# echo "rsyncuser:123456" >> /etc/rsync.pass
[root@node110 ~]# chmod 0600 /etc/rsync.pass
然后启动rsyncd服务
[root@localhost ~]# systemctl restart rsyncd
配置启动好以后
在主机133上也启动rsyncd服务,直接启动就行,不用动配置文件
[root@ly001 ~]# systemctl restart rsyncd
然后查看164主机是否开启了模组
[root@ly001 ~]# rsync rsync://192.168.121.164
backup backup
可以看到我们的164主机的模组开启了
然后在主机的/data目录下添加一些测试数据,文件或者文件夹
[root@ly001 ~]# touch /data/aaa{1..3}
[root@ly001 ~]# mkdir /data/test
[root@ly001 ~]# ls /data/
aaa1 aaa2 aaa3 test
[root@ly001 ~]#
然后就可以将数据同步给备用主机的模组了,这里是要输入密码的,密码是刚才在164上配置的验证用户的密码,不是164主机root用户的密码,刚才设置的是rsyncuser用户密码123456,所以就用这个用户和密码来验证
[root@ly001 ~]# touch /data/aaa{1..3}
[root@ly001 ~]# mkdir /data/test
[root@ly001 ~]# ls /data/
aaa1 aaa2 aaa3 test
[root@ly001 ~]# rsync -avz /data/ rsyncuser@192.168.121.164::backup
Password:
sending incremental file list
./
aaa1
aaa2
aaa3
test/
sent 246 bytes received 84 bytes 94.29 bytes/sec
total size is 0 speedup is 0.00
[root@ly001 ~]#
在164上也查看数据,发现文件和文件夹也都有了
[root@localhost ~]# ls /data/backup/
aaa1 aaa2 aaa3 test
[root@localhost ~]#
说明数据就同步过来了。数据同步就完成了
下面是不用输入密码的方式,因为平时的备份都是自动的,非交互式的,输入密码这种事当然并不满足需求了。
还是刚才的所有配置,唯一不同的就是推送数据前要变一下。
先在主机上创建一个文件存放备用主机的验证密码,然后修改权限,记住一定是0600,然后添加测试数据,在推送数据的时候加上–password-file=/opt/rsync.pass参数就不用输入密码, 执行的时候会自己读取密码。
下面是完整的步骤
[root@ly001 ~]# echo "123456" > /opt/rsync.pass
[root@ly001 ~]# chmod 0600 /opt/rsync.pass
[root@ly001 ~]# touch /data/bbb{1..4}
[root@ly001 ~]# rsync -azv --delete --password-file=/opt/rsync.pass /data/ rsyncuser@192.168.121.164::backup
sending incremental file list
./
bbb1
bbb2
bbb3
bbb4
sent 341 bytes received 96 bytes 874.00 bytes/sec
total size is 0 speedup is 0.00
[root@ly001 ~]#
然后去备份数据库查看信息,可以看到完成了同步了。
[root@localhost ~]# ls /data/backup/
aaa1 aaa2 aaa3 test
[root@localhost ~]# ls /data/backup/
aaa1 aaa2 aaa3 bbb1 bbb2 bbb3 bbb4 test
[root@localhost ~]#
如果要定时备份数据,将命令加到定时任务里就好了。
在写这篇文章的时候也有参考其它文档,如有侵权请告知删除。