目录
failed to setup inotify handler. Please increase inotify limits
自建的私有云网盘软件很多,比如 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 2 3 4 5 6 |
|
注:Syncthing 的版本迭代比较频繁,你可以在这个页面获取最新的安装包。页面中文件名为 syncthing-linux-arm-版本号.tar.gz 的就是树莓派可用的版本。
部署、测试
解压之后当前目录下多了一个名为 syncthing-linux-arm-v0.14.42 的目录。
1 2 3 4 5 6 |
|
先运行主程序看看是个什么东东
1 |
|
结果输出一些程序初始化信息,包括网络监听端口、WebUI(操作界面) URL 等,表示部署成功。先不要急着访问 WebUI,因为还需要少量配置。先 Ctrl+C 中止程序。
配置
运行下面的命令编辑 Syncthing 的配置文件:
1 |
|
找到下面的内容
1 2 3 4 |
|
将 127.0.0.1:8384 修改为 0.0.0.0:8384 以便让其他终端可以访问到 Syncthing 的 WebUI。
下面再次运行主程序
1 |
|
不要中断程序,尝试用电脑或者手机的浏览器访问 Syncthing 的 WebUI,地址为
http://树莓派的IP地址:8384
打开之后,会让你设置用户名和密码。下面再大致了解下几个关键的界面:
到这一步就已经可以投入使用了!
但是使用这个命令运行 Syncthing,程序需要一直在前台运行。为了让它在后台默默执行可以这样:
1 |
|
如果你希望让 Syncthing 可以自动开机运行,可以继续往下阅读。
设置开机自动运行
在 /etc/init.d 目录下建立启动文件
1 |
|
输入以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
|
保存之后运行
1 2 3 4 |
|
之后你还可以通过这四个命令管理 Syncthing,顾名思义。
1 2 3 4 |
|
如后面你要取消开机自动运行可以使用
1 |
|
如果文件数过多的话, 管理页面会报错
failed to setup inotify handler. Please increase inotify limits
那是因为系统允许监控的文件数有限制,需要修改系统参数
查看一下/proc/sys/fs/inotify/max_user_watches这个文件里面的数据是多少,默认是8192,不能直接修改这个文件,需要修改 /etc/sysctl.conf ,到里面新增以下一条记录:
fs.inotify.max_user_watches = 100000 #依照你自己所需,預設值是8192而已 # 修改完成后,重新载入配置生效 sysctl -p # 然后再看看 /proc/sys/fs/inotify/max_user_watches 这个文件是否已经改变
WIN下面部署方案一:
需要注意的是:windows 7 支持的最新版本为1.27.0.0,不能再更新了,否则会启动不了。
windows下面一般会安装SyncTrayzor,我的安装目录为:D:\Program Files\SyncTrayzor,启动时会自动在C:\Users\Administrator\AppData\Roaming\SyncTrayzor这个目录下面生成以下几个文件,配置和日志都会存放在这里, 更新的syncthing.exe也将会安装在这里面。
为了防止自动更新,可以在下面界面的勾选上
如果一不小心更新过了,就会造成syncthing无程序法启动,此时需要先把上面停止自动更新后,再到C:\Users\Administrator\AppData\Roaming\SyncTrayzor目录下面,还原老的程序版本,即把名为syncthing.exe.old改为syncthing.exe,再重启SyncTrayzor即可。
WIN下面部署方案二:
windows下面,也可以直接下一个syncthing,启动后会开启一个cmd命令窗口,
我们在启动那里加上个参数:-no-console -no-browser ,就会不打开命令窗口后台运行。
将syncthing快捷方式放到startup文件夹中(win11下,运行shell:startup可打开startup启动文件夹),开机自动启动,同时点开快捷方式的属性,在目标的后面添加-no-console -no-browser也可以,注意要勾上以管理员身份运行,不然还是会弹出命令窗口的。 这次开机就能自动后台启动,然后从浏览器上打开http://127.0.0.1:8384/进行管理,这样可以避免太大的SyncTrayzor,占用系统资源,而且还会出现打不开的现象。
后来发现,在WIN11下面,就算放在启动目录下面,也还是启动不了, 需要创建计划任务,有一点要注意一下:在“条件”选项卡中,勾选“以最高权限运行”,这将确保任务以管理员权限执行。
与 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
再配上蒲公英,可以实现异地同步。
在树莓派上安装可以说是非常人性化,超级简单,可以参考官方的安装方式
本地机上下载对应的客户端, 就可能实现异地同步了。