1. rsync概述
rsync常用的传输工具,多台服务器之间传输数据,具备全量同步和增量同步
备份服务: rsync+定时任务 实现定时备份
官网: 传送门 http://rsync.samba.org
端口: 873
rsync运行模式: c/s client(客户端)/server(服务端) rsync守护进程模式
2. rsync应用场景
.定时任务+rsync(服务)
https://www.processon.com/view/link/608624a50791290af3353665
3. 部署rsync服务
3.1服务端backup
第一个历程:安装部署软件程序
#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 查询程序是否启动
3.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 指定访问备份服务端口信息
4 补充说明
4.1 补充:rsyncd.conf文件中全局配置和局部配置
全局配置:模块以上的配置信息 影响全部模块
局部配置:模块以下的配置信息 只影响当前模块
总结:局部配置优先于全局配置
4.2 补充:如何保证备份的数据属主和属组信息不变
4.2.1 方法一:增加模块
不同用户向不同模块传输数据
4.2.2 方法二:修改配置文件uid信息
uid = root
gid = root
#fake super = yes
备份目录属主属组需要修改为 root权限
4.3. rsync守护进程企业应用
1)守护进程多模块功能配置
开发人员
运维人员
数据库人员
创建多模块 --- 创建多模块对应目录并授权 --- 重启服务
[backup]
comment = "backup dir by oldboy"
path = /backup
[devdir]
path = /devdir
[dbdir]
path = /dbdir
2)守护进程的排除功能实践
环境准备:
[root@nfs01 ~]# mkdir /oldboy_dir/oldboy{01..03} -p
[root@nfs01 ~]# touch /oldboy_dir/oldboy{01..03}/{a..c}.txt
[root@nfs01 ~]# tree /oldboy_dir/
/oldboy_dir/
├── oldboy01
│?? ├── a.txt
│?? ├── b.txt
│?? └── c.txt
├── oldboy02
│?? ├── a.txt
│?? ├── b.txt
│?? └── c.txt
└── oldboy03
├── a.txt
├── b.txt
└── c.txt
需求:
01. 排除oldboy01目录不要传输备份,排除oldboy03目录中a.txt文件不要传输备份
`实现需求:--exclude=PATTERN`
[root@nfs01 ~]# rsync -avz /oldboy_dir/ --exclude=oldboy01 --exclude=oldboy03/a.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
./
oldboy02/
oldboy02/a.txt
oldboy02/b.txt
oldboy02/c.txt
oldboy03/
oldboy03/b.txt
oldboy03/c.txt
sent 381 bytes received 134 bytes 1,030.00 bytes/sec
total size is 0 speedup is 0.00
总结:排除的路径信息,需要编写为指定目录的相对路径
`常见错误`
1. 排除参数后面数据信息,不能写绝对路径
2. 排除参数后面数据信息,不能写相对路径
02. 排除的数据量比较大,有多个目录,多个文件都要排除
vim exlude.txt
oldboy01
oldboy03/a.txt
`错误示范:
[root@nfs01 oldboy_dir]# rsync -avz /oldboy_dir/ --exclude-from=/oldboy_dir/exclude.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
./
exclude.txt
oldboy02/
oldboy02/a.txt
oldboy02/b.txt
oldboy02/c.txt
oldboy03/
oldboy03/b.txt
oldboy03/c.txt
sent 482 bytes received 157 bytes 1,278.00 bytes/sec
total size is 24 speedup is 0.04`