请选择 进入手机版 | 继续访问电脑版
查看: 449|回复: 0

【分享】在树莓派上用 Syncthing 自建私有云盘

[复制链接]

主题

帖子

0

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
0
发表于 2019-6-24 16:37:35 | 显示全部楼层 |阅读模式
转自:树莓派中文站 knowncold

自建的私有云网盘软件很多,比如 Seafile、ownCloud 等,功能很实用,而 Syncthing 最大的特色是采用了与 Resilio Sync (BitTorrent Sync) 类似的 P2P 分布式技术,无需中心服务器,即可让多台设备互相实时同步文件,用过 Resilio Sync 的朋友都明白这种同步方式的优势了。它们两者的实现方式很相似,区别是 Resilio 属于商业软件,需付费使用,在国内已慢慢变得访问(被)困难(墙),而 Syncthing 不仅完全免费且开源,相比 Resilio 还增加了“文件版本控制”、“单向同步”等堪称杀手级的功能特性。
Syncthing 功能上非常接近于 Resilio Sync / BT Sync,不过说它是一款用于搭建网盘的服务器软件或者云存储服务应用似乎并不十分恰当,相较于 Seafile、NextCloud 等服务器工具,Syncthing 实际上更像是一款文件/文件夹同步工具。你可以非常轻松简单地让同一路由器下的多台 PC 电脑、NAS 设备实现局域网互相同步,也可以在 VPS 服务器或 24 小时不关机且有公网 IP 的电脑上安装和配置 Syncthing,让其成为真正意义上的云同步网盘。

更难得的是 Syncthing 开源且免费,跨平台支持 Windows,Mac,Linux,Android。(稍有些遗憾的是目前暂不支持iOS平台)当然也支持树莓派平台,下面应读者要求,树莓派实验室为大家介绍如何在树莓派上安装 Syncthing!(VPS 等 Linux 平台上安装方法类同,也可以参考本文)




获取软件包
  1. <font size="3" face="微软雅黑">#  进入用户所在目录
  2. cd ~
  3. # 下载软件包,如果发现不能顺畅下载,那可能是墙的锅,手动下载了再通过 SFTP 上传到 /home/pi 目录下也可以
  4. wget https://github.com/syncthing/syncthing/releases/download/v0.14.42/syncthing-linux-arm-v0.14.42.tar.gz
  5. # 解压
  6. tar -zxvf syncthing-linux-arm-v0.14.42.tar.gz</font></font>
复制代码


注:Syncthing 的版本迭代比较频繁,你可以在这个页面获取最新的安装包。页面中文件名为 syncthing-linux-arm-版本号.tar.gz 的就是树莓派可用的版本。
部署、测试解压之后当前目录下多了一个名为 syncthing-linux-arm-v0.14.42 的目录。
  1. <font size="3" face="微软雅黑"># 强迫症表示要重命名缩短一下:
  2. mv syncthing-linux-arm-v0.14.42 syncthing
  3. # 进入 syncthing 目录
  4. cd syncthing
  5. # 给主程序加上执行权限
  6. chmod +x syncthing</font>
复制代码


  1. <font size="3" face="微软雅黑">~/syncthing/syncthing</font>
复制代码


结果输出一些程序初始化信息,包括网络监听端口、WebUI(操作界面) URL 等,表示部署成功。先不要急着访问 WebUI,因为还需要少量配置。先 Ctrl+C 中止程序。
配置运行下面的命令编辑 Syncthing 的配置文件:
  1. <font size="3" face="微软雅黑">sudo nano /home/pi/.config/syncthing/config.xm</font>
复制代码
l

找到下面的内容
  1. <font size="3" face="微软雅黑"><gui enabled="true" tls="false"><address>127.0.0.1:8384</address><apikey>XXXXXX</apikey></gui></font>
复制代码
将 127.0.0.1:8384 修改为 0.0.0.0:8384 以便让其他终端可以访问到 Syncthing 的 WebUI。


下面再次运行主程序
  1. <font face="微软雅黑">~/syncthing/syncthing</font>
复制代码

不要中断程序,尝试用电脑或者手机的浏览器访问 Syncthing 的 WebUI,地址为
http://树莓派的IP地址:8384




打开之后,会让你设置用户名和密码。下面再大致了解下几个关键的界面:






到这一步就已经可以投入使用了!
但是使用这个命令运行 Syncthing,程序需要一直在前台运行。为了让它在后台默默执行可以这样
  1. ~/syncthing/syncthing &
复制代码

如果你希望让 Syncthing 可以自动开机运行,可以继续往下阅读。

设置开机自动运行
在 /etc/init.d 目录下建立启动文件
  1. <font face="微软雅黑"><font size="3">sudo nano /etc/init.d/syncthing </font></font>
复制代码

