Docker项目-通过Syncthing搭建个人同步盘

Syncthing 是一款开源、免费、跨平台的文件同步工具,基于 P2P 技术 实现设备间的文件同步。它的同步方式是去中心化的,不需要一个中央服务器,因此避免了服务器带来的限制。与传统网盘不同,Syncthing在同步过程中不会将数据上传到云服务器,而是直接在你指定的设备之间传输,数据只存储在你信任的本地设备上,确保了隐私和安全。
使用Syncthing可以解决多个与数据管理和访问相关的问题,解决个人数据备份、跨设备访问、数据一致性、便捷性访问等个人生活、工作中存在的问题。

Synching简介

Syncthing 是一个连续的文件同步程序。它同步两台或多台计算机之间的文件。

Syncthing有以下特点:

  • 防止数据丢失
  • 防范攻击者
  • 简单易用
  • 多端支持
  • 支持docker部署

项目地址:https://github.com/syncthing/syncthing

部署需求

任意两个或者多个linux、windows、macos客户端

同步盘部署

本文采取linux服务器通过docker部署,与windows客户端进行同步。

Linux端部署

linux端采用RockyLinux 8.8

安装docker
yum install -y yum-utils
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce -y
启动docker
systemctl enable docker --now
安装docker-compose
curl -L https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod a+x /usr/local/bin/docker-compose
创建项目目录
mkdir -p /data/syncthing
创建docker-compose文件
cd /data/synthing
cat > docker-compose.yaml <<EOF
version: "3"
services:
  syncthing:
    image: syncthing/syncthing:1.25
    container_name: syncthing
    hostname: my-syncthing
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - /data/syncthing/data/myfiles:/var/syncthing/myfiles
    network_mode: host
    restart: unless-stopped
创建docker容器
cd /data/synthing
docker-compose up -d
windows端部署

在https://github.com/syncthing/syncthing/releases/下载windows客户端,直接进行安装。

后面静默运行

默认启动windows客户端,会打开一个cmd运行界面且不能关闭,不方便使用。通过脚本方式隐藏运行:

  • 在syncthing程序根目录下创建start_syncthing_hidden.ps1文件,在文件中写入以下内容
$exe_path = "E:\syncthing-windows-amd64\syncthing.exe"
Start-Process -FilePath $exe_path -WindowStyle Hidden
  • 在syncthing程序根目录下创建start_sycthing.bat文件并写入以下内容
@echo off
PowerShell.exe -NoProfile -Command "& 'E:\syncthing-windows-amd64\start_syncthing_hidden.ps1'"
  • 启动程序通过运行start_sycthing.bat程序实现静默运行
    最后windows文件内容如下:
    在这里插入图片描述

windows开机自动运行syncthing

官方文档:https://docs.syncthing.net/users/autostart.html#windows

  1. 按WIN+R打开运行,并执行taskschd.msc,打开任务计划。
  2. 点击创建任务

在这里插入图片描述

  1. 创建任务

    1. 任务名称(例如:syncthing)
    2. 选择不管用户是否登录都要运行

    在这里插入图片描述

    1. 配置触发器

      可以将同步设置为在用户登录或系统启动时启动。

      • 在用户登录时运行

      如果您打算仅在登录到 Windows 用户帐户时才使用同步,请选择此选项。

      1. 在触发器界面选择“新建”

      在这里插入图片描述

      1. 选择开始任务:登录时
      2. 选择特定用户
      3. 点击确定

      在这里插入图片描述

      • 在系统运行时启动

      希望在Windows启动后立即在后台打开Syncthing,甚至在未登录到您的用户帐户时,也可以选择此选项。如果Syncthing文件夹存储在受BitLocker保护的非系统分区上,请不要使用此方法,因为在用户登录之前无法访问这些文件夹。

      1. 在触发器界面选择“新建”
      2. 选择开始任务:启动时

      在这里插入图片描述

      1. 配置操作选项

        1. 点击操作选项卡
        2. 点击新建
        3. 输入程序路径(例如:C:\syncthing\syncthing.exe)
        4. 添加参数:--no-console --no-browser
        5. 点击确定

        在这里插入图片描述

      2. 配置设置选项卡

        1. 取消如果任务运行时间超过以下时间,停止任务

        2. 点击确定

        3. 输入系统用户密码

    在这里插入图片描述

Syncthing使用

  • 添加同步设备
  1. 点击操作->显示ID,获取当前设备ID
    在这里插入图片描述
  2. 在另一台设备,点击右下角的添加远程设备
    在这里插入图片描述
  3. 输入开始获取的设备ID,并自定义设备名称点击保存
    在这里插入图片描述
  4. 共享文件夹
  • 点击添加文件夹
    在这里插入图片描述
  • 在常规选项卡,写入要同步的文件夹路径和名称
    在这里插入图片描述
  • 在共享选项卡,勾选要同步到那些设备
    在这里插入图片描述
  • 点击保持后,会自动扫描和同步

Windows客户端工具:SyncTrazor

SyncTrayzor 是 Windows 上 Syncthing 的一个小托盘实用程序。 它托管和包装 Syncthing,使其行为更像本机 Windows 应用程序,而不像带有 Web 浏览器界面的命令行实用程序。

github地址:https://github.com/canton7/SyncTrayzor
下载地址:https://github.com/canton7/SyncTrayzor/releases

功能包括:

  • 具有内置的 Web 浏览器,因此您无需启动外部浏览器。
  • (可选)在登录时启动,因此无需将 Syncthing 设置为服务。
  • 具有下拉框样式的文件下载/进度窗口 托盘图标指示同步发生的时间。
  • 在以下情况下提醒您:

您有文件冲突
您的某个文件夹不同步
文件夹完成同步
设备连接/断开
有一个工具可以帮助您解决文件冲突

  • 可以暂停按流量计费的网络上的设备,以停止在手机等设备上传输数据
    在这里插入图片描述

参考文档:
https://docs.syncthing.net/
https://github.com/canton7/SyncTrayzor

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