27-rsycn服务详解
rsync基本概述
rsync(remote synchronization)是一款开源、快速、多功能、可实现全量及增量的本地或者远程数据同步备份的优秀工具。rsync软件适用于Unix/linux/windows等多种操作系统平台。
rsync功能
1.本地和远程两台主机之间的数据快速复制、远程全量或增量备份(类似于scp)
2.支持配置守护进程方式实现异机数据复制(备份)
3.支持本地主机的不同分区或者目录之间全量及增量复制数据(类似cp,比cp可以实现增量拷贝)
rsync命令功能
1.实现本地数据同步复制(本地工作模式,相当于cp功能)
2.实现远程数据同步复制(远程shell工作模式,相当于scp命令)
3.实现数据信息删除功能(本地工作模式,相当于rm命令)
4.实现数据信息查看功能(本地或远程工作模式,相当于ls命令)
rsync软件特性
1.支持拷贝普通文件与特殊文件,如链接文件、设备文件等。
2.支持排除指定文件或目录同步的功能,相当于打包命令tar的排除功能
3.可以做到保持原文件或目录的权限、时间、软硬链接、属主、数组等所有属性均不变
4.可实现增量复制,即只复制发生变化的数据,因此数据传输效率很高
5.可以使用rcp、rsh、ssh等方式来配合进行隧道加密传输文件(rsync本身不对数据加密)
6.可以通过socket(进程方式)传输文件和数据(服务端和客户端)
7.支持匿名或认证(无须系统用户)进程模式传输,安全的进行数据备份及镜像
rsync传输模式
本地模式(了解)
Local: rsync [OPTION...] SRC... [DEST]
本地: 命令 选项参数 源文件 目标位置
[root@backup ~]# rsync -avz a.txt /opt/
sending incremental file list
a.txt
sent 82 bytes received 35 bytes 234.00 bytes/sec
total size is 0 speedup is 0.00
[root@backup ~]# ll /opt/
total 0
-rw-r--r-- 1 root root 0 Apr 8 21:03 a.txt
#再次拷贝为增量拷贝
[root@backup ~]# rsync -avz a.txt /opt/
sending incremental file list
a.txt
sent 82 bytes received 35 bytes 234.00 bytes/sec
total size is 0 speedup is 0.00
[root@backup ~]# ll /opt/
total 0
-rw-r--r-- 1 root root 0 Apr 8 21:03 a.txt
[root@backup ~]#
[root@backup ~]#
[root@backup ~]# rsync -avz a.txt /opt/
sending incremental file list
sent 42 bytes received 12 bytes 108.00 bytes/sec
total size is 0 speedup is 0.00
#拷贝oldboy目录下的所有内容到/opt目录下需要在后面加/
root@backup ~]# rsync -avz oldboy/ /opt/
sending incremental file list
./
a.txt
b.txt
sent 171 bytes received 57 bytes 456.00 bytes/sec
total size is 4 speedup is 0.02
[root@backup ~]# ll /opt/
total 4
-rw-r--r-- 1 root root 4 Apr 8 21:10 a.txt
-rw-r--r-- 1 root root 0 Apr 8 21:09 b.txt
#拷贝oldboy目录到/opt
[root@backup ~]# rsync -avz oldboy /opt/
sending incremental file list
oldboy/
oldboy/a.txt
oldboy/b.txt
sent 187 bytes received 58 bytes 490.00 bytes/sec
total size is 4 speedup is 0.02
[root@backup ~]# ll /opt/
total 0
drwxr-xr-x 2 root root 32 Apr 8 21:09 oldboy
远程模式
# Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
拉取:
rsync: 命令
-avz: 参数
USER@: 用户
HOST: 主机IP地址 域名 主机名称
:SRC 源文件
DEST: 目标位置 下载到本地的哪个目录
案例:10.0.0.41拉取10.0.0.7上的/root/7.txt 到本地当前目录
[root@backup ~]# rsync -avz root@10.0.0.7:/root/7.txt ./ #执行过程中需要10.0.0.7root用户的密码
# Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
push: 推送 上传
rsync: 命令
-avz: 参数
SRC: 源文件/文件位置/目录
USER@: 用户名
HOST: 远程IP地址/主机名称/域名
DEST: 目标位置
案例:10.0.0.41将oldboy目录推送到10.0.0.7的/opt目录下
[root@backup ~]# rsync -avz oldboy root@10.0.0.7:/opt
[root@backup ~]# rsync -avz oldboy root@172.16.1.7:/opt
root@172.16.1.7's password: #要172.16.1.7的密码
sending incremental file list
#注意:如果不加用户,默认以当前系统登录用户身份进行远程连接,但是要对方的此用户名和密码
如下:默认使用root进行远程连接41,需要提供41的root密码
[root@web01 ~]#rsync -avz 10.0.0.41:oldboy ./
小结
下载: 远程服务器在前面
rsync -avz root@10.0.0.7:/root/7.txt ./
上传: 远程服务器在后面 文件在前面
rsync -avz oldboy root@10.0.0.7:/opt
IP地址可以是域名:前提是得有域名和对应的IP地址。配置写在/etc/hosts
[root@web01 opt]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.7 web01
[root@backup ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.7 web01
[root@backup ~]# rsync -avz root@web01:/root/7.txt ./
守护进程模式(企业常用)
**rsync -avz 7.txt rsync_backup@172.16.1.41::backup **
- 身份验证:rsync_backup
- 需要将7.txt写入到磁盘中/backup目录中
- 创建目录的权限:drwxr-xr-x root root /backup
- rsync用户对于/backup 目录是other 目前other只有读的权限。所以,需要将/backup目录的属主和属组变为rsync。这样做rsync用户对于/backup目录就变成了属主那么就有了读写权限。才能达到7.txt文件写入到磁盘中的/backup目录。
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 #忽略错误信息
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 oldboyedu backup! #模块注释信息
path = /backup #定义接收备份数据目录
3.根据配置文件创建必要的数据
1)创建rsync虚拟用户
[root@backup ~]# useradd -M -s /sbin/nologin rsync
[root@backup ~]# id rsync
uid=1000(rsync) gid=1000(rsync) groups=1000(rsync)
2)创建密码文件
vim /etc/rsync.passwd
[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 21:58 /etc/rsync.passwd
4.创建/backup目录,更改属主和属组权限
mkdir -p /backup
chown -R rsync.rsync /backup
5.启动rsync服务
systemctl start rsyncd #启动rsync服务
systemctl enable rsyncd #设置开机自启动
6.检查rsync服务是否开启,端口873
[root@backup /]# netstat -tunlp |grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 784/rsync
tcp6 0 0 :::873 :::* LISTEN 784/rsync
[root@backup /]# systemctl status rsyncd
● rsyncd.service - fast remote file copy program daemon
Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2024-04-09 17:31:02 CST; 3h 41min ago
Main PID: 784 (rsync)
CGroup: /system.slice/rsyncd.service
└─784 /usr/bin/rsync --daemon --no-detach
7.测试
客户端推送至服务器
10.0.0.7 客户端
10.0.0.41 服务端
1.将10.0.0.7 家目录下的oldboy目录推送到10.0.0.41服务端的backup模块
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
[root@web01 ~]#rsync -avz oldboy rsync_backup@10.0.0.41::backup
Password:
sending incremental file list
oldboy/
oldboy/1.txt
oldboy/7.txt
在服务端检查:
[root@backup /]# cd /backup/
[root@backup backup]# ll
total 0
drwxr-xr-x 2 rsync rsync 32 Apr 9 21:24 oldboy
[root@backup backup]# ll oldboy/
total 0
-rw-r--r-- 1 rsync rsync 0 Apr 9 21:24 1.txt
-rw-r--r-- 1 rsync rsync 0 Apr 8 21:45 7.txt
2.将远端服务器/backup目录下的ba.txt文件下载到当前目录
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
[root@web01 ~]#rsync -avz rsync_backup@10.0.0.41::backup/ba.txt ./
Password:
receiving incremental file list
ba.txt
sent 43 bytes received 101 bytes 41.14 bytes/sec
total size is 4 speedup is 0.03
在10.0.0.7服务器检查:
[root@web01 ~]#ll
total 4
-rw-r--r-- 1 root root 4 Apr 9 21:32 ba.txt
drwxr-xr-x 2 root root 32 Apr 9 21:24 oldboy