运维必备:rsync高效同步全解析


一、rsync是什么?

rsync 是一个功能强大且灵活的文件同步工具,广泛用于本地和远程系统之间的文件复制与同步。它通过差异传输算法只传输文件的变化部分,从而显著提高效率,特别适合备份、镜像和大量数据传输。

二、使用步骤

常用语法

rsync [选项] 源路径 目标路径
	  -a:归档模式,保留权限、时间戳、符号链接等。
	  -v:详细输出。
	  -z:传输时压缩数据。
	  -e ssh:使用 SSH 作为传输通道。
	  -P 断点续传 + 进度条,大文件必备
	  
注意:与mv、cp 命令不同的是 /source/dir → 同步目录本身
					    /source/dir/ → 同步目录内容	
					  

1.本地传输(不常用)

rsync -avz /source/dir/ /dest/dir/

2.远程传输(会用)

拉取操作

案例a.备份服务器(10.0.0.41)向web服务器(10.0.0.7)进行拉取(pull)7.txt 到本地目录

语法:
		rsync [option] [user@]host:src [dest]

rsync -avz root@10.0.0.7:7.txt ./
The authenticity of host '172.16.1.7 (172.16.1.7)' can't be established.
ECDSA key fingerprint is SHA256:NZBjS7H4/I+VWv+ZZ0uWberEFDACpaL6oHyCr/96uRc.
ECDSA key fingerprint is MD5:65:97:9b:45:23:97:15:d8:17:29:b1:21:b4:37:0b:7e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.7' (ECDSA) to the list of known hosts.

执行过程中需要被拉取服务器的root密码
root@172.16.1.7's password: 
receiving incremental file list
7.txt

sent 43 bytes  received 123 bytes  30.18 bytes/sec
total size is 37  speedup is 0.22
[root@backup:~]# ls
7.txt

推动操作

案例b.web01服务器(10.0.0.7)推动(push)txts 目录及文件 至备份服务器家目录(10.0.0.41)

语法:
	 rsync [option] [src] [user@]host:dest

[root@backup:~]# rsync -avz txts root@10.0.0.7:./
root@10.0.0.7's password: 
sending incremental file list
txts/
txts/1.txt
txts/2.txt

sent 173 bytes  received 58 bytes  51.33 bytes/sec
total size is 0  speedup is 0.00

[root@web01:~]# ls
txts

注意:如果不加用户,默认以当前系统登录的用户身份进行远程连接,但是要对方的用户名和密码

同步7的txts目录至本地,默认使用root进行连接,需要7的root的密码
[root@backup:~]# rsync -avz 10.0.0.7:txts ./

用域名传输:前提是得有域名和对应的ip地址

假如域名为www.hehe.com
[root@backup:~]# rsync -avz www.hehe.com:txts ./

用主机名传输

无法解析,需要修改本地hosts文件
[root@backup:~]# rsync -avz web01:txts ./

小结

下载,远程服务器在前面
上传,远程服务器在后面

3.守护进程传输(常用)

1.安装服务
yum -y install rsync

2.配置服务
[root@backup ~]#  cat /etc/rsyncd.conf
uid = rsync   #运行进程的用户
gid = rsync	  #运行进程的组
port = 873    #监听端口
fake super = yes  #无需让rsync以root方式允许,允许接收文件完整属性
use chroot = no
max connections = 200 #最大连接数
timeout = 600
ignore errors = yes
read only = false
list = false
auth users = rsync_backup             #定义作为连接服务端认证的用户名
secrets file = /etc/rsync.passwd      #rsync服务用户认证密码配置文件路径
log file = /var/log/rsyncd.log        #日志文件目录
#####################################
[backup]                        #自定义模块名称
comment = welcome to  backup! # 注释信息
path = /backup           #服务端接受备份数据的目录

3.根据配置文件创建必要的数据
1)创建rsync虚拟用户
[root@backup ~]#useradd -M -s /sbin/nologin rsync
[root@backup ~]#id rsync
uid=1001(rsync) gid=1001(rsync) groups=1001(rsync)
2)创建密码文件
[root@backup ~]#cat /etc/rsync.passwd
rsync_backup:123456
3)修改密码权限为600
[root@backup ~]#chmod 600 /etc/rsync.passwd
[root@backup ~]#ll /etc/rsync.passwd
-rw------- 1 root root 20 Apr 8 11:54 /etc/rsync.passwd
4)创建backup目录
[root@backup ~]#mkdir /backup
[root@backup ~]#ll -d /backup
drwxr-xr-x 2 root root 6 Apr 8 11:55 /backup
5)修改目录的权限为rsync用户
[root@backup ~]#ll -d /backup
drwxr-xr-x 2 root root 6 Apr 8 11:55 /backup
[root@backup ~]#chown rsync.rsync /backup
[root@backup ~]#ll -d /backup
drwxr-xr-x 2 rsync rsync 6 Apr 8 11:55 /backup

4.启动服务并加入开机自启
[root@backup ~]#systemctl start rsyncd
[root@backup ~]#systemctl enable rsyncd
 测试检查 873端口
[root@backup ~]#netstat -tnulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1290/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1448/master
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 4041/rsync
tcp6 0 0 :::22 :::* LISTEN 1290/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1448/master
tcp6 0 0 :::873 :::* LISTEN 4041/rsync

客户端测试推送至服务器:
10.0.0.7 客户端
10.0.0.41 服务端

守护进程的客户端需要执行的命令格式:
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST # 冒号后面必须是模块的名称
      rsync -avz txts rsync_backup@10.0.0.41::backup

案例:将10.0.0.7 家目录下的txts目录推送到10.0.0.41服务端的backup模块
[root@web01:~]# rsync -avz txts rsync_backup@10.0.0.41::backup 
Password: 
sending incremental file list
txts/
txts/1.txt
txts/2.txt

sent 177 bytes  received 66 bytes  97.20 bytes/sec
total size is 0  speedup is 0.00

#服务端检查
[root@backup:~]# ls /backup
txts

案例:指定下载7.txt至服务端
[root@web01 ~]#rsync -avz rsync_backup@10.0.0.41::backup/oldboy/7.txt .
Password:
receiving incremental file list
7.txt

三、知识点小结

1.rsync 增量 全量
2.rsync三种模式
本地模式 了解类似cp命令 优于cp
远程访问模式:
推送: 将本地的推送到目标服务器
rsync -avz a.txt root@172.16.1.7:/opt/
拉取: 将目标服务器的b.txt 下载到本地当前目录
rsync -avz root@172.16.1.7:/root/b.txt ./
守护进程模式:
服务端: 安装服务 配置服务 启动服务873
配置文件中的重点:
1.启动用户rsync 必须系统中存在的
2.游戏账号rsync_backup
3.游戏账号所在的文件 /etc/rsync.passwd 权限600
rsync_backup:123456
4.模块名称和文件上传的目录位置
[rsync]
path = /backup
rwxr-xr-x rsync rsync /backup
客户端
推送: rsync -avz a.txt rsync_backup@172.16.1.41::rsync
拉取: rsync -avz rsync_backup@172.16.1.41::rsync/a.txt ./
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值