[转帖]Syncthing文件同步方案完全攻略(亲测有效)

syncthing,文件,同步,方案,完全,攻略,有效 · 浏览次数 : 0

小编点评

**云同步方案概述** **1. Seafile 和 Nextcloud** * Seafile 是一个全功能的云盘,支持多种设备同步。 * Nextcloud 是一个开源云文件服务器,可以用于本地和远程文件同步。 **2. Syncthing** * Syncthing 是一个跨平台的同步器,可以用于在不同设备上同步文件。 * 它支持各种设备类型,并且具有简单的配置界面。 **3. Windows** * SyncTrayzor 是一个用于 Windows 的云同步工具,支持各种设备同步。 * 它易于安装和使用,并且拥有丰富的功能。 **4. 共享文件夹设置技巧** * 在所有设备登录 Web 管理界面之前,都需要添加一个共享文件夹。 * 在【共享】标签中点击右键,选择“添加设备”。 * 在“当前设备已共享”下拉列表中选择相应的 VPS 设备。 * 切换回相应的设备,即可共享文件夹。 **5. 常见问题解决方案** * **进入管理UI的时候,总是报错:failed to setup inotify handler。** * 重启服务器。 * **Windows端报错:WARNING: Failed to initialize config: Config file version (31) is newer than supported version (29).** * 下载最新版本的 syncthing.exe 并复制到 D:\SyncRoot\。 * **文件同步卡住不动怎么办?** * 设置 D:\Sync 文件夹的权限,让本机 USER 对它有全部读写权限。

正文

在这里插入图片描述

云同步方案有很多种,比如 Seafile 和 Nextcloud,这两者都是正儿八经的云盘,功能多,体型庞大,部署起来很麻烦,如果应用场景仅仅是需要同步一下公司电脑和家里电脑的文档,犯不上用这两者。

Syncthing不是云盘,它就是一个同步器,可以让你在公司没干完的活同步到家里的电脑里继续完成,假如家中PC或者公司PC其中一台能保持长期在线不关机的话,甚至可以省略通过VPS服务器中转这个环节。比较轻量,部署简单,关键是传输速度比前两者快。

