赞
踩
利用rsync实现远程服务器和电脑文件夹的同步
本次演示均使用两台虚拟机做准备
服务器 | 192.168.218.136 |
---|---|
客户端 | 192.168.218.132 |
1️⃣关闭防火墙
[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
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0: #立即生效
#因为之前已经安装过了,所以显示这结果
[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 已安装。
依赖关系解决。
无需任何处理。
完毕!
#有好几个都很重要,而且还涉及到权限的问题 [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 #设置是否可以显示全部的模块列表
#这一步:对应/etc/rsync.conf配置文件下的: path = /home/backup/
[root@sxs scripts]# mkdir -p /home/backup
#这一步:对应/etc/rsync.conf配置文件下的: uid和gid 十分重要
[root@sxs]# groupadd rsync
[root@sxs]# useradd -r -s /sbin/nologin -g rsync rsync
#这和上文的配置文件的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的权限记得是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的端口是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
1️⃣关闭防火墙和Selinux
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@localhost ~]# setenforce 0: #立即生效
2️⃣直接推送文件
#显示下文的这样子,就表示推送成功了 [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]#
在服务器可以看到对应的文件了
[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
可能有的写的不是很好,欢迎大家指出来
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。