Rsync服务

Rsync 是一款同步文件、目录的命令,同时也可作为一个服务,支持增量同步,常用于备份文件到指定服务器。

一、对比 scp

1
scp -r /etc qiankong@192.168.10.250:/tmp
1
rsync -avz /etc qiankong@192.168.10.250:/var/tmp
  • -a 多个选项的组合
  • -v 显示传输时详细信息
  • -z 压缩传输,节省带宽

scp 不支持增量同步,每次都会全部覆盖一遍。

rsync 会自动对比文件差异,只同步新增和修改。

二、应用场景

应用场景 应用建议
rsync作为命令使用 临时拉取,推送数据。和 scp 差不多。
定时备份(rsync + crond 定时备份,增量传输
实时同步 解决存储服务单点问题
异地容灾 备份到异地的服务器

三、不同模式

3.1 本地模式

本地模式和 cp 命令无异。

1
rsync -a /etc /tmp
1
rsync -a /etc/ /tmp

注意

  • /etc 传输目录及其内部所有文件
  • /etc/ 只传输内部所有文件

3.2 远程模式

格式
rsync -a 源文件 目标
推送 rsync /etc/hostname qiankong@192.168.10.250:/tmp
拉取 rsync qiankong@192.168.10.250:/etc/hostname /opt
1
rsync -a /etc/hostname qiankong@192.168.10.250:/tmp
1
rsync -a qiankong@192.168.10.250:/etc/hostname /opt

3.3 守护进程模式

服务通用流程

:one: 部署

:two: 配置

:three: 启动、使用

:four: 优化

:five: 故障

:six: 自动化(监控,日志,安全,自动部署,容器)

3.3.1 安装部署

  1. 安装
1
yum install rsync -y
  1. 主要配置文件
1
rpm -ql rsync
1
2
3
4
5
6
7
8
[root@study-linux tmp]# rpm -ql rsync
/etc/rsyncd.conf # 配置文件
/etc/sysconfig/rsyncd
/usr/bin/rsync # 命令本身
/usr/lib/systemd/system/rsyncd.service # systemctl 配置
/usr/lib/systemd/system/rsyncd.socket
/usr/lib/systemd/system/rsyncd@.service
....

3.3.2 配置

1
vim /etc/rsyncd.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
fake super = yes
uid = rsync
gid = rsync
use chroot = no
max connections = 2000
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 192.168.10.0/24
# hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
############################################
[data]
comment = some date by qiankong
path = /data/rsyncd_data

启动服务

1
2
systemctl enable rsyncd
systemctl start rsyncd

检查进程

1
ps -ef |grep rsync

检查端口

1
ss -untlp |grep rsync

放行端口号(总是忘记重载配置)

1
2
firewall-cmd --permanent --add-port=873/tcp
firewall-cmd --reload

3.3.3 补充配置

  1. 添加虚拟用户
1
useradd -r -M rsync -s /sbin/nologin

验证

1
id rsync
  1. 编辑密码文件
1
vim /etc/rsync.password
1
用户名:密码
1
rsync_backup:1
1
chmod 600 /etc/rsync.password
  1. 创建共享目录
1
mkdir /data/rsyncd_data
1
chown rsync.rsync /data/rsyncd_data

验证

1
ls -ld /data/rsyncd_data
  1. 启动后验证

本地测试

1
rsync /etc/hostname rsync_backup@192.168.10.18::data

远程测试

1
rsync -avz /etc/hosts rsync_backup@192.168.10.18::data 

3.3.4 客户端优化

  1. 指定密码文件
1
echo "1" > /etc/rsync.client
1
chmod 600 /etc/rsync.client
1
rsync -avz /etc/hosts rsync_backup@192.168.10.250::data --password-file=client.passwd

四、补充选项

  • --bwlimit :主动限速,默认是 kb

  • -P :显示更加详细的信息

  • --delete 同步删除(把远程多余的文件删除掉,慎用

  • --exclude 排除某个或某些文件

  • --exclude-from 排除某个清单,有时候文件太多或经常变动,就可以统一放到清单文件