输入以下内容:
  1. <font size="3" face="微软雅黑">#!/bin/sh
  2. ### BEGIN INIT INFO
  3. # Provides:          Syncthing
  4. # Required-Start:    $local_fs $remote_fs $network
  5. # Required-Stop:     $local_fs $remote_fs $network
  6. # Default-Start:     2 3 4 5
  7. # Default-Stop:      0 1 6
  8. # Short-Description: Syncthing
  9. # Description:       Syncthing is for backups
  10. ### END INIT INFO
  11.   
  12. # Documentation available at
  13. # http://refspecs.linuxfoundation.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptfunc.html
  14. # Debian provides some extra functions though
  15. . /lib/lsb/init-functions
  16.   
  17. DAEMON_NAME="syncthing"
  18. DAEMON_USER=pi
  19. DAEMON_PATH="/home/pi/syncthing/syncthing"
  20. DAEMON_OPTS=""
  21. DAEMON_PWD="${PWD}"
  22. DAEMON_DESC=$(get_lsb_header_val $0 "Short-Description")
  23. DAEMON_PID="/var/run/${DAEMON_NAME}.pid"
  24. DAEMON_NICE=0
  25. DAEMON_LOG='/var/log/syncthing'
  26.   
  27. [ -r "/etc/default/${DAEMON_NAME}" ] && . "/etc/default/${DAEMON_NAME}"
  28.   
  29. do_start() {
  30.   local result
  31.   
  32.     pidofproc -p "${DAEMON_PID}" "${DAEMON_PATH}" > /dev/null
  33.     if [ $? -eq 0 ]; then
  34.         log_warning_msg "${DAEMON_NAME} is already started"
  35.         result=0
  36.     else
  37.         log_daemon_msg "Starting ${DAEMON_DESC}" "${DAEMON_NAME}"
  38.         touch "${DAEMON_LOG}"
  39.         chown $DAEMON_USER "${DAEMON_LOG}"
  40.         chmod u+rw "${DAEMON_LOG}"
  41.         if [ -z "${DAEMON_USER}" ]; then
  42.             start-stop-daemon --start --quiet --oknodo --background \
  43.                 --nicelevel $DAEMON_NICE \
  44.                 --chdir "${DAEMON_PWD}" \
  45.                 --pidfile "${DAEMON_PID}" --make-pidfile \
  46.                 --exec "${DAEMON_PATH}" -- $DAEMON_OPTS
  47.             result=$?
  48.         else
  49.             start-stop-daemon --start --quiet --oknodo --background \
  50.                 --nicelevel $DAEMON_NICE \
  51.                 --chdir "${DAEMON_PWD}" \
  52.                 --pidfile "${DAEMON_PID}" --make-pidfile \
  53.                 --chuid "${DAEMON_USER}" \
  54.                 --exec "${DAEMON_PATH}" -- $DAEMON_OPTS
  55.             result=$?
  56.         fi
  57.         log_end_msg $result
  58.     fi
  59.     return $result
  60. }
  61.   
  62. do_stop() {
  63.     local result
  64.   
  65.     pidofproc -p "${DAEMON_PID}" "${DAEMON_PATH}" > /dev/null
  66.     if [ $? -ne 0 ]; then
  67.         log_warning_msg "${DAEMON_NAME} is not started"
  68.         result=0
  69.     else
  70.         log_daemon_msg "Stopping ${DAEMON_DESC}" "${DAEMON_NAME}"
  71.         killproc -p "${DAEMON_PID}" "${DAEMON_PATH}"
  72.         result=$?
  73.         log_end_msg $result
  74.         rm "${DAEMON_PID}"
  75.     fi
  76.     return $result
  77. }
  78.   
  79. do_restart() {
  80.     local result
  81.     do_stop
  82.     result=$?
  83.     if [ $result = 0 ]; then
  84.         do_start
  85.         result=$?
  86.     fi
  87.     return $result
  88. }
  89.   
  90. do_status() {
  91.     local result
  92.     status_of_proc -p "${DAEMON_PID}" "${DAEMON_PATH}" "${DAEMON_NAME}"
  93.     result=$?
  94.     return $result
  95. }
  96.   
  97. do_usage() {
  98.     echo [        DISCUZ_CODE_82        ]quot;Usage: $0 {start | stop | restart | status}"
  99.     exit 1
  100. }
  101.   
  102. case "$1" in
  103. start)   do_start;   exit $? ;;
  104. stop)    do_stop;    exit $? ;;
  105. restart) do_restart; exit $? ;;
  106. status)  do_status;  exit $? ;;
  107. *)       do_usage;   exit  1 ;;
  108. esac</font>
复制代码

保存之后运行
之后你还可以通过这四个命令管理 Syncthing,顾名思义。



如后面你要开机自动运行可以使用
与 BTSync 的比较Syncthing 与 BTSync 有着相似的功能,均很强大。
1.Syncthing 与 BTSync 相比,Syncthing 是开源的,MIT协议。可免费用于商业用途,而 BTSync 相反。
2.Syncthing 的方式更侧重个人资料的同步,BTSync 还可以在同步的基础上进行分享。
3.Syncthing 暂无 iOS 版本。


各种平台的客户端可以在官网免费获取:
https://syncthing.net/
(Windows 版的 Syncthing 官方还提供了一个图形界面版的“SyncTrayzor”工具)

GitHub:
https://github.com/syncthing/syncthing

有价值的参考:
在安卓设备上使用 Syncthing
正文的脚本出处
本文来自:树莓派实验室




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|iceasy com ( 粤ICP备19072333号-1 )

GMT+8, 2020-6-6 08:35 , Processed in 0.126835 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表