目录
简介
各位都熟悉BTsync吗。没错,这就是那个传说中的BTSync的产品,只不过改了个名字开发而已。Resilio Sync 使用于在不同的服务器上同步文件或者文件夹。如果你认为他仅仅只是用于同步文件,那你就错了。Sync 最强大的在于它的密钥分享功能。只需要输入一串乱七八糟的字母数字组合,就能下载到几十个G的资源库并且保持实时更新。所以Sync 被称之为开车神器,因为某些资源你懂得。
为什么在VPS上安装
很简单,Windows上免费版本的Sync是无法选择同步文件的。免费版的只能一次性把整个密钥分享的文件夹全部同步下来。如果我们利用VPS将资源下载完成,再在VPS上进行选择下载,就可以克服这个问题。而且大部分VPS的网络情况比家庭网络要好很多,同步速度非常之快。
安装教程
由于Resilio Sync是闭源软件,官方提供了二进制包、软件源,以及docker三种安装方式,具体参见Installing Sync Package On Linux。我们今天主要看看软件源安装和官方编译好的二进制执行包安装。
下载,安装主程序
Debian / Ubuntu:
echo "deb http://linux-packages.resilio.com/resilio-sync/deb resilio-sync non-free" | sudo tee /etc/apt/sources.list.d/resilio-sync.list wget -qO - https://linux-packages.resilio.com/resilio-sync/key.asc | sudo apt-key add - apt-get update apt-get install resilio-sync
CentOS:
vim /etc/yum.repos.d/resilio-sync.repo
按键盘字母i
并写入以下内容,按ESC键,然后输入:wq 回车
[resilio-sync] name=Resilio Sync baseurl=http://linux-packages.resilio.com/resilio-sync/rpm/$basearch enabled=1 gpgcheck=1
二进制包安装
由于从软件包安装只支持 DEB 和 RPM 两种软件包管理器,而默认内置了 DEB 软件包管理器的主要是 Debian 系的 Debian Linux, Kali Linux, Ubuntu Linux 以及众多基于 Ubuntu 的其他发行版,默认内置了 RPM 软件包管理器的主要是 RedHat 系的 Redhat Linux, CentOS Linux, Fedora Linux 和 SUSE Linux 等。如果想要在其他 Linux 发行版中安装,可以参考 Resilio Sync 提供的其他安装方式,链接地址:https://help.resilio.com/hc/en-us/articles/206178924
使用软件包管理器安装,第一步就是下载对应的软件包,下载地址如下,根据自己的系统选择即可:
https://help.resilio.com/hc/en-us/articles/206178924
如果是下载的 DEB 包,就使用如下命令安装:
sudo dpkg -i <resilio-sync.deb>
如果是下载的 RPM 包,就使用如下命令安装:
sudo rpm -i <resilio-sync.rpm>
完成后:
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT iptables -I INPUT -m state --state NEW -m udp -p udp --dport 8888 -j ACCEPT /etc/init.d/iptables save /etc/init.d/iptables restart
开启任意主机连接
sed -i "s/127.0.0.1/0.0.0.0/g" /etc/resilio-sync/config.json sed -i "s/127.0.0.1/0.0.0.0/g" /etc/resilio-sync/user_config.json
配置同步文件夹
假设我们希望能把密钥的文件夹同步到/data/sync
,我们需要给/data/sync
设置Resilio Sync
的用户权限,才能向这个文件夹写入内容。
chown -R rslsync /data/sync
Resilio Sync控制命令
service resilio-sync start #启动 service resilio-sync stop #停止
开启防火墙端口
Ubuntu / Debian
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT iptables -I INPUT -m state --state NEW -m udp -p udp --dport 8888 -j ACCEPT
CentOS
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT iptables -I INPUT -m state --state NEW -m udp -p udp --dport 8888 -j ACCEPT /etc/init.d/iptables save /etc/init.d/iptables restart
重启sync
service resilio-sync restart
配置 Sync 网页端
访问http://VPSIP地址:8888
修改webui端口
nano /etc/resilio-sync/config.json nano /etc/resilio-sync/user_config.json
将8888改为可用的端口
权限问题
出于安全性的考虑,Resilio Sync 默认只会以属于 rslsync
组的 rslsync
用户的身份运行,很显然,这并不适合我们日常使用。关于权限问题,小白有这个几个解决思路:
1.将同步文件夹权限设为777
2.修改/etc/passwd
文件,直接将 rslsync
用户权限设为root权限
3.精细一点,修改用户及用户组归属
第一种很简单,第二种很暴力,具体可参见小白手动安装transmission那篇教程,第三种我们稍微说下:
首先,将用户 rslsync
新增到当前用户所在的组,user_group
就是指当前用户所在的组,根据实际情况替换即可:
sudo usermod -aG user_group rslsync
之后,将当前用户 user_name
新增到 rslsync
用户组,user_name
就是指当前用户,根据实际情况替换即可:
sudo usermod -aG rslsync user_name
P.S: 上面的 -a
参数的作用是将用户追加至 -G
参数中提到的附加组中,但并不从其它组中删除此用户。
一般情况下,当前用户的用户名和其默认所属的组的组名是相同的,例如,在我的操作环境下,当前用户是 zkf
, 当前用户所属的组也是 zkf
. 如果不确定当前用户所属的组是谁,可以使用如下命令查询:
groups <用户名>
此外,我们还需要建立一个 Resilio Sync 的同步文件夹,然后赋予其读写权限:
mkdir synced_folder chmod g+rw synced_folder
参考文献
2.保姆级教程:在Linux上安装配置Resilio Sync