1.Rsync基本概述
 rsync remote sync(远程同步)
 是一款开源的备份工具,可以在不同主机之间进行同步,可实现全量备份与增量备份,因此非常适合用于架构集中式备份或异地备份等应用
 
 端口:tcp 873
 运行模式:
 C/S 客户端、服务端模式
 QQ
 B/S:浏览器、服务端模式
 备份方式:
 完全备份:对所有数据做一次全备份
 增量备份:只备份离上次备份变化的数据
 差异备份:备份时上一次完全备份后变化的数据
 常见备份组合:
 完全+增量:1次完全+多次增量
 完全+差异:1次完全+1次差异
 2.Rsync应用场景
 数据同步的方式:
 推:push,上传(upload)
 将客户端的数据上传到rsync服务器(backup服务器)
 拉:pull,下载(download)
 将rsync服务端
 推拉是由客户端发起的
 3.Rsync传输模式
 rsync [OPTION]… SRC [SRC]… DEST
 or rsync [OPTION]… SRC [SRC]… [USER@]HOST:DEST
 or rsync [OPTION]… SRC [SRC]… [USER@]HOST::DEST
 or rsync [OPTION]… SRC [SRC]… rsync://[USER@]HOST[:PORT]/DEST
 or rsync [OPTION]… [USER@]HOST:SRC [DEST]
 or rsync [OPTION]… [USER@]HOST::SRC [DEST]
 or rsync [OPTION]… rsync://[USER@]HOST[:PORT]/SRC [DEST]rsync --备份命令(cp)
 [options] --选项
 SRC --本地源文件
 [DEST] --本地目标文件
 rsync -avz /etc/passwd /tmp/
 Rsync大致使用三种主要的数据传输方式
 -a 归档模式及传输,等于trogD1
 -v 详细模式输出,打印速率,文件数量等
 -z 传输时进行压缩以提高效率
 -r 递归传输目录及子目录,即目录下得所有目录都同样传输
 -t 保持文件时间信息
 -o 保持文件属主信息
 -p 保持文件权限
 -g 保持文件属组信息
 -l 保留软连接
 -p 显示同步的过程及传输时的进度等信息
 -D 保持设备文件信息
 -L 保留软连接指向的的目标文件
 -e 使用的信道协议,指定替代的rsh的shell程序
 –exclude-PATTERN 指定排除不需要传输的文件模式
 –exclued-from=frile 文件名所在的目录文件
 –bwlimit=100 限速传输
 –partial 断点续传
 –delete 让目标目录和源目录数据保持一致
 本地方式:
 类似cp命令
 文件同步
 [root@iZ0qjhhu2rrhmpZ tmp]# rsync -avz /etc/passwd /tmp/
 sending incremental file list
 passwdsent 559 bytes received 35 bytes 1,188.00 bytes/sec
 total size is 1,119 speedup is 1.88
 目录同步:
 [root@iZ0qjhhu2rrhmpZ opt]# rsync -avz /opt/ /data/
 sending incremental file list
 ./
 back.sql
 bin.sql
 hd.sql
 log-bin.000004
 test.html
 xu.sqlsent 2,571,658 bytes received 133 bytes 1,714,527.33 bytes/sec
 total size is 12,755,928 speedup is 4.96
 总结:如果要同步的时候目录里面的内容,命令中目录i的后面必须要加"/";、
 如果要同步的是目录本身及其内容,则命令中只需写目录名。
 完全同步 --delete 让源和目标内容完全一致
 远程方式:
 使用的ssh协议,过程是加密的,类似scp命令 secure cp
 tcp传输过程,每传输一次数据都会有连接的建立,维护,断开过程。
 [root@CRM data]# rsync -avz /data/ root@IP:/data/
 root@120.79.213.171’s password:
 ^Crsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(638) [sender=3.1.2]
 [root@CRM data]# rsync -avz /data/ root@IP:/data/
 root@IP’s password:
 sending incremental file list
 1.txtsent 126 bytes received 41 bytes 47.71 bytes/sec
 total size is 20 speedup is 0.12
 问题:1.用户权限问题
 2.用户身份暴露了,安全隐患
 3.文件路径暴露了,安全隐患
 守护进程:
 rsync [OPTION]… SRC [SRC]… rsync://[USER@]HOST[:PORT]/DEST
 rsync [OPTION]… rsync://[USER@]HOST[:PORT]/SRC [DEST]
 rsync自身非常重要的功能(不适用系统用户,更加安全)
 1.按照rsync
 yum -y install rsync
 2.修改配置文件
 1)查询配置文件信息
 [root@CRM data]# rpm -qc rsync
 /etc/rsyncd.conf
 /etc/sysconfig/rsyncd
 2)修改配置文件
 uid = rsync —运行进程的用户
 git = rsync —运行进程的用户组
 port = 873 —监听端口
 fake super = yes —无需让rsync以root身份运行,允许存储文件的完整属性(3.1版本之后)
 use chroot = no --关闭假根功能
 max connections = 200 最大连接数
 timeout = 600 -超时时间
 ignore errors --忽略错误信息
 read only = false 怼备份数据可读写
 list = false 不允许查看模块信息
 auth users = rsync 定义虚拟用户,作为连接认证用户
 secrets file = /etc/reync.passwd 定义rsync访问用户连接认真密码文件路径
 log file = /var/log/rsyncd.log日志文件
 #######################################################
 [backup] 定义模块信息
 comment = welcome to xinqi backup! 模块注释信息
 path = /backup 定义接收备份数据目录
 3.创建程序用户
 useradd -M -s /sbin/nologin rsync
 4.创建目录,并修改所属
 mkdir -p /opt/back
 chown -R rsync:rsync /opt/back
 5.创建虚拟用户认证文件
 echo “xu:password” >/etc/rsync.passwd
 chmod 600 /etc/rsync.passwd
 5.启动服务
 systemctl start rsyncd
 systemctl enable rsyncd
 注意:一定要查看是否启动成功
 和查看端口号
 免密码:
 方法一:在客户端上创建密码文件,并给600权限
 echo “password” >/etc/rsync.passwd
 chmod 600 /etc/rsync.passwd
 方法二:适合写脚本 定义变量
 export RSYNC_PASSWD=password
 4.客户端验证
 安装rsync
 yum install -y rsync
 操作验证
 推:上传
 [root@CRM2 excel]# rsync -avz /opt/ rsync@IP::backup --password-file=/etc/rsync.passwd
 拉:下载
 在服务器创建下拉文件
 [root@CRM2 excel]# rsync -avz rsync@IP::backup /opt/ --password-file=/etc/rsync.passwd
 注意:
 1.如果密码权限没有修改为600,就会报错
 可以通过查看/var/log/messages
 2.需要考虑服务端下拉的文件权限,主要是读权限
 4.Rsync服务实践
 5.Rsync备份案例