文章目录
- rsync(文件同步)
- 1)概述
- 2)特点
- 3)工作方式
- 4)运行模式及端口
- 5)同步方式
- 6)配置rsync同步
- 一、环境准备(2台Redhat9.5)
- 二、推送模式(Push)
- 1)rsync服务端
- 2)rsync客户端
- 三、拉取模式
- 7)rsync+sersync实时同步
- 一、环境准备
- 二、rsync客户端(192.168.146.140)
- 三、rsync服务端(192.168.146.142)
- 四、测试
rsync(文件同步)
1)概述
rsync
是一款功能强大的开源文件同步和传输工具。
2)特点
- 高效性:
rsync
采用增量传输算法,只传输文件中发生变化的部分,而不是整个文件,大大提高了文件同步的效率,尤其在处理大文件和大量文件时效果显著。 - 灵活性:支持多种同步模式,包括本地到本地、本地到远程、远程到本地以及远程到远程的文件同步。还可以通过多种参数进行灵活配置,满足不同的同步需求。
- 安全性:支持加密传输,可通过 SSH 等加密通道进行文件传输,确保数据在传输过程中的安全性和保密性。
- 可重复性:
rsync
可以保证在不同的系统和环境中实现一致的文件同步结果,具有很高的可重复性和稳定性。
3)工作方式
- 第一次同步时会复制全部内容,即全部复制
- 第二次之后只复制改动的文件,即增量复制
4)运行模式及端口
C/S模式 (client/server模式)
端口:873/tcp
5)同步方式
- 推push:一主机负责把数据传送给其他主机
- 拉pull:所有主机去找一主机拉数据
6)配置rsync同步
一、环境准备(2台Redhat9.5)
系统版本 | 服务 | IP |
---|---|---|
RedHat9.5 | rsync服务端 | 192.168.146.142 |
RedHat9.5 | rsync客户端 | 192.168.146.140 |
二、推送模式(Push)
rsync daemon
运行在目标服务器(192.168.146.142)/etc/rsyncd.conf
配置在目标服务器(192.168.146.142)- 源服务器(192.168.146.140)作为客户端,推送文件到目标服务器
推送命令(在 192.168.146.140 执行):
rsync -avz /test/ rsync://rsyncuser@192.168.146.142/abc/
目的:将192.168.146.140的/test
推送到192.168.146.142的/abc
1)rsync服务端
1、修改主配置文件/etc/rsyncd.conf
###全局配置
uid = root
gid = root
address = 192.168.146.142 #rsync服务端IP
port = 873 #端口号
hosts allow = 192.168.146.140 #用于指定允许连接到 rsync服务的客户端IP地址或IP地址范围。
use chroot = yes #增强安全性
max connections = 5 #限制了同时连接到 rsync 服务的最大客户端数量
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsync.log
motd file = /etc/rsyncd.motd #指定了 rsync 服务的欢迎消息文件路径###模块配置
[abc]
path = /abc #指定了该模块对应的本地文件系统路径
comment = userd for html data #为该模块提供了一个简短的描述信息
read only = yes #客户端只能从该模块读取数据,不能写入数据。
list = yes
auth users = test #指定了允许访问该模块的用户列表
secrets file = /etc/rsync.passwd #指定了存储用户认证信息(用户名和密码)的文件路径。
#该文件的格式通常为 username:password,用于对客户端进行身份验证。
2、创建账户
vim /etc/rsync.passwd
test:test##设置rsync.passwd文件的权限为700或600,权限设置不对的话身份验证会失败
chmod 600 /etc/rsync.passwd
3、启动服务
命令:rsync --daemon --config=/etc/rsyncd.conf
[root@localhost ~]# rsync --daemon --config=/etc/rsyncd.conf
[root@localhost ~]# ss -luntp | grep rsync
tcp LISTEN 0 5 192.168.146.142:873 0.0.0.0:* users:(("rsync",pid=39206,fd=5))
停止服务命令:pkill rsync
killall rsync
4、创建目录/abc
mkdir abc
cd abc
2)rsync客户端
命令:rsync
常见选项:
-a
:归档模式,等同于-rlptgoD
,用于递归地复制文件,并保留文件的权限、所有者、时间戳等属性。-v
:详细模式,显示详细的同步过程信息,包括正在传输的文件、传输进度等。-z
:压缩传输,在传输过程中对文件进行压缩,减少网络带宽占用,提高传输速度。--delete
:删除目标目录中源目录不存在的文件,确保目标目录与源目录的内容一致。-P
:等同于--partial --progress
,显示传输进度,并支持断点续传。
1、进行同步操作
命令:rsync -avz /test/ rsync://test@192.168.146.142/abc/
字段解释:
test@
:rsync服务端配置文件指定的用户/abc/
rsync服务端的需要同步到的路径/test/
rsync客户端同步的路径
#在rsync客户端端/test 下创建8.txt
[root@localhost test]# rsync -avz /test/ rsync://test@192.168.146.142/abc/
Welcome to Backup ServerPassword:
receiving incremental file list
./
8.txtsent 46 bytes received 204 bytes 8.20 bytes/sec
total size is 39 speedup is 0.16
[root@localhost test]# ll
总用量 20
-rw-r--r--. 1 root root 0 3月 26 15:29 8.txt
2、解决每次都需输入密码的问题
创建密码文件(rsync客户端192.168.146.140)
vim /etc/rsyncd.passwd
test
##只用写密码修改权限为700或600
chmod 600 /etc/rsyncd.passwd
同步命令:
rsync -avz /test/ rsync://test@192.168.146.142/abc/ --password-file=/etc/rsync.passwd
3、编写同步脚本
vim /root/1/sh
#! /bin/bash
/usr/bin/rsync -avz --delete test@192.168.146.142::test /test --password-file=/etc/rsyncd.passwd
给予执行权限
chmod +x /root/1.sh
编写计划任务
crontab -e
*/1 * * * * sh /root/1.sh
三、拉取模式
rsync daemon
运行在源服务器(192.168.146.140)/etc/rsyncd.conf
配置在源服务器(192.168.146.140)- 目标服务器(192.168.146.142)作为客户端,拉取文件
配置示例(在 192.168.146.140 上):
# /etc/rsyncd.conf
[test]path = /testcomment = Source directoryread only = yes # 只读模式(防止误修改)auth users = rsyncusersecrets file = /etc/rsyncd.secrets
拉取命令(在 192.168.146.142 执行):
rsync -avz rsync://test@192.168.146.140/test/ /abc/
rsync -avz rsync://test@192.168.146.140/test/ /abc/ --password-file=/etc/rsync.passwd
7)rsync+sersync实时同步
一、环境准备
系统版本 | 服务 | IP |
---|---|---|
RedHat9.5 | rsync客户端 | 192.168.146.142 |
RedHat9.5 | rsync服务端 | 192.168.146.140 |
采用推(push)模式
rsync daemon
运行在目标服务器(192.168.146.142)/etc/rsyncd.conf
配置在目标服务器(192.168.146.142)- 源服务器(192.168.146.140)作为客户端,推送文件到目标服务器
- sersync安装在源服务上(192.168.146.140)
目的:将服务端的/test下的文件实时同步到客户端的/abc
目录下
二、rsync客户端(192.168.146.140)
1、安装sersync
网址:https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sersync2.5.4_64bit_binary_stable_final.tar.gz
tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz
mv GNU-Linux-x86/ /opt/sersync
cp confxml.xml confxml.xml.bak
2、修改sersync的配置文件confxml.xml
<sersync><localpath watch="/test">##rsync服务端的IP地址 及rsync配置文件定义的模块名字<remote ip="192.168.146.140" name="abc"/></localpath><rsync><commonParams params="-artuz --delete"/><auth start="true" users="test" passwordfile="/etc/rsync.passwd"/>#rsync配置文件定义的用户,密码文件目录<userDefinedPort start="false" port="0"/><timeout start="false" time="100"/><ssh start="false"/></rsync><failLog path="/var/log/rsync_fail_log.sh" timeToExecute="60"/><crontab start="false" schedule="600"/><plugin start="false" name=""/>
</sersync>
3、启动sersync
命令:/opt/sersync/sersync2 -d -r -o /opt/sersync/confxml.xml
[root@localhost sersync]# /opt/sersync/sersync2 -d -r -o /opt/sersync/confxml.xml
set the system param
execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches
execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events
parse the command param
option: -d run as a daemon
option: -r rsync all the local files to the remote servers before the sersync work
option: -o config xml name: /opt/sersync/confxml.xml
daemon thread num: 10
parse xml config file
host ip : localhost host port: 8008
daemon start,sersync run behind the console
use rsync password-file :
user is test
passwordfile is /etc/rsync.passwd
config xml parse success
please set /etc/rsyncd.conf max connections=0 Manually
sersync working thread 12 = 1(primary thread) + 1(fail retry thread) + 10(daemon sub threads)
Max threads numbers is: 22 = 12(Thread pool nums) + 10(Sub threads)
please according your cpu ,use -n param to adjust the cpu rate
------------------------------------------
rsync the directory recursivly to the remote servers once
working please wait...
execute command: cd /test && rsync -artuz -R --delete ./ test@192.168.146.140::test --password-file=/etc/rsync.passwd >/dev/null 2>&1
[root@localhost sersync]# run the sersync:
watch path is: /test
三、rsync服务端(192.168.146.142)
1、修改rsync主配置文件
uid = root
gid = root
address = 192.168.146.142
port = 873
hosts allow = 192.168.146.140
use chroot = yes
max connections = 5
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsync.log
motd file = /etc/rsyncd.motd[abc]
path = /abc
comment = userd for html data
read only = no
list = yes
auth users = test
secrets file = /etc/rsync.passwd
2、创建用户密码文件
vim /etc/rsync.passwd
test:testchomd 600 /etc/rsync.passwd
四、测试
自己实验