一、环境说明
1.概念
sync(remote sync)是unix及类unix平台下的数据镜像备份软件,它不像FTP那样需要全备份,rsync可以根据数据的变化进行差异备份,从而减少数据流量,提高工作效率
备份方式
完全备份
增量备份(差异备份)
2.基础说明
端口:873(默认)
模式: 如果直接使用命令rsync,就是点到点。
官网: http://rsync.samba.org
在远程同步任务中,负责发起rsync同步操作的客户机称为发起端(客户端),而负责响应来自客户机的rsync同步操作的服务器称为备份源(服务端)。
3.安装
centos默认安装了sync 也可以自行下载更新
yum -y install rsync
二、 使用及配置信息
1.主要配置文件
rsync主要分为三个配置文件,分别是rsyncd.conf(主配置文件),rsyncd.secrets(密码文件),rsyncd.motd(服务器信息文件,可以不用)
2.启动
2.1 服务端启动
2.1.1 默认配置路径
/etc/rsyncd.conf
2.1.2 使用默认配置文件启动
/usr/bin/rsync --daemon
2.1.3 使用指定配置文件启动
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
2.2 客户端启动
客户端不需要配置配置文件,安装rsync服务即可
必须要配置 密码文件 且权限是600
3.服务端配置
3.1 rsyncd.conf 主配置文件
# /etc/rsyncd: configuration file for rsync daemon mode
# See rsyncd.conf man page for more options.
#设置服务器信息提示文件,在该文件中编写提示信息
#motd file=/etc/rsyncd.motd
#开启rsync数据传输日志功能
transfer logging=yes
#设置日志文件名,可通过log format参数设置日志格式
log file=/etc/rsync/logs/rsyncd.log
#设置rsync进程号保存文件名称
pid file=/etc/rsync/pid/rsyncd.pid
#设置锁文件名称
lock file=/etc/rsync/lock/rsync.lock
#设置服务器监听的端口号,默认是873
port=873
#设置本服务器所监听网卡接口的ip地址
address=21.50.31.131
#设置进行数据传输时所使用的帐户名或ID号,默认使用nobody
uid=root
#设置进行数据传输时所使用的组名或GID号,默认使用nobody
gid=root
#若为yes, rsync会首先进行chroot设置,将根映射在下面的path参数路径下,对客户端而言,系统的根就是path参数指定的路径。但这样做需要root权限,并且在同步符号连接资料时只会同步名称,不会同步内容。
use chroot=no
#是否允许客户端上传数据,yes表示不允许
read only=yes
#设置并发连接数,0表示无限制
max connections=0
#忽略一些IO错误
#ignore errors
#exclude指定common目录下某个目录可以不同步数据
#exclude = test/
# # 指定备份的用户,和系统用户无关
auth users=backuper
#密码验证文件名,该文件权限要求为只读,建议为600,仅在设置auth users后有效
secrets file=/etc/rsync/rsyncd.secrets
#指定是否监测口令文件的权限。若为 true 则口令文件只能被 rsync 服务器运行身份的用户访问,其他任何用户不可以访问该文件
strict modes=false
#设置哪些主机可以同步数据,多ip和网段之间使用空格分隔
hosts allow=*
#除了hosts allow定义的主机外,拒绝其他所有
#hosts deny=*
#客户端请求显示模块列表时,本模块名称是否显示,默认为true
list = true
#------------ mysql_back_up start -------------
# #自定义模块名,rsync通过模块定义同步的目录,可定义多个
[mysql_back_up]
#定义注释说明字串
comment = mysql_back_up rsync
#同步目录的真是路径通过path指定
path = /data/admin/app/anshan/mysql_back_up
#------------ mysql_back_up end -------------
3.2 rsyncd.secrets 密码文件 (服务端)
权限必须 是600
chmod 600 /etc/rsync/rsyncd.secrets
配置格式: 用户名:密码
backuper:123
3.3 rsyncd.secrets 密码文件 (客户端)
权限必须 是600
chmod 600 /etc/rsync/rsyncd.secrets
配置格式: 密码
123
4.客户端同步数据
4.1 同步脚本
脚本目录: 134(客户端) 服务器上 /data/mysql_back_up/131_mysql_backup_rsync.sh
#!/bin/bash
/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/rsync/rsyncd.secrets backuper@21.50.31.131::mysql_back_up /data/mysql_back_up/mysql_back_up_data
参数说明
v:显示详细信息
z:传输过程中对数据进行压缩
r:递归
t:保留修改时间属性
o:保留文件所有者属性
p:保留文件权限属性
g:保留文件所属组属性
a:归档模式,主要保留文件属性,等同于-rlptgoD
--progress:显示数据传输的进度信息
--password-file=FILE:指定密码文件,将密码写入文件,实现非交互式数据同步,这个文件名也需要修改权限为600
--delete:删除那些仅在目标路径中存在的文件(源路径中不存在),在脚本中的数据同步经常加上此参数
4.2 定时同步
在134(客户端)服务器执行 crontab -e 查看 每天1点拷贝 (131数据库每天0点备份)
0 1 * * * sh /data/mysql_back_up/131_mysql_backup_rsync.sh
4.3 一些栗子
1. rsync -t *.c 192.168.0.54:src/ #将本机当前目录下的以.c结尾的文件赋值到192.168.0.54的src目录下
2. rsync -avz 192.168.0.54:src/bar /data/tmp #从192.168.0.54主机上将src/bar目录以递归方式复制到本机/data/tmp目录
3. rsync -avz 192.168.0.54:src/bar/ /data/tmp #和例子2的区别是不在/data/tmp目录下创建bar目录
4. rsync -avz /src/foo /dest #将本机/src/foo目录复制到/dest目录
5. rsync -avz backuper@192.168.0.230::mysql_back_up /test3 #使用backuper账户连接远程192.168.0.230主机的rsync进程,将mysql_back_up模块定义的path路径下载到本地test3目录
6. rsync -avz 192.168.0.230::mysql_back_up /test3 #匿名下载192.168.0.230服务器的mysql_back_up模块至本地的/test3目录
7. rsync --list-only backuper@192.168.0.254:: #显示192.168.0.254服务器所有的模块名称,需要服务器端配置list=true才会显示
8. 客户端每次连接服务器都需要输入密码很麻烦,可以创建密码文件rsync.pass,在其中包含密码,然后使用--password-file指定此文件
rsync -avz --delete --password-file=rsync.pass backuper@192.168.0.254::mysql_back_up /dest
5.相关报错解决
参考: https://www.jianshu.com/p/0dcc62ff285b
注:auth failed on module data 另一种原因是 配置文件格式有问题,注释最好不要放在参数后面
6.参考文件
https://www.cnblogs.com/regit/p/8074221.html
https://www.jianshu.com/p/0dcc62ff285b
https://www.jianshu.com/p/28226921a466