一、Rsync工具介绍
rsync是一款数据同步工具,支持通过本地传输、scp远程传输、守护进程三种工作模式来实现数据的实时同步(实时同步需要结合inotify工具),并且可以采用增量同步的方式节约带宽,提升效率。 使用rsync时能备份的数据包括各种应用程序配置文件,如nginx.conf、应用日志文件、静态数据文件,如图片等。考虑备份的完整性,也建议定期恢复数据检验。如果备份的数据是否重要,可以对备份服务器再做备份。
二、Rsync安装与使用
1、使用yum安装rsync(服务端和客户端都需要安装)
yum install rsync -y
2、rsync常用选项
-a:最常用的选项,等同于rtogpDl一起使用,可以实现递归传输并保持所有属性 #实测发现如果服务端是Windows,只用r选项,否则会出错
-v:显示传输过程
-z:数据在传输过程中要进行压缩,提高效率,和tar命令里的-z作用一样
-r:递归传输,传输目录需要该参数
-t:保持文件时间信息一致,如果目标服务器的文件时间和源服务器文件时间一致则不会传送
-o:保持文件属主信息
-p:保持文件权限信息
-g:保持文件所属组信息
-D:Devices,代表保持设备文件的信息
-l:保持软连接信息,大写的-L会把软连接的源文件也拷贝过去
-e:指定使用的信道协议,如'ssh 22'
--delete:强制目标和源数据一致,如果某文件在目标服务器存在而源服务器不存在的话,会删除该文件
--exclude:过滤指定文件,支持通配符
三、Rsync命令示例
· 本地数据传输示例
rsync -avz /etc/fstab /bak/ #拷贝fstab文件到/bak目录下
传输目录时排除指定文件:
rsync -avz --exclude=test1.txt /root root@192.168.1.1:/bak rsync -avz --exclude=test2.txt --exclude=test3.txt /root root@192.168.1.1:/bak
· 远程数据传输示例
#拉取数据(从远端服务器拷贝到本地服务器)
rsync -rgtopDl root@192.168.1.1:/etc/fstab /bak/
#推送数据(从本地服务器拷贝到远端服务器)
rsync -rgtopDl -e 'ssh -p 22' /etc/fstab root@192.18.1.1:/bak/
· 以守护进程模式工作,如将服务器A为备份服务器,其他客户端推送数据到服务器A
1、创建配置文件/etc/rsyncd.conf,该文件需要手动创建,详细的参数可以man rsyncd.conf来查看
uid = root #rsync用户运行时的身份 gid = root use chroot = yes # 安全相关 max connections = 2000 # 并发连接数 timeout = 600 # 超时时间(秒) pid file =/var/run/rsyncd.pid # 指定rsync的pid目录 lock file =/var/run/rsync.lock # 指定rsync的锁文件 log file = /var/log/rsyncd.log # 指定rsync的日志目录 ignore errors read only = false list = false #禁止列出模块信息 hosts allow = 10.* #白名单主机 hosts deny = 0.0.0.0/32 auth users = rsync_backup #rsync虚拟用户,该用户可不存在于系统中 secrets file =/etc/rsync.password #rsync虚拟用户密码文件 ###########################模块####################### [dbb] #模块名,客户端需要指定该模块 path = /data2/bak/dbb #模块对应的存放路径 [git] path = /data2/bak/git
2、创建secrets file一项指定的文件,文件名可以自定义,必须为600权限。在该文件中写入auth users一项中定义的用户名与密码,用户名密码用冒号分隔。该文件也需要在客户端存在,不过有一个区别,客户端的密码文件只用写密码即可,服务端的密码文件要写用户名:密码
echo “rsync_backup:12345678” >> /etc/rsync.password
3、上一步设置的密码文件是明文的,需要修改权限为600,否则后面服务也会报错
chmod 600 /etc/rsync.password
4、启动rsync服务,运行后记得查看端口,rsync默认端口是873
rsync --daemon
5、客户端推送数据测试:
rsync -avz --progress --delete /data/git/gitlab-data-bak/backups/ rsync_backup@10.4.0.222::git
6、上面的命令需要交互输入密码才可以传输数据,如果是用作备份脚本的话就无法实现了,不过也有解决办法,在执行rsync命令时加上--password-file选项来指定密码文件,客户端的密码文件只用写密码就可以了,然后文件权限需要改为600:
rsync -avz --progress --delete --password-file=/etc/rsync.password /data/git/gitlab-data-bak/backups/ rsync_backup@10.4.0.222::git
Windows系统中配置rsync
要在Windows下使用rsync的话使用的软件是cwRsync,在配置上会有部分出入。最主要的就是路径的识别方式会不一样,cwRsync不能直接识别磁盘,必须加上/cygdrive/这样的路径,比如/cygdrive/g/test=g:\test
rsync服务排错思路:
1、检查配置文件路径是否正确,默认路径是/etc/rsyncd.conf
2、检查配置文件host allow,host deny允许的网段是否为客户端IP地址
3、检查配置文件path参数对应的目录是否存在,权限是否正确
4、检查rsync服务是否启动,ps aux | grep rsync
5、检查iptables和selinux是否为关闭状态
6、检查rsync配置用户和密码的文件权限是否为600,格式是否正确,文件路径和secrect files参数是否一致
7、如果是推送数据,检查配置文件中的用户是否对目标目录拥有写权限
发表评论: