OpenWrt 使用 Syncthing 搭建文件同步服务

2017-07-18 16866点热度 8条评论

在之前的一篇文章里,教大家在 OpenWrt 使用 KODExplorer 搭建私有云存储。传送门:《OpenWrt 使用 KODExplorer (芒果云) 搭建私有云存储

虽然 KODExplorer 很不错,但不支持同步功能(官方说会即将支持),算是一个缺陷吧。

不过,我们可以使用第三方同步工具弥补这个缺陷,搭配 KODExplorer 或 SMB 进行管理。

这次教大家在 OpenWrt 使用 Syncthing 搭建文件同步服务

Syncthing

准备工作

由于 Syncthing 只提供了部分平台的二进制(虽然也提供源码),所以你路由器的 CPU 架构需要是:x86、x64、ARM、AArch64、MIPS、MIPSLE、PPC64 或 PPC64LE。一般软路由用 x86 或 x64,MTK 用 MIPSLE、博通和高通用 ARM。

可用空间 5M + 内存 128M +

存储设备,分区格式推荐为 ext4,如果你的固件 NTFS 速度快的话,无所谓。

SSH 和 WinSCP 连接准备好

Syncthing

首先,安装依赖软件包:ca-bundle ca-certificates wget openssl-util

前往 https://github.com/syncthing/syncthing/releases/latest 下载对应平台的 Syncthing,下载文件名为 syncthing-linux 开头的压缩包,比如:syncthing-linux-arm-v0.14.32.tar.gz,下载完成后解压。

在存储设备上创建 syncthing 文件夹,比如存储设备路径为:/mnt/sda1,创建文件夹输入命令:mkdir -p /mnt/sda1/syncthing,也可以使用其他方法创建,然后将解压的文件上传,上传完成后,输入chmod +x /mnt/sda1/syncthing/syncthing 设置权限,输入 ln -s /mnt/sda1/syncthing/syncthing /usr/bin/syncthing 创建软连接。

输入 syncthing -gui-address="0.0.0.0:88" -logfile="/var/log/syncthing.log" -home="/mnt/sda1/syncthing" -no-browser >/dev/null & 运行 Syncthing,home="/mnt/sda1/syncthing" 这里改成你的 syncthing 路径。

浏览器输入 192.168.1.1:88 看到 Syncthing 界面即表示运行成功,如果你的路由器 IP 不是 192.168.1.1,请更改为你的路由器 IP。

Syncthing Web GUI

 

停止或重启,点击网页右上角的 [操作] 即可。

查看运行日志:tail -f /var/log/syncthing.log Ctrl + C 终止查看

开机启动:sed -i '/exit 0/i\syncthing -gui-address="0.0.0.0:88" -logfile="/var/log/syncthing.log" -home="/mnt/sda1/syncthing" -no-browser >/dev/null &' /etc/rc.local

取消开机启动:sed -i '/syncthing -gui-address="0.0.0.0:88" -logfile="\/var\/log\/syncthing.log" -home="\/mnt\/sda1\/syncthing" -no-browser >\/dev\/null &/d' /etc/rc.local

文件同步

Syncthing 搭建好以后如何同步文件呢?

首先在电脑或手机上安装 Syncthing

浏览器事先打开 Syncthing 界面

Windows

打开 SyncTrayzor,等待 Syncthing 启动完成,出现 Syncthing 界面,这个界面是 Windows 的 Syncthing,并不是路由器的。

点击  Syncthing 界面的 [添加远程设备],然后点击路由器 Syncthing 界面的 [操作] → [显示 ID],将 ID 复制粘贴至电脑 Syncthing 界面的设备 ID 输入框,如果输入框下面的附近设备有路由器的 ID,直接选择即可,然后点击保存。

 

等待数秒,路由器 Syncthing 界面会出现添加设备请求,[添加设备] → [保存] 。

Syncthing 添加设备

 

添加完设备后,就可以设置需要同步的文件夹了。

点击 Windows Syncthing 界面的 [添加文件夹] → 填写文件夹路径 → 选择共享设备 → [保存]

等待数秒,路由器 Syncthing 界面会出现添加文件夹请求, [添加] → 选择文件夹路径,这个路径是同步文件存放的路径,每个同步文件夹必须使用不同的路径,比如:/mnt/sda1/mivm → [保存]

可以更改文件夹标签来区分文件夹

Syncthing 共享文件夹

等待数秒,文件即会开始同步,默认双向同步,每60秒扫描一次。

也可以改为单向同步,即 Wubdiws 更改文件同步至路由器,路由器更改文件不同步至 Windows。

在 Windows Syncthing 界面点击同步文件夹 [选项] → [高级设置] → 将 [文件夹类型] 改为 [仅发送] → [保存]

[重新扫描] 可立即扫描文件夹更改并进行同步,[暂停] 可暂停文件夹同步。

Android

Android 的使用方法和 Windows 差不多

打开 Syncthing → [设备] → 点击右上角 +  → 输入设备标识 ( ID ),也可以扫描二维码 → 点击右上角 √ → 和 Windows 添加设备步骤相同。

然后在 [文件夹] 添加同步文件夹 → 点击同步文件夹 → 启用同步设备 → 和 Windows 添加文件夹步骤相同。

如果需要实时同步,需要 Syncthing 常驻后台不被杀死。

由于 iOS 版本非官方提供,而且售价 18 元,暂不提供教程。

Syncthing 的同步速度还是很快的,一旦新增、删除、更改文件,立刻同步,可能不同的路由器性能速度也会有所不同。

关于远程同步,我还没有研究,不过作为家庭私有云,远程好像没有什么必要。

通过 KODExplorer 和 Syncthing,我们就可以在 OpenWrt 上面搭建一个功能完整的私有云存储。


上面的教程有任何问题请在下方给我留言,关于 Syncthing 的小技巧也可以给我留言。

微信公众号二维码

微信扫描二维码关注我们

如果觉得文章有帮助到你,可以点击下方的打赏按钮赞助下服务器费用。

小山

一个什么都不会但要装作很厉害的人

文章评论

  • 我的药材

    syncthing -gui-address="0.0.0.0:88" -logfile="/var/log/syncthing.log" -home="/mnt/sda1/syncthing" -no-browser >/dev/null &
    执行的时候出错,/usr/bin/syncthing: line1 : syntax error: unexpected”(“
    这是什么原因造成的?完全按照文章一步一步执行下来的。
    openwrt 18.06.2,wndr4700

    2019-06-09
    • 小山

      @我的药材 你的 /usr/bin/syncthing 文件可能有问题

      2019-06-09
  • hqg2500

    syncthing -gui-address="0.0.0.0:88" -logfile="/var/log/syncthing.log" -home="/mnt/sda5/syncthing" -no-browser >/dev/null &
    执行的时候出错,这是为啥呀?sda5是后来挂载的分区。
    :cry:

    2019-05-21
  • mjy

    提示不能用root运行,请问怎么操作啊

    2019-05-01
    • 小山

      @mjy 可以的,哪个只是警告,不是必须条件。

      2019-05-02
  • 小明

    对啊,没有仅接受,有点不足,要是有这个功能就完美了

    2018-05-28
  • 哒哒

    6666666~~~~又可以学着回去玩了

    2017-09-22
  • 此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据