Rsync介绍与搭建
- 1.概述
- 1.1 常用备份
- 1.2 常见组合:
- 1.3 官网
- 2.Rsync应用
- 2.1程序的安装
- 2.2数据传输模式
- 3.Rsync命令介绍
- 3.1 本地方式
- 3.2 远程方式
- 3.3 守护进程
- 4.Rsync服务端和客户端配置及验证
- 4.1安装软件包
- 4.2 修改配置文件/etc/rsync.conf
- 4.3 查找配置文件方式
- 4.4 修改配置文件
- 4.4 创建服务端信息
- 4.5 启动查看服务
- 4.6 客户端验证
- 4.6.1 客户端推送故障现象
- 4.6.2客户端下载故障现象
- 4.7 简单脚本:
- 实例配置
- 客户端需求
- 分析思路:
- 1、需要备份谁
- 2、备份的要求
- 简单脚本
1.概述
remote sync 远程同步
1.1 常用备份
完全备份:对所有数据全备份
增量备份:只备份上次增加的部分
差异备份:备份上次完全备份后发生的变化
1.2 常见组合:
完全+增量:一次完全+多次增量
完全+差异:一次完全+一次差异
1.3 官网
https://rsync.samba.org/
samba服务器:文件共享
端口号
TCP 873
运行模式
C/S:客户端,服务端
B/S:浏览器,服务端
2.Rsync应用
2.1程序的安装
yum -y install rsnc
2.2数据传输模式
数据同步方式
推:push,上传 upload
客户端的数据上传到rsync服务器
拉:pull,下载download
rsycn服务器主动下载客户端的数据
3.Rsync命令介绍
-a #归档模式传输,等于-tropgDl
-r #递归传输目录及子目录,即目录下得所有目录都同样传输。
-t #保持文件时间信息
-o #保特文件属主信息
-p #保持文件权限
-g #保持文件属组信息
-D #保持设备文件信息
-l #保留软连接
-v #详细模式输出,打印速率,文件数量等
-z #传输时进行压宿以提高效率
-P #显示同步的过程及传输时的进度等信息
-L #保留软连接指向的目标文件
-e #使用的信道协议,指定替代rsh的she11程序
--exclude=PATTERN #指定排除不需要传输的文件模式
--exclude-from=file #文件名所在的目录文件
--bwlimit=100 #限速传榆
--partial #断点续传
--delete #让目标目录和原目录数据保持一致
3.1 本地方式
类似cp命令
文件同步
[root@backup ~]# rsync -avz /etc/passwd /data/
sending incremental file list
passwd
目录同步1:
[root@backup ~]# rsync -avz /data/ /opt/
sending incremental file list
./
fstab
passwd
目录同步2:
[root@backup ~]# rsync -avz /data /opt/
sending incremental file list
data/
data/fstab
data/passwd
总结:
如果要同步的是目录里面的内容需要添加‘/’
如同要同步的书目录本身以及内容,则命令只需要写目录名不加‘、’
完全同步:加--delete ,源和目标内容完全一致
清空远端的文件
[root@backup ~]# rsync -avz /null/ /opt/ --delete #慎用
3.2 远程方式
使用ssh 协议 类似scp
SCP
[root@backup ~]# scp -r /null/ root@172.16.10.21:/tmp/
rsync
[root@backup ~]# rsync -r /data root@172.16.10.21:/tmp/
问题:
1:用户权限问题
2:用户身份暴漏
3:文件路径暴露
3.3 守护进程
pull: 拉取
rsync [OPTION]... [USER@]HOST::SRC [DEST]
[root@backup ~]# rsync -avz rsync_backup@172.16.10.21::backup/ /tmp/ --password-file=/etc/rsync.password
rsync 命令
[OPTION]... -avz 选项
[USER@ rsync_backup 虚拟用户
HOST:: 172.16.10.21:: 远程主机地址
SRC backup 远程主机模块
[DEST] /tmp/ 远程备份路径
push 推送
[root@backup ~]#rsync -avz /mnt/ rsync_backup@172.16.10.21::backup/ --passwork-file=/etc/rsync.password
4.Rsync服务端和客户端配置及验证
4.1安装软件包
yum -y install rsync
4.2 修改配置文件/etc/rsync.conf
4.3 查找配置文件方式
A:
rpm -qc rsync
/etc/rsyncd.conf
/etc/sysconfig/rsyncd
B:
rpm -ql rsync
/etc/rsyncd.conf
C:
rpm -ql rsync | grep etc
/etc/rsyncd.conf
/etc/sysconfig/rsyncd
4.4 修改配置文件
模板:
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.password
log file = /var/log/rsyncd.log
[backup]
comment = ....
path = /backup
注释:
#全局模块
uid = rsync
gid = rsync
port = 873
fake super = yes 无需让rsync以root身份运行,允许存储文件的完整属性(3.1以后)
use chroot = no 关闭假根功能
max connections = 200 最大连接数量
rimeout = 600 服务连接最大时间
ignore errors 忽略错误信息
read only = false 对备份数据可读写
list = false 不允许查看模板
auth user = rsync_backup 定义虚拟用户作为连接认证用户
secrets file = /etc/rsync.password 定义rsync服务用户连接认证密码文件路径
log file = /var/log/rsyncd.log 日志路径
##局部模块
[backup] 定义模块信息
comment = 数据已同步 模块注释信息
path = /backup 定义接收备份数据目录
4.4 创建服务端信息
创建用户
[root@backup ~]# useradd -M -s /sbin/nologin rsync
创建目录
[root@backup ~]# mkdir [-p] /backup 创建目录
[root@backup ~]# chmod -R rsync.rsync /backup 权限
创建虚拟用户文件
创建文件
echo "rsync_backup:123" >/etc/rsync.password 123表示密码
#echo “auth user:密码” > secrets file
chmod 600 /etc/rsync.password
4.5 启动查看服务
启动服务
systemclt start rsyuncd
systemclt enable rsyuncd
服务启动检查
systemctl status rsync #显示active
检查端口及方式
[root@backup ~]#lsof -i :873
rsync 3345 root 3u IPv4 45259 0t0 TCP *:rsync (LISTEN)
rsync 3345 root 5u IPv6 45260 0t0 TCP *:rsync (LISTEN)
[root@backup ~]#netstat -antp |grep rsync
[root@backup ~]#ss -antp |grep rsync
[root@backup ~]#netstat -lntp |grep rsync
4.6 客户端验证
1、安装rsync软件包
2、验证
推送
客户端推送客户端数据到rsync服务端
rsync -avz /etc/ rsync_backup@172.16.10.31::backup
拉下载
客户端从服务端将backup模块下的资源下载到本地
rsync -avz rsync_backup@172.16.10.31::backup/ /tmp/
4.6.1 客户端推送故障现象
客户端推送到服务端需要考虑密码文件权限是否修改为600
密码文件权限
[root@nfs ~]# rsync -avz /etc/ rsync_backup@172.16.10.31::backup
sending incremental file list
rsync: failed to set times on "." (in backup): Operation not permitted (1)
原因:虚拟用户密码权限为问题
chmod 600 /etc/rsync.password
注意:chmod不要写成chown
快速删除服务端备份数据 ##慎用
mkdir /null
[root@nfs ~]# rsync -avz /null/ rsync_backup@172.16.10.31::backup --delete
4.6.2客户端下载故障现象
客户端下载文件时需要考虑服务端文件权限,主要是读
需要下载的文件没有权限
[root@nfs ~]# rsync -avz rsync_backup@172.16.10.31::backup/ /tmp/
receiving incremental file list
rsync: failed to read xattr user.rsync.%stat for "messages" (in backup): Permission denied (13)
rsync: failed to read xattr user.rsync.%stat for "secure" (in backup): Permission denied (13)
rsync: send_files failed to open "messages" (in backup): Permission denied (13)
rsync: send_files failed to open "secure" (in backup): Permission denied (13)
免密处理
方法1:在客户端创建密码文件,并给600权限
[root@nfs ~]# echo "123" >/etc/rsync.password
[root@nfs ~]# chmod 600 /etc/rsync.password
[root@nfs ~]# rsync -avz rsync_backup@172.16.10.31::backup/ /tmp/ --password-file=/etc/rsync.password
方法2:定义变量
[root@nfs ~]# export RSYNC_PASSWORD=123
[root@nfs ~]# rsync -avz rsync_backup@172.16.10.31::backup/ /tmp/
数据无差异同步
拉取远端数据:与本地一致,远端没有本地有会删除,造成客户端数据删除
[root@nfs ~]# rsync -avz --delete rsync_backup@172.16.10.31::backup/ /data/ --password-file=/etc/rsync.password
推送数据:本地与远端保持一致,本地没有远端会被姗迟,造成服务器丢失
[root@nfs ~]# rsync -avz --delete /data/ rsync_backup@172.16.10.31::backup/ --password-file=/etc/rsync.password
4.7 简单脚本:
服务端
#!/bin/bash
#1、安装包
yum install -y rsync
#yum install -y rsync &> /dev/null 表示不看过程
#2、创建用户
useradd -M -s /sbin/nologin rsync
#3、创建备份目录,并修改所属
mkdir /backup
chown -R rsync.rsync /backup
#4、修改配置文件
cat >/etc/rsyncd.conf<<EOF
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.password
log file = /var/log/rsyncd.log
[backup]
comment = ....
path = /backup
EOF
#5、创建认证文件
echo "rsync_backup:123" >/etc/rsync.password
chmod 600 /etc/rsync.password
#6、启动服务
systemctl start rsyncd
systemctl enable rsyncd
#7、服务检查,检查端口
#systemctl status rsync
#显示active
#lsof -i :873
客户端:
#!/bin/bash
#1.安装rsyncbao
yum -y install rsync
#2.添加密码文件或修改变量
#如果设置不同的密码使用密码文件
--password-file=
#如果密码相同,使用变量会方便
export RSYNC_PASSWORD=
实例配置
客户端需求
1、每天凌晨1点服务器本地打包备份(系统配置文件、日志文件、应用配置文件、数据等其他文件)
2、备份的数据存放至以主机名+IP+当前时间内名称的目录中,例如:/backup/nfs_172.16.10.21_2023-01-03
3、通过rsync推送本地已经打包的备份文件到backup服务器
4、本地已打包的数据合理保留日期,避免磁盘浪费
分析思路:
1、需要备份谁
系统配置文件
/etc/fstab /etc/hosts /var/spool/cron/root(计划任务)
日志文件:
/var/log/messages /var/log/secure /var/log/cron
服务配置文件:
/etc/rsync.conf
2、备份的要求
/backup/nfs_172.16.10.21_2023-01-03
获取以下信息
主机名:hostname
IP地址:ifconfig eth1 | awk 'NR==2{print $2}' 或者 hostname -I |awk '{print $2}'
时间:date +%F
目录名组合:
[root@nfs ~]#/backup/ $(hostname)_$(ifconfig eth1 | awk 'NR==2{print $2}')_$(date +%F)
简单脚本
#!/bin/bash
#1.定义变量
Host=$(hostname)
Ip=$(ifconfig eth1 | awk 'NR==2{print $2}')
Date=$(date +%F)
BackupDir=/backup
Dest=${BackupDir}/${Host}_${Ip}_${Date}
#2、创建目录
mkdir -p $Dest
#3、收集需要备份的文件
#sysconf backup
cp -p /etc/fstab /etc/hosts /var/spool/cron/root $Dest
#logs backup
cp -p /var/log/messages /var/log/secure /var/log/cron $Dest
#serverconf backup
cp -p /etc/rsyncd.conf $Dest
#4、推到服务端
Rsync_User=rsync_backup
Rsync_IP=172.16.10.31
Rsync_Module=backup
export RSYNC_PASSWORD=123
rsync -avz $Dest $Rsync_User@$Rsync_IP::$Rsync_Module