使用rsync同步服务器和客户端的文件夹

使用rsync同步服务器和客户端的文件夹

实现目的

利用rsync实现远程服务器和电脑文件夹的同步

实验准备

本次演示均使用两台虚拟机做准备

服务器 192.168.218.136
客户端 192.168.218.132

实验操作步骤

服务器操作

关闭防火墙和SELINUX

1️⃣关闭防火墙

bash 复制代码
[root@sxs home]# systemctl stop firewalld
[root@sxs scripts]# systemctl disable firewalld
Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service".
Removed "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service".

2️⃣关闭SELINUX

bash 复制代码
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0:  #立即生效
安装rsync
bash 复制代码
#因为之前已经安装过了,所以显示这结果
[root@sxs scripts]# yum -y install rsync
CentOS Stream 9 - BaseOS                                                                              3.4 kB/s | 3.8 kB     00:01    
CentOS Stream 9 - BaseOS                                                                              5.6 MB/s | 8.0 MB     00:01    
CentOS Stream 9 - AppStream                                                                           3.5 kB/s | 4.2 kB     00:01    
CentOS Stream 9 - AppStream                                                                           2.8 MB/s |  19 MB     00:06    
CentOS Stream 9 - Extras packages                                                                     9.1 kB/s | 6.9 kB     00:00    
软件包 rsync-3.2.3-19.el9.x86_64 已安装。
依赖关系解决。
无需任何处理。
完毕!
修改服务器配置文件/etc/rsync.conf
bash 复制代码
#有好几个都很重要,而且还涉及到权限的问题
[root@sxs scripts]# cat /etc/rsyncd.conf |grep -v "^#\|^$"
uid = rsync        #指定rsync进程以什么用户身份在后台运行,默认是nobody
gid = rsync        #
use chroot = no    #是否将用户锁定在家目录下
max connections =100    #最大连接数
pid file = /var/run/rsyncd.pid    #指定pid文件保存在哪里
timeout = 900                     #访问超时时间
lock file = /var/lock/rsync.lock  #指定lock文件保存在哪里
log file = /var/log/rsync.log     #指定log日志文件保存在哪里
[ test ]                              #模块名称,十分重要
path = /home/backup/                  #客户端推送文件过来的时候,需要保存在哪里
read only = false                     #文件目录只能下载,不能上传
hosts allow = 192.168.218.0/24        #可以访问的IP地址,这是表示只有192.168.218.0的网段可以访问
auth users = vuserback                #指定访问模块需要使用的用户名称,这里的是虚拟用户(不是存在于/etc/passwd)
secrets file = /home/rsync.passwd    #访问模块的用户密码保存在哪里,很重要,而且这rsync.passwd文件的权限只能是600
list = false                         #设置是否可以显示全部的模块列表
创建服务器备份文件的目录
bash 复制代码
#这一步:对应/etc/rsync.passwd配置文件下的: path = /home/backup/ 
[root@sxs scripts]# mkdir -p /home/backup
创建rsync系统运行的用户
bash 复制代码
 [root@sxs]# groupadd  rsync
 [root@sxs]# useradd -r -s /sbin/nologin -g rsync rsync
修改备份文件的所有者和所属组
bash 复制代码
#这和上文的配置文件的uid和gid对应上,之前做实验的时候,发现所有者和所属组是root的时候,在客户端推送文件的时候一直报错,等我uid和gid修改成rsync的时候以及备份文件修改成rsync:rsync的时候才可以,这也是一个大坑。大家注意
[root@sxs home]# chown rsync:rsync /home/backup/
[root@sxs home]# ll
drwxr-xr-x 2 rsync rsync 21  2月 28 18:46 backup
创建rsync.passwd
bash 复制代码
#这rsync.passwd的权限记得是600,十分重要的一个点
[root@sxs home]# touch rsync.passwd
[root@sxs home]# echo "vuserback:123" >rsync.passwd 
[root@sxs home]# chmod 600 rsync.passwd 
[root@sxs home]# cat rsync.passwd 
vuserback:123
[root@sxs home]# ll
总用量 4
drwxr-xr-x 2 rsync rsync 21  2月 28 18:46 backup
-rw------- 1 root  root  14  3月  2 00:40 rsync.passwd
启动rsync服务并进行验证
bash 复制代码
#rsync的端口是873,默认是873
[root@sxs home]# rsync --damon
[root@sxs home]# netstat -tnlp |grep rsync
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      48666/rsync         
tcp6       0      0 :::873                  :::*                    LISTEN      48666/rsync

客户端

直接推送文件

bash 复制代码
#显示下文的这样子,就表示推送成功了


[root@localhost /]# cd /scripts/
[root@localhost scripts]# ll
总用量 4
-rwxr--r-- 1 root root 24 2月  28 18:46 test.sh
[root@localhost scripts]# rsync -avz /scripts/ vuserback@192.168.218.136::test
Password:                                   #对应客户端的rsync.passwd文件的密码
sending incremental file list
./
test.sh

sent 137 bytes  received 46 bytes  73.20 bytes/sec
total size is 24  speedup is 0.13
[root@localhost scripts]#

服务器验证

在服务器可以看到对应的文件了

bash 复制代码
[root@sxs home]# ll
总用量 4
drwxr-xr-x 2 rsync rsync 21  2月 28 18:46 backup
-rw------- 1 root  root  14  3月  2 00:40 rsync.passwd
[root@sxs home]# ll ./backup/
总用量 4
-rwxr--r-- 1 rsync rsync 24  2月 28 18:46 test.sh

结尾

可能有的写的不是很好,欢迎大家指出来

相关推荐
努力的悟空1 小时前
国土变更调查拓扑错误自动化修复工具的研究
运维·自动化
旦沐已成舟2 小时前
DevOps-Jenkins-新手入门级
服务器
周末不下雨2 小时前
win11+ubuntu22.04双系统 | 联想 24 y7000p | ubuntu 22.04 | 把ubuntu系统装到1T的移动固态硬盘上!!!
linux·运维·ubuntu
软件技术员3 小时前
Let‘s Encrypt SSL证书:acmessl.cn申请免费3个月证书
服务器·网络协议·ssl
耗同学一米八3 小时前
2024 年河北省职业院校技能大赛网络建设与运维赛项样题四
运维·网络
一条晒干的咸魚4 小时前
【Web前端】创建我的第一个 Web 表单
服务器·前端·javascript·json·对象·表单
东华果汁哥4 小时前
【linux 免密登录】快速设置kafka01、kafka02、kafka03 三台机器免密登录
linux·运维·服务器
肖永威4 小时前
CentOS环境上离线安装python3及相关包
linux·运维·机器学习·centos
mengao12344 小时前
centos 服务器 docker 使用代理
服务器·docker·centos
布鲁格若门5 小时前
CentOS 7 桌面版安装 cuda 12.4
linux·运维·centos·cuda