前言
在 Linux 系统里,rsync 服务可是个好东西,它能高效地在不同设备或者目录间同步文件。而让 rsync 服务开机自启更是能省不少事儿。今天就来唠唠,咋用 systemd 服务实现 rsync 服务开机自启。
一、rsync 服务与 systemd 服务简单介绍
咱先简单了解下这俩玩意儿。rsync 是用于文件同步和镜像的工具,它能检查源和目标之间文件的变化,只传输有变化的部分,这样可以节省大量的时间和带宽。打个比方,你有两个文件夹,里面的文件大部分都一样,只有几个文件有改动,用 rsync 就只传那几个改动了的文件,效率超高。
systemd 是 Linux 系统的一个初始化系统和服务管理器。它负责启动系统、管理系统服务,能让服务在系统启动时自动运行,还能在服务崩溃时自动重启。就像个勤劳的小管家,把系统服务安排得明明白白。
二、安装 rsync 服务
要是你还没装 rsync 服务,那就得先装上。不同的 Linux 发行版安装命令不太一样。
Debian/Ubuntu 系统
在终端里输入下面这个命令:
# 技术栈:Shell
# 更新软件包列表
sudo apt update
# 安装 rsync 服务
sudo apt install rsync
这里先执行 sudo apt update,是为了更新软件包列表,保证能安装到最新版本的 rsync。然后 sudo apt install rsync 就是安装 rsync 服务啦。
CentOS/RHEL 系统
在终端输入:
# 技术栈:Shell
# 安装 rsync 服务
sudo yum install rsync
yum 是 CentOS 这些系统的软件包管理器,sudo yum install rsync 就是让它去下载并安装 rsync。
三、配置 rsync 服务
安装好 rsync 后,得对它进行一些配置。一般 rsync 的配置文件是 /etc/rsyncd.conf,要是这个文件不存在,就手动创建一个。
# 技术栈:Shell
# 创建 rsync 配置文件
sudo touch /etc/rsyncd.conf
# 给配置文件赋予可写权限
sudo chmod 644 /etc/rsyncd.conf
# 用 vim 编辑器打开配置文件
sudo vim /etc/rsyncd.conf
在 vim 编辑器里输入下面的配置内容:
# 全局配置
uid = nobody
gid = nobody
use chroot = yes
max connections = 4
pid file = /var/run/rsyncd.pid
exclude = lost+found/
transfer logging = yes
timeout = 900
ignore nonreadable = yes
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
# 模块配置
[test_module]
path = /data/rsync_test # 同步的目录
comment = Test Rsync Module
read only = no
list = yes
auth users = testuser
secrets file = /etc/rsyncd.secrets
这里的配置分成两部分,全局配置和模块配置。全局配置是对整个 rsync 服务生效的,像 uid 和 gid 是指定运行 rsync 服务的用户和用户组,max connections 是最大连接数。模块配置是针对具体的同步目录,[test_module] 是模块名,path 就是要同步的目录。
接着,还得创建 secrets file 这个文件,并设置好权限和内容。
# 技术栈:Shell
# 创建 secrets 文件
sudo touch /etc/rsyncd.secrets
# 给文件赋予 600 权限,只有文件所有者能读写
sudo chmod 600 /etc/rsyncd.secrets
# 用 vim 编辑器写入用户名和密码
sudo vim /etc/rsyncd.secrets
在 vim 里写入:
testuser:testpassword
这里 testuser 就是前面配置文件里的 auth users,testpassword 是对应的密码。
四、创建 systemd 服务文件
现在要创建一个 systemd 服务文件,让 rsync 服务能被 systemd 管理。
# 技术栈:Shell
# 创建 rsync.service 文件
sudo touch /etc/systemd/system/rsync.service
# 用 vim 编辑器打开文件
sudo vim /etc/systemd/system/rsync.service
在 vim 里输入下面的内容:
[Unit]
Description=Rsync Server
After=network.target
[Service]
ExecStart=/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
这里 [Unit] 部分描述了服务的基本信息,Description 是服务的描述,After 表示这个服务要在网络服务启动后再启动。[Service] 部分是服务的具体配置,ExecStart 是启动服务的命令,ExecReload 是重新加载服务的命令,Restart 是服务崩溃后是否重启。[Install] 部分指定服务要在哪个目标下被启用。
五、启用并启动 rsync 服务
创建好服务文件后,要让 systemd 重新加载配置,然后启用并启动 rsync 服务。
# 技术栈:Shell
# 重新加载 systemd 配置
sudo systemctl daemon-reload
# 启用 rsync 服务,让它开机自启
sudo systemctl enable rsync.service
# 启动 rsync 服务
sudo systemctl start rsync.service
systemctl daemon-reload 是让 systemd 重新读取服务配置文件。systemctl enable rsync.service 是把 rsync 服务设置成开机自启。systemctl start rsync.service 就是马上启动 rsync 服务。
六、检查 rsync 服务状态
启动服务后,得检查下服务状态,看看是否正常运行。
# 技术栈:Shell
# 检查 rsync 服务状态
sudo systemctl status rsync.service
要是看到服务状态是 active (running),那就说明服务正常启动啦。
七、应用场景
数据备份
企业里重要的数据,像数据库文件、业务文档等,需要定期备份到其他存储设备或者服务器。用 rsync 服务可以只同步有变化的数据,节省时间和带宽。比如每天晚上定时同步数据库备份文件到远程服务器。
网站文件同步
对于有多个服务器的网站,要保证各个服务器上的网站文件一致。用 rsync 可以快速把主服务器上更新的文件同步到其他服务器。
开发环境同步
开发团队里,不同开发人员的开发环境可能有一些文件需要保持一致。用 rsync 可以方便地同步这些文件。
八、技术优缺点
优点
- 高效:只传输有变化的文件部分,节省时间和带宽。
- 安全:支持多种认证方式,像前面配置的用户名和密码认证。
- 跨平台:可以在不同的操作系统上使用,包括 Linux、Windows 等。
缺点
- 配置复杂:对于新手来说,配置 rsync 服务和相关的认证可能比较困难。
- 依赖网络:同步过程依赖网络,如果网络不稳定,会影响同步效率。
九、注意事项
- 权限问题:配置文件和
secrets file的权限要设置好,不然可能会导致服务启动失败或者安全问题。 - 防火墙设置:要确保防火墙开放了 rsync 服务使用的端口,默认是 873 端口。
- 备份测试:在正式进行数据备份或者同步前,最好先进行测试,确保配置正确。
十、文章总结
通过上面的步骤,我们学会了如何在 Linux 系统里使用 systemd 服务实现 rsync 服务开机自启。先安装 rsync 服务,然后进行配置,接着创建 systemd 服务文件,最后启用并启动服务。rsync 服务在数据备份、网站文件同步等场景有很大的用处,但也有配置复杂等缺点。在使用过程中要注意权限、防火墙等问题。希望这篇文章能帮助大家更好地使用 rsync 服务。
评论