1、在服务器上安装Syncthing

  • 输入:cat /proc/version 查看系统版本(经查为64位)
    访问: https://syncthing.net/downloads/
    下载安装64位 Linux版:

    wget https://github.com/syncthing/syncthing/releases/download/v1.8.0/syncthing-linux-amd64-v1.8.0.tar.gz
    tar zxf syncthing-linux*
    cd syncthing-linux*
    cp syncthing /usr/local/bin
    syncthing
    
    • 1
    • 2
    • 3
    • 4
    • 5

    当出现INFO: Detected 0 NAT services的时候,按CTRL+C退出程序

    编辑文档:nano /root/.config/syncthing/config.xml

    搜索:127.0.0.1:8384 改为 0.0.0.0:8384
    
    • 1

    存盘退出。
    输入:syncthing (运行Syncthing)
    不要按CTRL+C退出,直接去浏览器访问http://mysite.com:8384 (mysite.com换成你的域名或IP)
    在这个WEB UI里设置密码、共享文件夹等(系统会默认一个/root/Sync
    基本设置完毕之后,可以在服务器这边按下CTRL+C键,中止suncthing运行。


2、设置后台运行

  • 方法一:
    如果你安装了crontab,可以让它在每次系统重启后自动执行一次syncthing:

    crontab -e
    加一行:
    @reboot nohup /usr/local/bin/syncthing &> /dev/null &
    
    • 1
    • 2
    • 3
  • 方法二:
    按照“正统”的做法,将Syncthing设为一个服务来自动运行:

    开机启动脚本在这个位置:
    /安装包解压路径/syncthing-linux-amd64-v1.8.0/etc/linux-systemd/system
    将这个文件拷贝到系统服务里(PS: 本例是在 /root/syncthing下解压的安装包):
    cp /root/syncthing/syncthing-linux-amd64-v1.8.0/etc/linux-systemd/system/syncthing@.service /usr/lib/systemd/system/syncthing@root.service

    编辑文档:nano /usr/lib/systemd/system/syncthing@root.service

    将:
    ExecStart=/usr/bin/syncthing -no-browser -no-restart -logflags=0
    改为:
    ExecStart=/usr/local/bin/syncthing -no-browser -no-restart -logflags=0
    
    • 1
    • 2
    • 3
    • 4

    存盘退出。
    让设置生效:
    systemctl daemon-reload
    systemctl restart syncthing@root (启动服务)
    systemctl enable syncthing@root (设为开机启动)
    至此服务器端Sything安装完毕。


3、Windows篇

  • 使用 SyncTrayzor
    下载SyncTrayzor:https://github.com/canton7/SyncTrayzor/releases/tag/v1.1.24
    这是一个GUI程序,BUG多,不太好用,感兴趣的请自行研究。

  • 不使用 SyncTrayzor
    此方案只需要额外编辑一个批处理文件,比较轻量,感觉比SyncTrayzor好使,推荐。
    第一步,将Sync默认配置文件和数据库拷贝到其他地方:
    C:\Users\rocka\AppData\Local\Syncthing
    比如D:\SyncRoot

    新建一个批处理文件:

    @ECHO OFF
    %1 start mshta vbscript:createobject("wscript.shell").run("""%~0"" ::",0)(window.close)&&exit
    start /b syncthing.exe -config="D:\SyncRoot\Syncthing.conf" -data="D:\SyncRoot\Syncthing.conf\index-v0.14.0.db" -no-browser
    
    • 1
    • 2
    • 3

    存盘退出。
    再将这个bat文件设为自启动即可,
    如果需要进入WEB管理界面,浏览器访问:http://127.0.0.1:8384

4、共享文件夹设置技巧

  • 现有3个结点:【家PC】、【公司PC】、【VPS】
  • 首先登录【VPS】的WEB管理界面,添加一个共享文件夹(比如/root/Sync,PS: 这是系统已经默认帮你添加好的)
  • 然后点击界面右上角的小齿轮按钮 > 显示ID > ID是一个64位长的字符串 (记录下来备用)
  • 回到【家PC】的WEB管理界面,添加一个远程设备,输入刚才记录下来的ID (也就是VPS的设备ID)
  • 稍等一下,切换回【VPS】管理界面,会弹出一个窗口,询问你是否要将Sync文件夹共享给【家PC】,选择"接受"
  • 切换回【家PC】,会弹出一个窗口,询问是否接受VPS共享给你的文件夹,选择接受

第一步:此时系统会自动默认~/default 作为物理存储位置,~ 即Linux下的"HOME"目录,在Windows下即"C:\用户",如果你想换一个文件夹作为存储位置,比如你想存在D:\Sync下面,则在【文件夹路径】下面输入D:\Sync (PS:虽然输入框是灰色的,但是不要误认为它不能输入),然后【文件夹ID】要跟VPS上的文件夹ID一致(默认为default)

第二步:点开【共享】标签,在 “当前设备已共享” 下面在你的VPS设备上打勾即可。

  • 现在,【VPS】上的/root/Sync 和【家PC】的 D:\Sync 这两个文件夹就完成了同步。
  • 依葫芦画瓢,按照同样的办法将【公司PC】和【VPS】也设置一遍
  • 现在,这三个结点就同步完成了,因为【VPS】是永不关机的,以它为中转,变相实现了【家PC】和【公司PC】的文档同步。

5、常见问题

  1. 进入管理UI的时候,总是报错:failed to setup inotify handler.
    解决方案:
    登录服务器,编辑文档:nano /etc/sysctl.conf
    加一行:
    fs.inotify.max_user_watches=204800
    重启服务器即可。

  2. Windows端报错:WARNING: Failed to initialize config: Config file version (31) is newer than supported version (29). If this is expected
    解决方案:
    去官网下载最新版的syncthing.exe,拷贝到:D:\SyncRoot\ 里即可

  3. 各种设置都OK了,但是在同步的时候卡住不动怎么办?
    设置一下D:\Sync文件夹的权限,让本机USER对它有全部读写权限即可。

文章知识点与官方知识档案匹配,可进一步学习相关知识
云原生入门技能树首页概览7986 人正在系统学习中

与[转帖]Syncthing文件同步方案完全攻略(亲测有效)相似的内容:

[转帖]Syncthing文件同步方案完全攻略(亲测有效)

云同步方案有很多种,比如 Seafile 和 Nextcloud,这两者都是正儿八经的云盘,功能多,体型庞大,部署起来很麻烦,如果应用场景仅仅是需要同步一下公司电脑和家里电脑的文档,犯不上用这两者。 Syncthing不是云盘,它就是一个同步器,可以让你在公司没干完的活同步到家里的电脑里继续完成,假

[转帖](二十三)小众但好用: Syncthing 把手机变成同步网盘

https://zhuanlan.zhihu.com/p/121544814 说到网盘同步工具,就一定离不开 Dropbox,我能说出这家伙的 100 个优点,以及它唯一的一个缺点: 因为众所周知的原因国内无法使用 (小声逼逼)。就算你通过某种手段能够正常使用,也无法与同事和朋友共享或协作文件,因为

[转帖]syncthing安装使用

https://www.jianshu.com/p/d31f16cfb285 安装 apt install syncthing 进行配置 1.###执行 syncthing 2.结果如下,出现 INFO: Detected 0 NAT services 代表启动成功! syncthing执行结果 3

[转帖]

Linux ubuntu20.04 网络配置(图文教程) 因为我是刚装好的最小系统,所以很多东西都没有,在开始配置之前需要做下准备 环境准备 系统:ubuntu20.04网卡:双网卡 网卡一:供连接互联网使用网卡二:供连接内网使用(看情况,如果一张网卡足够,没必要做第二张网卡) 工具: net-to

[转帖]

https://cloud.tencent.com/developer/article/2168105?areaSource=104001.13&traceId=zcVNsKTUApF9rNJSkcCbB 前言 Redis作为高性能的内存数据库,在大数据量的情况下也会遇到性能瓶颈,日常开发中只有时刻

[转帖]ISV 、OSV、 SIG 概念

ISV 、OSV、 SIG 概念 2022-10-14 12:29530原创大杂烩 本文链接:https://www.cndba.cn/dave/article/108699 1. ISV: Independent Software Vendors “独立软件开发商”,特指专门从事软件的开发、生产、

[转帖]Redis 7 参数 修改 说明

2022-06-16 14:491800原创Redis 本文链接:https://www.cndba.cn/dave/article/108066 在之前的博客我们介绍了Redis 7 的安装和配置,如下: Linux 7.8 平台 Redis 7 安装并配置开机自启动 操作手册https://ww

[转帖]HTTPS中间人攻击原理

https://www.zhihu.com/people/bei-ji-85/posts 背景 前一段时间,公司北京地区上线了一个HTTPS防火墙,用来监听HTTPS流量。防火墙上线之前,邮件通知给管理层,我从我老大那里听说这个事情的时候,说这个有风险,然后意外地发现,很多人原来都不知道HTTPS防

[转帖]关于字节序(大小端)的一点想法

https://www.zhihu.com/people/bei-ji-85/posts 今天在一个技术群里有人问起来了,当时有一些讨论(不完全都是我个人的观点),整理一下: 为什么网络字节序(多数情况下)是大端? 早年设备的缓存很小,先接收高字节能快速的判断报文信息:包长度(需要准备多大缓存)、地

[转帖]awk提取某一行某一列的数据

https://www.jianshu.com/p/dbcb7fe2da56 1、提取文件中第1列数据 awk '{print $1}' filename > out.txt 2、提取前2列的文件 awk `{print $1,$2}' filename > out.txt 3、打印完第一列,然后打