1. rsync概述
rsync常用的传输工具,多台服务器之间传输数据,具备全量同步和增量同步
备份服务: rsync+定时任务 实现定时备份
官网: 传送门 http://rsync.samba.org
端口: 873
rsync运行模式: c/s client(客户端)/server(服务端) rsync守护进程模式
2. rsync应用场景
.定时任务+rsync(服务)
3. 部署rsync服务
(1)服务端部署
安装部署软件
#rpm -qa|grep rsync
yum install -y rsync
创建管理备份目录以及数据用户信息
useradd rsync -M -s /sbin/nologin
创建备份数据目录
mkdir /backup
chown rsync.rsync /backup/
创建用户列表文件
echo 'rsync_backup:oldboy123' >/etc/rsync.password
chmod 600 /etc/rsync.password
编写配置文件
#vi /etc/rsyncd.conf
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = "backup dir by oldboy"
path = /backup
-----------------------------架构备份服务文件配置讲解---------------------------------------------------------
/etc/rsyncd.conf
uid = rsync --- 指定rsync服务备份目录或数据信息管理用户信息
gid = rsync --- 指定rsync服务备份目录或数据信息管理用户组信息
port = 873 --- 指定服务程序端口信息
fake super = yes --- 将uid指令指定用户可以伪装为管理员用户
use chroot = no --- 提高数据备份安全性,前提需要将备份目录权限与uid信息设置root用户 ???鸡肋
max connections = 200 --- 设置最大连接数
timeout = 300 --- 设置连接会话超时时间(闲置状态)
pid file = /var/run/rsyncd.pid --- 记录服务程序pid文件(进程号文件)
lock file = /var/run/rsync.lock --- 服务程序锁文件(开发-网络编程)
log file = /var/log/rsyncd.log --- 服务程序日志文件
ignore errors --- 尽量忽略简单异常错误
read only = false --- 指定备份数据的目录是否是只读状态
list = false --- 列表显示备份服务模块信息???
hosts allow = 172.16.1.0/24 --- 白名单 允许哪个客户端主机地址进行访问
hosts deny = 0.0.0.0/32 --- 黑名单 允许哪个客户端主机地址不能访问
auth users = rsync_backup --- 指定可以进行认证用户信息(不需要在系统中创建)
secrets file = /etc/rsync.password --- 用户密码文件(权限600 属主属组 root)
[backup] --- 模块信息 模块下面的信息成为局部配置信息
comment = "实现运维人员备份数据" --- 模块注释说明
path = /backup --- 数据备份目录
[devdata]
comment = "实现开发人员备份数据"
path = /devdata
启动服务程序
systemctl start rsyncd
ps -ef|grep rsync 查询程序是否启动
netstat -lntup|grep rsync 查询程序是否启动
(2)客户端部署过程
交互式实现数据传递过程:
rsync -avz /home/oldboy/oldboy.txt rsync_backup@172.16.1.41::backup
#此时会提示输入密码
oldboy123
免交互实现数据传递过程:
两种方式:
方式一:在客户端创建一个密码文件(主要使用
echo oldboy123 >/etc/rsync.password
chmod 600 /etc/rsync.password
##免密传输:--password-file=/etc/rsync.password
rsync -avz /etc rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
方式二:配置环境变量实现免交互
RSYNC_PASSWORD --- 设置环境变量实现免交互
echo 'export RSYNC_PASSWORD="oldboy123"' >> /etc/profile
rsync -avz /etc/selinux/config rsync_backup@172.16.1.41::backup
参数信息总结:-avz
-v, --verbose increase verbosity
显示传输过程信息
-z, --compress compress file data during the transfer
文件在传输时做压缩处理
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
执行-a参数等价于执行-rlptgoD
-r, --recursive recurse into directories
进行递归复制数据信息(可以实现目录传输)
-l, --links copy symlinks as symlinks 没有任何作用
可以复制软链接文件
-L, --copy-links transform symlink into referent file/dir
将链接文件所执行源文件信息做备份
-p, --perms preserve permissions
维持权限属性信息不变
-t, --times preserve modification times
维持文件修改时间属性不变
-o, --owner preserve owner (super-user only)
维持文件属主信息不变
-g, --group preserve group
维持文件属组信息不变
-D same as --devices --specials
复制传输设备文件信息可以保持设备文件属性信息不变
-P same as --partial --progress
显示数据传输进度信息
--belete 实现无差异数据同步
--bwlimit 实现数据传输限速功能 KBps
--exclude 实现数据备份排除功能
--exclude-form 实现数据备份排除功能
--password-file 读取密码文件实现免交互传输数据
--port 指定访问备份服务端口信息
rsyncy应用
--delete 让目标目录和源目录一致
rsync -avzP /liu --exclude-from=liu.txt [root@10.0.0.123:/liu](https://links.jianshu.com/go?to=mailto%3Aroot%4010.0.0.123%3A%2Fliu)
from 要从哪里来 liu.txt 里面是要排除的东西
第一步编辑一个文件最好是在相对应的目录中,写入要排除的内容,可以是绝对,也可以是相对
三:守护进程创建备份目录
客户端要在服务端备份数据,可以在相对应的目录后加入所要的目录
正确示范:
rsync -avzP /liu --exclude-from=liu.txt [root@10.0.0.123:/liu/yan](https://links.jianshu.com/go?to=mailto%3Aroot%4010.0.0.123%3A%2Fliu%2Fyan)
[root@10.0.0.123:/liu/yan](https://links.jianshu.com/go?to=mailto%3Aroot%4010.0.0.123%3A%2Fliu%2Fyan) /liu后面所跟的/yan 就是客户端向服务器自己创建的目录
--exclude 排除
1.正确示范
rsync -avzP /liu --exclude=liu1--exclude=1.txt[root@10.0.0.123:/liu](https://links.jianshu.com/go?to=mailto%3Aroot%4010.0.0.123%3A%2Fliu)
不要/liu下的liu1,并且不要1.txt
错误:rsync -avzP /liu --exclude=/liu/liu1 --exclude=1.txt[root@10.0.0.123:/liu](https://links.jianshu.com/go?to=mailto%3Aroot%4010.0.0.123%3A%2Fliu)
不要/liu下的liu1,并且不要1.txt
1. 排除参数后面数据信息,不能写绝对路径
2. 排除错误后面数据信息,不能写相对路劲
总结:排除的路径信息,需要编写为指定目录的相对路径
--bwlimit 限速
rsync -avz --bwlimit=10k /tmp rxync_backup@10.0.0.41::backup
守护进程的访问控制
控制不是所有任何人都能向服务器传输数据
Vi /etc/rsync.conf 配置中的白名单和黑名单
Hosts allow = 10.0.0.123/24 白名单
Hosts deny = 0.0.0.0/24 黑名单
第一种情况:白名单控制:只允许,其他的都拒绝
第二种情况:黑名单控制:只拒绝,其他的偶可以
第三种情况:即允许又拒绝 优先白名单
介意:尽量只使用一种名单