在 VPS 上以普通用户运行 Resilio

dimlau

很久前开始用静态文件的形式保存博客文章,一篇篇文字其实就是存储在服务器上的文件一堆文件夹和文本文件:

静态博客文章存储形式

看上去很规整,但是在实际操作过程中经常会遇到很多「不优雅」的事情。比如说备份这些数据时最简单的方法是打包成压缩文件然后下载下来备份,但是不方便做到「智能」地只备份上次没备份的、新增的、修改过的数据。

背景描述就不说太多了。总之就是打算用 Resilio Sync(BitTorrent Sync)来更智能、自动地完成数据同步和备份工作。

Resilio Sync 是跨平台的文件同步工具,运用 BitTorrent 技术在各平台间无限快速同步。所以理论上来说,在 VPS 和本地电脑上都安装该软件,本地保存的目录结构和文件数据都会同步到 VPS 上去,同样 VPS 上的数据也就在本地有了备份。因为我还买了 iCloud 的存储空间,所以在完成同步备份之后,还可以再在本地电脑上通过 iCloud 的同步功能做一个安全备份,简直就是完美……

只可惜,我按照 Resilio 官网提供的服务器端 packages 安装流程走了好几遍都遇到了权限问题无法完成。后来用桌面应用的安装方式安装成功了,又遇到一个问题就是,同步到 VPS 上的数据所属 root 用户组,这样在网站程序处理这些文件时就很容易出问题……OK,我先来说一下安装流程:

SSH 登录到服务器,执行:

mkdir resilio && cd resilio
uname -m

会返回类似 x86_64 这样的信息,根据这个信息,下载相应版本的程序,解压并赋权。比如我是用的 64 位程序:

wget -O sync.tar.gz https://download-cdn.resilio.com/stable/linux-x64/resilio-sync_x64.tar.gz
tar -xzf sync.tar.gz && rm -rf sync.tar.gz
chmod +x rslsync

然后生成配置文件:

./rslsync --dump-sample-config > rslsync.conf

在 rslsync.conf 文件里可以设置程序运行时监听的端口号(默认为 8888)、初始用户名和密码之类的信息,注意设置防火墙给相应端口放行。

至此,如果只是用来做自建的网盘来使用,其实已经可以结束安装了。运行命令:

./rslsync --config rslsync.conf

会返回一个 pid 比如 1234,想停止程序只要 kill 1234 即可。

那么我们提到的更改用户组的问题怎么解决,我在搜索了半天没找到答案,对 Linux 的运作机制也不是特别了解,但是看到有些系统服务的配置文件里有设置用户组的内容,所以就尝试着写了个服务配置文件。

[Unit]
Description=BTSync
After=network.target
 
[Service]
User=www  //根据自己的情况来填写用户和用户组
Group=www
ExecStart=/root/resilio/rslsync --config /root/resilio/rslsync.conf --nodaemon  //根据自己的情况填写绝对路径
Restart=on-failure
RestartSec=5
 
[Install]
WantedBy=multi-user.target

保存成后缀为 .service 的文件,比如就叫 my-resilio.service 好了,放在 /usr/lib/systemd/system/ 目录下。然后执行:

systemctl enable my-resilio.service

之后可以用服务命令来开始或者停止该服务:

systemctl start my-resilio.service
systemctl stop my-resilio.service

之后登录 http://Your IP:8888 即可访问服务器上的 Resilio 程序,设置和管理需要同步的目录。

比如本文,就是我在笔记本上写好了文件,拖拽扔进本地设置好的同步文件夹,文件就自动同步到了服务器,变成了你现在正在访问的网页。

延伸阅读

本站架设在 RamNode VPS

Grav -> Hugo