使用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/ [email protected]::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

结尾

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

相关推荐
ALex_zry2 小时前
SSH主机密钥验证失败:全面解决方案与技术手册
运维·ssh
厦门辰迈智慧科技有限公司2 小时前
城市排水管网流量监测系统解决方案
运维·服务器
我没有开挂3 小时前
旧 docker 版本通过 nvkind 搭建虚拟多节点 gpu 集群的坑
运维·docker·容器
qq_339282233 小时前
centos中libc.so.6No such file的解决方式
linux·运维·centos
小鸡,啄米3 小时前
centos9安装docker 配置docker代理
运维·docker·容器
水银嘻嘻3 小时前
12 web 自动化之基于关键字+数据驱动-反射自动化框架搭建
运维·前端·自动化
在肯德基吃麻辣烫4 小时前
Netdata在Ubuntu环境下的安装与配置:构建实时系统监控与性能分析平台
linux·运维·ubuntu
国际云,接待4 小时前
云服务器的运用自如
服务器·架构·云计算·腾讯云·量子计算
不念霉运4 小时前
Gitee DevOps:中国企业数字化转型的“本土化加速器“
运维·gitee·团队开发·代码规范·devops·代码复审
安迪小宝5 小时前
6 任务路由与负载均衡
运维·python·celery