ubuntu搭建rsync service 今天练习ubuntu搭建rsync service另一台依旧使用rhel8.10的server两台机器都是同一个网段在 Ubuntu 上安装 rsync然后创建并编辑配置文件 。这是一个模块化的配置文件 1安装 rsync sudo apt update sudo apt install rsync -y这里我是安装过的没安装的可以按照命令安装一下。2创建并编辑配置文件/etc/rsyncd.confcd /etc/touchrsyncd.confvim rsyncd.conf这是一个模块化的配置文件你需要为每个共享目录定义一个[模块名]配置项值解释uid rootrootrsync 服务运行时使用哪个用户的身份去读写文件。root表示有最高权限能读写所有文件。如果你只想让 rsync 访问普通文件可以改成nobody或rsync。这里我新建用户rsync_usergid rootrootrsync 服务运行时使用哪个用户组的身份。和uid配合使用。use chroot yesyes是否把客户端限制在共享目录内。yes表示客户端连接后看到的根目录/就是path指定的目录无法访问这个目录之外的任何文件——这是一个重要的安全屏障。如果设为no客户端可以通过路径穿越比如../../etc/passwd访问系统其他文件非常危险。max connections 44最大并发连接数。同一时刻最多允许 4 个客户端同时连接。如果超过这个数新连接会被拒绝。设置这个值可以防止服务器负载过高。pid file /var/run/rsyncd.pid文件路径进程 ID 文件。rsync 服务启动后会把它的进程号PID写入这个文件。系统管理工具如systemctl通过这个文件来管理 rsync 服务的启停和状态监控。log file /var/log/rsync.log文件路径日志文件。所有客户端的连接记录、传输记录、错误信息都会写入这个文件。排查问题时优先查看这个文件。模块配置[share] 部分[share]是一个模块名客户端连接时通过这个名称来访问对应的共享目录。比如客户端执行rsync rsync://服务器IP/share就能访问这个模块。配置项值解释path /srv/rsync目录路径共享的根目录。客户端连接到share模块后能访问的就是这个目录下的所有内容。你需要确保这个目录存在且有正确的权限。comment Ubuntu Rsync Share描述文字模块描述。当客户端执行rsync rsync://服务器IP/列出所有模块时会显示这个描述。仅用于标识不影响功能。read only nono是否只读。no表示允许客户端上传、修改、删除文件即完全读写。如果设为yes客户端只能下载不能写入。auth users rhel_client用户名授权访问的用户名。客户端连接时需要提供这个用户名和对应的密码。多个用户名用逗号分隔如user1,user2。secrets file /etc/rsyncd.secrets文件路径密码文件。存储auth users中指定的用户名和对应的密码格式为用户名:密码每行一个。该文件权限必须设为 600仅 root 可读写否则 rsync 会拒绝启动。uid\pid我是新建了一个rsync_user来操作里面的pid file 和log file 自己定义path即可suio passwd rsync_user ******useradd -m -d /home/rsync_user rsync_user参数含义-m创建家目录-d /home/rsync_user指定家目录路径为/home/rsync_userrsync_user用户名3配置好/etc/rsyncd.conf后我们开始配置/etc/rsyncd.secrets# 创建文件并写入用户名和密码在/etc/下touch rsyncd.secretssudo bash -c echo rsync_user:your_password /etc/rsyncd.secrets# 设置权限为 600必须否则 rsync 会报错拒绝启动 sudo chmod 600 /etc/rsyncd.secrets注意权限必须是-rw-------600且属主为root文件中用户名和密码的关系这个文件和rsyncd.conf中的配置是配套的配置文件内容/etc/rsyncd.confauth users rsync_user/etc/rsyncd.secretsrsync_user:your_password当 RHEL 客户端执行rsync -avz rsync_userubuntu_ip::share /local/时会提示输入密码输入的密码需要和这个文件里的your_password一致。如果有多位users可以在/etc/rsyncd.secrets中添加多行user1:pass1 user2:pass2然后在rsyncd.conf的auth users中用逗号分隔auth users user1,user2,rhel_client4以上的配置完成后重启rsync servicesudo systemctl restart rsyncsudo systemctl status rsync如果启动失败看设置的log日志tail -f 50 /process/rsync/rsync.log根据自己设置的log path可能会遇到这一步不要担心这个warning只是告诉我们配置文件已经修改过了需要重新加载 systemd 的配置。执行systemctl daemon-reload即可这里看到rsync的service是启动成功的我们下一步放开防火墙端口在 Ubuntu 上执行sudo ufw status看防火墙有没有打开如果打开的的话放行873/tcp端口sudo ufw allow 873/tcp放行完防火墙后开始配置rhel8.10的service.首先先安装rsyncsudo yum install rsync -y在 RHEL 客户端上创建密码文件内容只写密码不需要用户名echo your_password ~/rsync_pass chmod 600 ~/rsync_pass 测试链接在rhel8.10上执行rsync rsync://ip地址/可以看到在ubuntu上Module Configuration写的path即可这是运用rsync密钥的形式进行同步的后续再更新内网更简单的基于SSH协议的rsync同步。