在树莓派中使用SYNCTHING
在树莓派中使用SYNCTHING
为什么会有这篇文章
之前使用同步产品的路线owncloud->nextcloud现在准备换成syncthing,当然各有各的好处nextcloud做为owncloud的升级产品在扩展方面做得更好,但是这两个同步软件都有一个共同的问题:当文件过多的时候(40GB左右的代码,尤其是node_modules,vendor这类文件过多的情况下)同步起来就非常的慢了。和btsync相比我为啥选择syncthing?别问为啥,就是因为开源。
raybet雷竞技网页版入口和下载
wget https://github.com/syncthing/syncthing/releases/tag/v0.14.36
tar -zxvf syncthing-linux-arm-v0.14.36.tar.gz ~
然后执行
~/syncthing-linux-arm-v0.14.36/syncthing
然后可以看到一堆输出信息,例如监听的端口,NAT信息等
可以使用CTRL+C来停止运行
编辑配置文件
编辑默认配置文件
vim ~/.config/syncthing/config.xml
<gui enabled="true" tls="true" debugging="false">
<address>127.0.0.1:8384</address>
<user>root</user>
<password>$2a$10$07NavS/KNzAxDKrjFguh.uRkAKvtT27tHL.7JYLPrfnthOQgYIjKm</password>
<apikey>ZWMsAMUHSJLMxLn9dM6WneZApSmPLnJF</apikey>
<theme>default</theme>
</gui>
默认监听地址是127.0.0.1如果想要外网访问只需要修改为0.0.0.0,如果要使用https链接可以把tls改为true
如果外网访问,可以通过_http://your_ip_address:8384__来访问了,不过记得在防火墙做一个_tcp 8384__的端口转发,否则是打不开GUI界面的。
在第一次运行时最好设置下访问的用户名和密码。为了安全靠考虑,毕竟有些内容是比较隐私的。
修改后
<gui enabled="true" tls="true" debugging="false">
<address>0.0.0.0:8384</address>
<user>root</user>
<password>$2a$10$07NavS/KNzAxDKrjFguh.uRkAKvtT27tHL.7JYLPrfnthOQgYIjKm</password>
<apikey>ZWMsAMUHSJLMxLn9dM6WneZApSmPLnJF</apikey>
<theme>default</theme>
</gui>
设置syncthing自动启动
在/etc/init.d目录下面建立启动文件
sudo vim /etc/init.d/syncthing
脚本内容如下:
#!/bin/sh
### BEGIN INIT INFO
# Provides: Syncthing
# Required-Start: $local_fs $remote_fs $network
# Required-Stop: $local_fs $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Syncthing
# Description: Syncthing is for backups
### END INIT INFO
# Documentation available at
# http://refspecs.linuxfoundation.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptfunc.html
# Debian provides some extra functions though
. /lib/lsb/init-functions
DAEMON_NAME="syncthing"
DAEMON_USER=pi
DAEMON_PATH="/home/pi/syncthing-linux-arm-v0.14.36/syncthing"
DAEMON_OPTS=""
DAEMON_PWD="${PWD}"
DAEMON_DESC=$(get_lsb_header_val $0 "Short-Description")
DAEMON_PID="/var/run/${DAEMON_NAME}.pid"
DAEMON_NICE=0
DAEMON_LOG='/var/log/syncthing'
[ -r "/etc/default/${DAEMON_NAME}" ] && . "/etc/default/${DAEMON_NAME}"
do_start() {
local result
pidofproc -p "${DAEMON_PID}" "${DAEMON_PATH}" > /dev/null
if [ $? -eq 0 ]; then
log_warning_msg "${DAEMON_NAME} is already started"
result=0
else
log_daemon_msg "Starting ${DAEMON_DESC}" "${DAEMON_NAME}"
touch "${DAEMON_LOG}"
chown $DAEMON_USER "${DAEMON_LOG}"
chmod u+rw "${DAEMON_LOG}"
if [ -z "${DAEMON_USER}" ]; then
start-stop-daemon --start --quiet --oknodo --background \
--nicelevel $DAEMON_NICE \
--chdir "${DAEMON_PWD}" \
--pidfile "${DAEMON_PID}" --make-pidfile \
--exec "${DAEMON_PATH}" -- $DAEMON_OPTS
result=$?
else
start-stop-daemon --start --quiet --oknodo --background \
--nicelevel $DAEMON_NICE \
--chdir "${DAEMON_PWD}" \
--pidfile "${DAEMON_PID}" --make-pidfile \
--chuid "${DAEMON_USER}" \
--exec "${DAEMON_PATH}" -- $DAEMON_OPTS
result=$?
fi
log_end_msg $result
fi
return $result
}
do_stop() {
local result
pidofproc -p "${DAEMON_PID}" "${DAEMON_PATH}" > /dev/null
if [ $? -ne 0 ]; then
log_warning_msg "${DAEMON_NAME} is not started"
result=0
else
log_daemon_msg "Stopping ${DAEMON_DESC}" "${DAEMON_NAME}"
killproc -p "${DAEMON_PID}" "${DAEMON_PATH}"
result=$?
log_end_msg $result
rm "${DAEMON_PID}"
fi
return $result
}
do_restart() {
local result
do_stop
result=$?
if [ $result = 0 ]; then
do_start
result=$?
fi
return $result
}
do_status() {
local result
status_of_proc -p "${DAEMON_PID}" "${DAEMON_PATH}" "${DAEMON_NAME}"
result=$?
return $result
}
do_usage() {
echo $"Usage: $0 {start | stop | restart | status}"
exit 1
}
case "$1" in
start) do_start; exit $? ;;
stop) do_stop; exit $? ;;
restart) do_restart; exit $? ;;
status) do_status; exit $? ;;
*) do_usage; exit 1 ;;
esac
然后就是设置执行权限以及添加默认启动
sudo chmod +x /etc/init.d/syncthing #加可执行权限
sudo update-rc.d syncthing defaults #添加默认启动
图形界面也是可以关闭syncthing的,也可以通过脚本关闭
sudo update-rc.d syncthing remove
一共4句命令
sudo service syncthing start
sudo service syncthing stop
sudo service syncthing restart
sudo service syncthing status