1. Rsync概述与环境规划
Rsync是一个开源的文件同步工具,用于在本地和远程系统之间同步文件和目录。Rsync支持增量同步,只传输文件的差异部分,大大提高了同步效率。更多学习教程www.fgedu.net.cn
1.1 Rsync版本说明
Rsync目前主要版本为3.x系列,本教程以Rsync 3.2.7为例进行详细讲解。Rsync 3.x版本相比之前版本在性能、稳定性和功能方面都有显著提升,支持更多的同步选项和特性。
$ rsync –version
rsync version 3.2.7 protocol version 31
# 查看系统版本
$ cat /etc/os-release
NAME=”Oracle Linux Server”
VERSION=”8.9″
ID=”ol”
PRETTY_NAME=”Oracle Linux Server 8.9″
# 查看内核版本
$ uname -r
5.4.17-2136.302.7.2.el8uek.x86_64
1.2 环境规划
本次安装环境规划如下:
rsync01.fgedu.net.cn (192.168.1.112) – Rsync主服务器
rsync02.fgedu.net.cn (192.168.1.113) – Rsync备用服务器
Rsync客户端:
client01.fgedu.net.cn (192.168.1.114) – Rsync客户端1
client02.fgedu.net.cn (192.168.1.115) – Rsync客户端2
Rsync版本:3.2.7
安装方式:RPM包安装
数据存储:本地磁盘
2. 硬件环境要求
Rsync作为文件同步工具,对硬件资源要求根据同步数据量和并发任务而定。学习交流加群风哥微信: itpux-com
2.1 物理主机环境要求
– CPU:至少4核
– 内存:至少8GB
– 磁盘:系统盘120GB SSD + 数据盘1TB SSD
# Rsync客户端要求
– CPU:至少2核
– 内存:至少4GB
– 磁盘:系统盘120GB SSD + 数据盘500GB SSD
# 检查Rsync服务器资源
# free -h
total used free shared buff/cache available
Mem: 8G 2.4G 5.1G 128M 512M 5.4G
Swap: 4G 0B 4G
# 检查磁盘空间
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 120G 20G 100G 17% /
/dev/sdb1 1TB 100G 900G 10% /data
2.2 vSphere虚拟主机环境要求
– Rsync服务器:
– vCPU:4核
– 内存:8GB
– 磁盘:系统盘120GB SSD + 数据盘1TB SSD
– 网络:VMXNET3网卡,10Gbps网络
– Rsync客户端:
– vCPU:2核
– 内存:4GB
– 磁盘:系统盘120GB SSD + 数据盘500GB SSD
– 网络:VMXNET3网卡,10Gbps网络
资源池配置:
– CPU预留:Rsync服务器2GHz,Rsync客户端1GHz
– 内存预留:Rsync服务器4GB,Rsync客户端2GB
– 内存限制:Rsync服务器8GB,Rsync客户端4GB
– CPU份额:正常
– 内存份额:正常
2.3 云平台主机环境要求
– Rsync服务器:
– 实例规格:ecs.g6.2xlarge或同等规格
– vCPU:8核
– 内存:16GB
– 系统盘:SSD云盘 120GB
– 数据盘:SSD云盘 1TB
– 网络带宽:10Gbps以上
– Rsync客户端:
– 实例规格:ecs.g6.xlarge或同等规格
– vCPU:4核
– 内存:8GB
– 系统盘:SSD云盘 120GB
– 数据盘:SSD云盘 500GB
– 网络带宽:10Gbps以上
存储配置:
– OSS对象存储:用于存储备份数据
– NAS文件存储:用于共享配置文件
– 云盘快照:定期备份数据
3. 操作系统环境准备
在安装Rsync之前,需要对操作系统进行必要的配置和优化。
3.1 操作系统版本检查
# cat /etc/os-release
NAME=”Oracle Linux Server”
VERSION=”8.9″
ID=”ol”
PRETTY_NAME=”Oracle Linux Server 8.9″
# 检查内核版本
# uname -r
5.4.17-2136.302.7.2.el8uek.x86_64
# 检查SELinux状态
# getenforce
Enforcing
# 检查防火墙状态
# systemctl status firewalld
● firewalld.service – firewalld – dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running)
3.2 依赖服务安装
# dnf install -y wget curl tar gzip
# 关闭防火墙
# systemctl stop firewalld
# systemctl disable firewalld
# 关闭SELinux
# setenforce 0
# sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/’ /etc/selinux/config
# 创建Rsync用户
# useradd -r -s /bin/false rsync
# 创建目录结构
# mkdir -p /data/rsync/{config,bin,data}
# chown -R rsync:rsync /data/rsync
3.3 配置网络
# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.112
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=114.114.114.114
# 重启网络
# systemctl restart NetworkManager
# 验证网络
# ping -c 4 google.com
4. Rsync安装配置
完成环境准备后,开始安装Rsync。
4.1 安装Rsync
# dnf install -y rsync
# 验证安装
# rsync –version
rsync version 3.2.7 protocol version 31
# 查看Rsync路径
# which rsync
/usr/bin/rsync
4.2 配置Rsync服务器
# vi /etc/rsyncd.conf
uid = rsync
gid = rsync
use chroot = no
max connections = 10
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[backup]
path = /data/rsync/data
comment = Backup directory
read only = no
write only = no
list = yes
uid = rsync
gid = rsync
auth users = rsync
secrets file = /etc/rsyncd.secrets
# 创建Rsync密码文件
# vi /etc/rsyncd.secrets
rsync:password
# 设置密码文件权限
# chmod 600 /etc/rsyncd.secrets
# 创建数据目录
# mkdir -p /data/rsync/data
# chown -R rsync:rsync /data/rsync/data
# 启动Rsync服务
# systemctl start rsyncd
# systemctl enable rsyncd
# 验证服务状态
# systemctl status rsyncd
4.3 配置Rsync客户端
# dnf install -y rsync
# 创建Rsync密码文件
# vi /etc/rsync.passwd
password
# 设置密码文件权限
# chmod 600 /etc/rsync.passwd
# 测试Rsync同步
# rsync -avz –password-file=/etc/rsync.passwd /etc rsync@192.168.1.112::backup/etc
# 验证同步
# ls -la /data/rsync/data/etc
5. Rsync配置优化
为了提高Rsync的性能和稳定性,需要进行一些配置优化。
5.1 基本配置优化
# vi /etc/rsyncd.conf
uid = rsync
gid = rsync
use chroot = no
max connections = 50
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[backup]
path = /data/rsync/data
comment = Backup directory
read only = no
write only = no
list = yes
uid = rsync
gid = rsync
auth users = rsync
secrets file = /etc/rsyncd.secrets
# 重启Rsync服务
# systemctl restart rsyncd
5.2 高可用配置
# dnf install -y rsync
# 配置主服务器
# vi /etc/rsyncd.conf
uid = rsync
gid = rsync
use chroot = no
max connections = 50
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[backup]
path = /data/rsync/data
comment = Backup directory
read only = no
write only = no
list = yes
uid = rsync
gid = rsync
auth users = rsync
secrets file = /etc/rsyncd.secrets
# 配置备用服务器
# vi /etc/rsyncd.conf
uid = rsync
gid = rsync
use chroot = no
max connections = 50
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[backup]
path = /data/rsync/data
comment = Backup directory
read only = no
write only = no
list = yes
uid = rsync
gid = rsync
auth users = rsync
secrets file = /etc/rsyncd.secrets
# 启动Rsync服务
# systemctl start rsyncd
# systemctl enable rsyncd
5.3 内存配置
# vi /etc/sysconfig/rsyncd
RSYNC_ENABLE=”yes”
RSYNC_OPTS=”–daemon –max-connections=50 –timeout=300″
# 重启Rsync服务
# systemctl restart rsyncd
6. Rsync服务器配置
Rsync服务器负责接收和存储来自客户端的同步数据。
6.1 配置模块
# vi /etc/rsyncd.conf
[backup]
path = /data/rsync/data
comment = Backup directory
read only = no
write only = no
list = yes
uid = rsync
gid = rsync
auth users = rsync
secrets file = /etc/rsyncd.secrets
[web]
path = /data/rsync/web
comment = Web directory
read only = no
write only = no
list = yes
uid = rsync
gid = rsync
auth users = rsync
secrets file = /etc/rsyncd.secrets
[database]
path = /data/rsync/database
comment = Database directory
read only = no
write only = no
list = yes
uid = rsync
gid = rsync
auth users = rsync
secrets file = /etc/rsyncd.secrets
# 创建数据目录
# mkdir -p /data/rsync/{web,database}
# chown -R rsync:rsync /data/rsync/{web,database}
# 重启Rsync服务
# systemctl restart rsyncd
6.2 配置访问控制
# vi /etc/rsyncd.conf
[backup]
path = /data/rsync/data
comment = Backup directory
read only = no
write only = no
list = yes
uid = rsync
gid = rsync
auth users = rsync
secrets file = /etc/rsyncd.secrets
hosts allow = 192.168.1.0/24
hosts deny = *
# 重启Rsync服务
# systemctl restart rsyncd
7. Rsync客户端配置
Rsync客户端负责向服务器发送同步数据。
7.1 配置同步脚本
# vi /data/rsync/scripts/sync.sh
#!/bin/bash
LOG_FILE=”/var/log/rsync_sync.log”
ALERT_EMAIL=”admin@fgedu.net.cn”
# 同步/etc目录
echo “$(date): Syncing /etc directory…” >> $LOG_FILE
rsync -avz –password-file=/etc/rsync.passwd /etc rsync@192.168.1.112::backup/etc
# 同步/home目录
echo “$(date): Syncing /home directory…” >> $LOG_FILE
rsync -avz –password-file=/etc/rsync.passwd /home rsync@192.168.1.112::backup/home
# 同步/opt目录
echo “$(date): Syncing /opt directory…” >> $LOG_FILE
rsync -avz –password-file=/etc/rsync.passwd /opt rsync@192.168.1.112::backup/opt
# 发送邮件通知
echo “Rsync sync completed” | mail -s “Rsync Sync Status” $ALERT_EMAIL
# 添加执行权限
# chmod +x /data/rsync/scripts/sync.sh
# 添加定时任务
# crontab -e
0 0 * * * /data/rsync/scripts/sync.sh
7.2 配置增量同步
# vi /data/rsync/scripts/incremental_sync.sh
#!/bin/bash
LOG_FILE=”/var/log/rsync_incremental.log”
# 增量同步
echo “$(date): Starting incremental sync…” >> $LOG_FILE
rsync -avz –password-file=/etc/rsync.passwd –delete /data/app rsync@192.168.1.112::backup/app
# 记录同步状态
echo “$(date): Incremental sync completed” >> $LOG_FILE
# 添加执行权限
# chmod +x /data/rsync/scripts/incremental_sync.sh
# 添加定时任务
# crontab -e
*/30 * * * * /data/rsync/scripts/incremental_sync.sh
8. Rsync安全配置
Rsync提供了多种安全功能,包括认证、授权、TLS加密等。
8.1 认证配置
# vi /etc/rsyncd.conf
[backup]
path = /data/rsync/data
comment = Backup directory
read only = no
write only = no
list = yes
uid = rsync
gid = rsync
auth users = rsync
secrets file = /etc/rsyncd.secrets
# 创建Rsync密码文件
# vi /etc/rsyncd.secrets
rsync:strong-password
# 设置密码文件权限
# chmod 600 /etc/rsyncd.secrets
# 重启Rsync服务
# systemctl restart rsyncd
8.2 SSH加密配置
# ssh-keygen -t rsa -b 2048
# 复制公钥到服务器
# ssh-copy-id rsync@192.168.1.112
# 测试SSH连接
# ssh rsync@192.168.1.112
# 使用SSH同步
# rsync -avz -e ssh /etc rsync@192.168.1.112:/data/rsync/data/etc
8.3 防火墙配置
# firewall-cmd –permanent –add-port=873/tcp
# firewall-cmd –reload
# 验证防火墙配置
# firewall-cmd –list-ports
9. Rsync性能优化
在生产环境中,需要对Rsync进行性能优化以提高同步效率。from:www.itpux.com
9.1 网络优化
# vi /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 15
# 应用配置
# sysctl -p
9.2 磁盘优化
# vi /etc/sysctl.conf
vm.swappiness = 0
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
# 应用配置
# sysctl -p
# 优化XFS文件系统
# vi /etc/fstab
/dev/sdb1 /data/rsync/data xfs defaults,noatime,nodiratime 0 0
# 重新挂载
# mount -o remount /data/rsync/data
9.3 Rsync参数优化
# rsync -avz –password-file=/etc/rsync.passwd –compress-level=9 –checksum –delete –timeout=300 /data/app rsync@192.168.1.112::backup/app
# 调整Rsync服务器参数
# vi /etc/rsyncd.conf
max connections = 100
timeout = 300
# 重启Rsync服务
# systemctl restart rsyncd
10. Rsync升级迁移
本节介绍Rsync的版本升级和数据迁移方法。
10.1 Rsync版本升级
# cp /etc/rsyncd.conf /backup/rsync-config-$(date +%Y%m%d)
# 停止Rsync服务
# systemctl stop rsyncd
# 升级Rsync
# dnf update -y rsync
# 启动Rsync服务
# systemctl start rsyncd
# 验证升级
# rsync –version
rsync version 3.2.7 protocol version 31
# 测试Rsync服务
# rsync -avz –password-file=/etc/rsync.passwd /etc rsync@192.168.1.112::backup/etc
10.2 Rsync数据迁移
# tar -czf /backup/rsync-data-$(date +%Y%m%d).tar.gz /data/rsync/data
# 在新服务器上恢复数据
# tar -xzf /backup/rsync-data-20230405.tar.gz -C /
# 安装Rsync
# dnf install -y rsync
# 配置Rsync服务器
# 重复配置步骤
# 启动Rsync服务
# systemctl start rsyncd
# systemctl enable rsyncd
# 验证迁移
# rsync -avz –password-file=/etc/rsync.passwd /etc rsync@192.168.1.112::backup/etc
11. Rsync备份恢复
本节介绍Rsync的备份和恢复方法。
11.1 Rsync备份
# vi /data/rsync/scripts/backup.sh
#!/bin/bash
BACKUP_DIR=”/backup/rsync”
DATE=$(date +%Y%m%d)
# 创建备份目录
mkdir -p $BACKUP_DIR
# 停止Rsync服务
systemctl stop rsyncd
# 备份配置文件
cp /etc/rsyncd.conf $BACKUP_DIR/rsyncd.conf-$DATE
cp /etc/rsyncd.secrets $BACKUP_DIR/rsyncd.secrets-$DATE
# 备份数据
tar -czf $BACKUP_DIR/rsync-data-$DATE.tar.gz /data/rsync/data
# 启动Rsync服务
systemctl start rsyncd
# 清理旧备份(保留7天)
find $BACKUP_DIR -type f -mtime +7 -exec rm -f {} \;
# 添加执行权限
# chmod +x /data/rsync/scripts/backup.sh
# 添加定时任务
# crontab -e
0 0 * * * /data/rsync/scripts/backup.sh
11.2 Rsync恢复
# systemctl stop rsyncd
# 清理现有数据
# rm -rf /data/rsync/data
# 恢复数据
# tar -xzf /backup/rsync/rsync-data-20230405.tar.gz -C /
# 恢复配置文件
# cp /backup/rsync/rsyncd.conf-20230405 /etc/rsyncd.conf
# cp /backup/rsync/rsyncd.secrets-20230405 /etc/rsyncd.secrets
# chmod 600 /etc/rsyncd.secrets
# 启动Rsync服务
# systemctl start rsyncd
# 验证恢复
# systemctl status rsyncd
# rsync -avz –password-file=/etc/rsync.passwd /etc rsync@192.168.1.112::backup/etc
11.3 Rsync监控脚本
# vi /data/rsync/scripts/monitor.sh
#!/bin/bash
LOG_FILE=”/var/log/rsync_monitor.log”
ALERT_EMAIL=”admin@fgedu.net.cn”
check_rsync_status() {
echo “$(date): Checking rsync status…” >> $LOG_FILE
status=$(systemctl status rsyncd | grep Active | awk ‘{print $2}’)
if [ “$status” != “active” ]; then
echo “$(date): Rsync is not running” >> $LOG_FILE
echo “Rsync is not running” | mail -s “Rsync Alert” $ALERT_EMAIL
systemctl start rsyncd
else
echo “$(date): Rsync is running” >> $LOG_FILE
fi
}
check_disk_space() {
echo “$(date): Checking disk space…” >> $LOG_FILE
usage=$(df -h /data/rsync/data | tail -1 | awk ‘{print $5}’ | sed ‘s/%//’)
if [ $usage -gt 90 ]; then
echo “$(date): Disk space warning: /data/rsync/data is $usage% full” >> $LOG_FILE
echo “Disk space warning: /data/rsync/data is $usage% full” | mail -s “Rsync Alert” $ALERT_EMAIL
else
echo “$(date): Disk space: /data/rsync/data is $usage% full” >> $LOG_FILE
fi
}
check_rsync_port() {
echo “$(date): Checking rsync port…” >> $LOG_FILE
port=$(netstat -tuln | grep 873)
if [ -z “$port” ]; then
echo “$(date): Rsync port 873 is not open” >> $LOG_FILE
echo “Rsync port 873 is not open” | mail -s “Rsync Alert” $ALERT_EMAIL
systemctl restart rsyncd
else
echo “$(date): Rsync port 873 is open” >> $LOG_FILE
fi
}
main() {
check_rsync_status
check_disk_space
check_rsync_port
}
main
# 添加执行权限
# chmod +x /data/rsync/scripts/monitor.sh
# 添加定时任务
# crontab -e
*/15 * * * * /data/rsync/scripts/monitor.sh
通过以上步骤,Rsync安装配置、性能优化、升级迁移、备份恢复等内容已全部完成。Rsync作为开源文件同步工具,能够高效地同步文件和目录,是企业级数据同步的重要工具。
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
