【基于CentOS 7的Rsync服务】

目录

一、概述

二、特性

1.快速

2.安全

3.应用场景

三、数据的同步方式

1.pull

2.push

四、rsync传输模式

1.本地传输

2.远程传输

3.守护进程

五、rsync应用

1.安装

2.监听端口

六、rsync命令

1.格式

[1.1 作为远程命令](#1.1 作为远程命令)

[1.2 作为rsync服务](#1.2 作为rsync服务)

2.选项

3.举例

[3.1 本地](#3.1 本地)

[3.2 远程](#3.2 远程)

[4.配置文件 - /etc/rsyncd.conf](#4.配置文件 - /etc/rsyncd.conf)

[4.1 全局配置](#4.1 全局配置)

[4.2 模块配置](#4.2 模块配置)

5.守护进程传输

[5.1 配置](#5.1 配置)

[5.2 创建用户](#5.2 创建用户)

[5.3 创建认证用户的密码](#5.3 创建认证用户的密码)

[5.4 准备模块目录](#5.4 准备模块目录)

[5.5 重启服务](#5.5 重启服务)

[5.6 客户端远程传输](#5.6 客户端远程传输)

[5.7 通过密码文件实现免密传输](#5.7 通过密码文件实现免密传输)

[5.8 案例](#5.8 案例)

七、rsync+inotify实时同步

1.服务器端

2.开发客户端

[2.1 安装inotify工具](#2.1 安装inotify工具)

[2.2 配置内核参数](#2.2 配置内核参数)

[2.3 命令](#2.3 命令)

[2.4 编写脚本](#2.4 编写脚本)

[2.5 赋予执行权限](#2.5 赋予执行权限)

[2.6 写入文件](#2.6 写入文件)


一、概述

  • rsync是linux 下一个远程数据同步工具
  • 他可通过LAN/WAN快速同步多台主机间的文件和目录,并适当利用rsync 算法减少数据的传输
  • 会对比两个文件的不同部分,传输差异部分,因此传输速度相当快
  • rsync可拷贝、显示目录属性,以及拷贝文件,并选择性的压缩及递归拷贝

二、特性

1.快速

  • 第一次传输全部,下一次传输差异
  • rsync在传输过程中可以实行压缩和解压缩,使用更少的带宽

2.安全

  • 可以使用scp、ssh等方式传输
  • 直接通过socket连接
  • 支持匿名传输、方便进行网站镜像

3.应用场景

  • 增量同步
  • 备份迁移

三、数据的同步方式

1.pull

数据备份:拉取(下载)

2.push

数据恢复:推送(上传)

四、rsync传输模式

1.本地传输

本地同步数据,类似于cp

2.远程传输

远程同步数据,类似于scp

3.守护进程

通过模块化的方式实现批量传输

五、rsync应用

1.安装

yum -y install rsync

2.监听端口

TCP/873

六、rsync命令

1.格式

rsync [选项] 原始位置 目标位置

1.1 作为远程命令

拉取:rsync [OPTION...] [USER@]HOST:SRC... [DEST]

推送:rsync [OPTION...] SRC... [USER@]HOST:DEST

1.2 作为rsync服务

拉取:

rsync [OPTION...] [USER@]HOST::SRC... [DEST]

rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]

推送:

rsync [OPTION...] SRC... [USER@]HOST::DEST

rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

2.选项

-a ,归档模式,递归并保留对象属性,等同于-rlptgoD
-v ,-verbose 显示同步过程的详细信息
-z,在传输文件时进行压缩

3.举例

3.1 本地

rsync -avz /abc /opt

3.2 远程

rsync -avz root@192.168.42.140:/etc/hostname /root/

rsync -avz /root/hostname root@192.168.42.140:/etc/hostname

4.配置文件 - /etc/rsyncd.conf

4.1 全局配置

address 独立运行时,用于指定服务器运行的 IP 地址,默认本地所有IP

port 指定 rsync 守护进程监听的端口号,默认 873

pid file rsync 的守护进程将其 PID 写入指定的文件

log file 指定 rsync 守护进程的日志文件,而不将日志发送给 syslog

syslog facility 指定 rsync 发送日志消息给 syslog 时的消息级别

socket options 指定自定义 TCP 选项

lockfile 指定rsync的锁文件存放路径

timeout 超时时间

4.2 模块配置

path 指定当前模块的同步路径,该参数是必须指定的

comment 给模块指定一个描述

use chroot 在服务运行时要不要把他锁定在家目录,默认为 true

uid和gid 指定rsync运行用户和用户组,默认nobody

max connections 最大并发连接数,0为不限制

lock file 指定支持 max connections的锁文件。默认/var/run/rsyncd.lock

list 指定列出模块列表时,该模块是否被列出。默认为 true

read only 只读选择,默认true

write only 只写选择,不让客户端从服务器上下载文件。默认false

ignore errors 忽略IO错误,默认true

ignore nonreadable 指定 rysnc 服务器完全忽略那些用户没有访问权限的文件。

dont compress 用来指定那些在传输之前不进行压缩处理的文件。

hosts allow 指定哪些主机客户允许连接该模块。默认值为 *

hosts deny 指定哪些主机客户不允许连接该模块

auth users 指定用于上传的用户名

secrets files 指定密码文件

5.守护进程传输

5.1 配置

uid=rsync

gid=rsync

fake super=yes # 用于允许非root用户,在备份目录创建文件

list=false # 默认true,允许查看本机有哪些模块

auth users=rsync_bak # 用于指定认证用户

secrets file=/etc/rsync.passwd # 指定认证用户密码

read only = false

max connections=4 # 允许最大连接数

read only=false # 默认yes,模块目录只读权限

ignore errors # 屏蔽错误报错

timeout=900 # 指定rsync传输超时时间

[backup]

path=/backup

5.2 创建用户

useradd rsync -s /sbin/nologin -M

5.3 创建认证用户的密码

echo 'rsync_bak:123456' >/etc/rsync.passwd

chmod 600 /etc/rsync.passwd

5.4 准备模块目录

mkdir /backup

chown rsync.rsync /backup

5.5 重启服务

systemctl restart rsyncd

5.6 客户端远程传输

rsync -avz /etc/hosts rsync_backup@192.168.42.140::backup

5.7 通过密码文件实现免密传输

vim /etc/rsync.passwd

123456

chmod 600 /etc/rsync.passwd

rsync -avz /etc/hosts rsync_backup@192.168.42.140::backup --password-file /etc/rsync.passwd

5.8 案例

  • 使用认证用户为名字,认证密码为123456
  • 模块名称为win
  • 客户端创建文件user.txt,内容为所有的用户信息
  • 自行修改文件内容,在服务器上实现同步

七、rsync+inotify实时同步

1.服务器端

  • 安装网站服务,启动,但是不写首页文件
  • 修改主配置文件

uid = root

gid = root

[wwwroot]

path = /var/www/html

comment = backup export area

read only = false

hosts allow = 192.168.42.0/24

2.开发客户端

2.1 安装inotify工具

inotify-tools

tar xf inotify-tools-3.14.tar.gz

./configure && make && make install

2.2 配置内核参数

vim /etc/sysctl.conf

fs.inotify.max_user_instances = 1024

fs.inotify.max_queued_events = 16384

fs.inotify.max_user_watches = 1048576

sysctl -P

2.3 命令

inotifywait -mrq -e modify,create,move,delete /var/www/html

2.4 编写脚本

vim inotify_rsync.sh

#!/bin/bash

INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"

RSYNC_CMD="rsync -azH --delete /var/www/html/192.168.42.140::wwwroot"

$INOTIFY_CMD | while read DIRECTORY EVENT FILE

do

$RSYNC_CMD

done

2.5 赋予执行权限

chmod +x inotify_rsync.sh

2.6 写入文件

vim /etc/rc.local

/root/inotify_rsync.sh

2.7 启动验证

./inotify_rsync.sh

inotifywait -mrq -e modify,create,move,delete /var/www/html

ok

相关推荐
雨中rain4 分钟前
Linux -- 从抢票逻辑理解线程互斥
linux·运维·c++
-KamMinG15 分钟前
Centos7.9安装openldap+phpldapadmin+grafana配置LDAP登录最详细步骤 亲测100%能行
运维·grafana
Bessssss24 分钟前
centos日志管理,xiao整理
linux·运维·centos
s_yellowfish24 分钟前
Linux服务器pm2 运行chatgpt-on-wechat,搭建微信群ai机器人
linux·服务器·chatgpt
豆是浪个25 分钟前
Linux(Centos 7.6)yum源配置
linux·运维·centos
vvw&27 分钟前
如何在 Ubuntu 22.04 上安装 Ansible 教程
linux·运维·服务器·ubuntu·开源·ansible·devops
我一定会有钱28 分钟前
【linux】NFS实验
linux·服务器
王铁柱子哟-31 分钟前
解决 正在下载VS Code 服务器... 问题
运维·服务器
Ven%32 分钟前
如何在防火墙上指定ip访问服务器上任何端口呢
linux·服务器·网络·深度学习·tcp/ip
是阿建吖!39 分钟前
【Linux】基础IO(磁盘文件)
linux·服务器·数据库