Syncthing+ECS+OSS+Alist+Rclone实现多端后台无感知同步和备份方案
择要通过Syncthing进行同步与版本控制,并搭建私有的Syncthing发现服务器和中继节点,使用ossfs在服务上挂载OSS目录并利用OSS容量和云盘容量进行存储。末了使用alist和rclone挂载服务器目录到电脑进行预览下载等。
注意:此文章图片链接来自github,如果无法加载图片请访问个人博客:workflow:基于syncthing+oss+云服务器的文件同步与数据备份教程 - Mr. Hu
需求
[*] 数据安全,最重要的一个需求
[*] 备份容量,目前需求100G左右
[*] 价格不贵,百度云vip188/年,以他为尺度,浮动100左右
[*] 下载速率快,最起码别是100多kb/s
[*] 可预览,可以线上看看图片、视频什么的
[*] 多端同步:最起码要可以把手机和电脑数据同步起来,最起码要有版本控制,以及多种同步类型
[*] 自动备份:要能自动备份多个不同的文件夹,比如图片、文档什么的
思路
[*] Syncthing 是多端同步的工具,其功能雷同于微力同步,但是开源,他是P2P的,这样就要求两个设备必须同时在线。
[*] 使用云服务器搭建Syncthing作为中转和备份服务器,这样就可以只一个设备在线,因为云服务器是不停机的
[*] 如果是必要常常同步的我选择直接存在服务器的云盘里
[*] 如果是备份,我在云服务器里挂载OSS为目录,通过内网访问OSS,这样就没有流量费用
[*] 使用alist挂载云服务器本地目录+rclone挂载Alist到电脑进行预览(可选)
展示
页面展示
Syncthing - 服务器
https://i-blog.csdnimg.cn/blog_migrate/e48a53d4a7f5717f64c56b5d8fc10073.png
https://i-blog.csdnimg.cn/direct/60979ab46b9f4ea9a9cc138c2a399e04.gif
Syncthing - 电脑
https://i-blog.csdnimg.cn/blog_migrate/16290332c7bcc70ae10332fac1130a3e.png
Syncthing - 安卓
https://i-blog.csdnimg.cn/blog_migrate/4a4df03f42e054f50578bf65ddeabc62.jpeg
https://i-blog.csdnimg.cn/direct/2844d5dbc0254b5cbaeb0b04aae74a69.gif
alist-网页
https://i-blog.csdnimg.cn/blog_migrate/b6cf33cf9aa3122c0347035bf061d67f.png
https://i-blog.csdnimg.cn/direct/f8c3029b4a9f4f83ab20d90ae2379848.gif
rclone-本地挂载alist
https://i-blog.csdnimg.cn/blog_migrate/d47bd54b045e5412e8b895944224169f.png
https://i-blog.csdnimg.cn/direct/abad6cac8a0e4ee696547edcf16c0ef1.gif
效果展示
服务器带宽 30M ,同步和备份时速率可继承,内存占用如下
https://i-blog.csdnimg.cn/blog_migrate/f8be8902b94ecf4a4c65215e1ab5c70f.png
https://i-blog.csdnimg.cn/direct/16a6607246de4e60aac61189f7ca4947.gif
[*] 存储容量:云盘自带40G+OSS的40G = 80G
[*] 电脑开机自启:rclone、Syncthing,完全无感
[*] 手机可以后台常驻运行Syncthing,记得开启允许后台高耗电,以及设置息屏联网,实现无感同步。
优点
[*] 可以无感备份与同步任何文件!
[*] 速率取决于你的服务器,无穷速问题
[*] 数据很安全,用的都是开源项目,数据放在阿里云的服务器和OSS里,如果还不放心可以增长容灾设计
[*] 可玩性较高,险些完全满足需求!
[*] 手机可以常驻后台备份!
缺点
[*] 折腾起来比较贫困
[*] 手机常驻后台会增长发热问题
[*] syncthing 同步和冲突处理没有那么细的粒度
拓展
[*] 偶然间可以整一个一键脚本,直接摆设
[*] 香港服务器都有了,顺便整点邪术
[*] 整一个服务器监控看板
[*] 把UI面版都整上Https
[*] 如果想可以设计docker进行摆设,必要注意容器编排和目录映射问题
预备好了吗!发车!
[*] 核心:Syncthing
[*] 必要:云服务器,OSS对象存储,电脑,手机
[*] 数据安全:数据为本地存储,云端则为阿里云服务器+OSS,次方案使用的项目均为开源项目
[*] 我的配置:阿里云香港轻量服务器(debian11),9元一年OSS尺度存储资源包,Win10条记本,安卓手机
[*] 实际花费:阿里云香港轻量服务器 288/年
[*] 发起选择带宽较大的轻量服务器,大可以选择本身以为便宜和稳固的,注意:服务器和oss存在地域问题!选同一个地域的,否则要nginx代理。
实操
安装Syncthing
服务器
# 使用 `curl` 下载 GPG 密钥,然后使用 `apt-key` 导入密钥。
sudo apt-get install curl
curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
# 添加官方 deb 存储库。
echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
# 安装`apt-transport-https`软件包
sudo apt-get install apt-transport-https
# 更新本地软件包索引并在 Debian 上安装syncthing。
sudo apt-get update
sudo apt-get install syncthing
# 使用 Systemd 将 Syncthing 设置为系统服务 替换username为自己的账户名称
sudo systemctl enable syncthing@username.service
# 修改`/home/username/.config/syncthing/config.xml`中的`gui`标签,把`127.0.0.1`改成`0.0.0.0`,开启远程访问
# 如果你的usernam为root,那么config.xml在/root/.local/state/syncthing
vim /root/.local/state/syncthing/config.xml
# 启动syncthing服务
systemctl restart syncthing@username.service
# 设置开机启动
systemctl enable syncthing@username.service
# 检查状态
systemctl status syncthing@username.service
# 在阿里云控制台放通8384端口,访问`http://host_ip:8384`,就可以看到面版了 PC
访问:Github下载windows版本的Syncthing,直接运行即可
开机自启,后台运行:
[*] 创建bat文件写入
start "Syncthing" syncthing.exe -no-console -no-browser
[*] 创建快捷方式后,Win+R 输入 shell:startup,把快捷方式拖进去
Android
访问:Github下载android版本的Syncthing,直接运行即可,给足权限,让他常驻后台
服务器挂载OSS
oss的创建与配置
资源包购买:阿里云登录 - 欢迎登录阿里云,安全稳固的云计算服务平台
bucket创建:阿里云登录 - 欢迎登录阿里云,安全稳固的云计算服务平台
[*] 名称随意
[*] 地域选择和本身服务器相同的地方
[*] 私有读写即可,因为我们是通过服务器出的公网流量,服务器和oss之间的访问用内网就行了,免费且高速,缺点是oss的访问速率全看服务器的带宽了。
示例: ECS地域
https://i-blog.csdnimg.cn/blog_migrate/6aa0d6c6cb0f7af8cdd5b11b6a30dab8.png
OSS地域
https://i-blog.csdnimg.cn/blog_migrate/7019f9c020d550fdd1431e876ad7a08c.png
挂载OSS到ECS
# 更新索引
sudo apt-get -y update
# 安装ossfs
sudo apt-get install automake autotools-dev g++ git libcurl4-gnutls-dev \
libfuse-dev libssl-dev libxml2-dev make pkg-config
# 克隆编译代码
git clone https://github.com/aliyun/ossfs.git
cd ossfs
./autogen.sh
./configure
make
sudo make install
# 配置全局密钥,输入OSS对应的key和secret,不知道怎么获取看这个:
# https://blog.csdn.net/weixin_45606067/article/details/114292972
# my-access-key-id 你的key
# my-access-key-secret 你的secret
echo my-access-key-id:my-access-key-secret > /etc/passwd-ossfs
chmod 600 /etc/passwd-ossfs
# 挂载oss目录
# my-bucket是你的bucket名称
# /path/to/mountpoint是你挂载到的服务器上的目录
# my-oss-endpoint是你oss的访问域
ossfs my-bucket /path/to/mountpoint -ourl=my-oss-endpoint
# 查看挂载情况(可选)
df | grep ossfs
# 详细情况(可选)
# /root/Data/OSS 是挂载的路径
df -hT/root/Data/OSS
# 删除挂载点(可选)
sudo umount /root/Data/OSS 安装alist(可选)
服务器摆设alist
# 默认安装在 `/opt/alist` 中。
# 自定义安装路径,将安装路径作为第二个参数添加,必须是绝对路径(如果路径以 alist 结尾,则直接安装到给定路径,否则会安装在给定路径 alist 目录下)
# 如 安装到 `/root`
curl -fsSL "https://alist.nn.ci/v3.sh" | bash -s install /root
# 启动
systemctl start alist
# 状态
systemctl status alist
# 重启
systemctl restart alist
# 手动设置一个密码,`NEW_PASSWORD`是指你需要设置的密码
./alist admin set NEW_PASSWORD alist挂载服务器目录
[*] 选择本机存储
[*] 发起挂载OSS地点路径,比如 /root/Data/OSS
[*] 也可以挂载本身服务器备份数据的地方,怎么方便怎么来
https://i-blog.csdnimg.cn/blog_migrate/6bb631a8adbc623bf6fbda4b8d197121.png
https://i-blog.csdnimg.cn/direct/465ecef54cdd4a26a38e9eed3d4da4da.gif编辑
rclone挂载alist到电脑
下载:rclone和winfsp
配置:
[*] 把含有exe文件的目录添加到体系情况变量
[*] 打开cmd运行窗口使用指令
rclone config 修改配置
[*] 填写alist登录账号
[*] 选择webdav
[*] 选择其他
[*] 输入挂载到本地的名称
[*] 用户名称就输alist账号
[*] 输入y填写并确认alist暗码
[*] 按3下enter并输入q退出
开机自动挂载:
[*] 新建bat,输入以下内容,再双击查察是否乐成运行
# 第一个alist是之前设置的挂载到本地的名称
# alist:/ 表示挂载根目录
# D:/alist 本地的哪个路径
@echo off
rclone mount alist:/ D:/alist --vfs-cache-mode full --use-mmap --allow-other --no-check-certificate --no-gzip-encoding --copy-links
[*] 创建任务计划,通过在Windows搜刮框中输入"任务计划程序"找到并打开,创建根本任务,触发器选 计算机启动时,选择 启动程序 后路径选择刚刚创建的bat文件,完成创建
[*] 右键点击该任务,选择“属性”,在“常规”选项卡中,勾选“使用最高权限运行”,在“操作”选项卡中,点击“编辑”(Edit)在“编辑操作”窗口中,在bat路径前添加cmd.exe /c,并在“添加参数”中输入/c start "" /b "C:\path\to\your\mount_alist.bat"。
这样就可以开机后,rclone在后台无感运行了
配置Syncthing
搭建发现服务器
先通过发现服务器 (Discosrv)发现和索引用户,当用户设备接入发现服务器后,服务器会进行设备的毗连通告,当设备之间同意毗连后进行毗连;两台设备建立毗连后,数据必要通过 NAT 穿透的方式实现交换。
# 仓库在:https://github.com/syncthing/discosrv/releases,想用新的直接换新链接就行
wget https://github.com/syncthing/discosrv/releases/download/v1.23.4/stdiscosrv-linux-amd64-v1.23.4.tar.gz
# 解压
tar -xzvfstdiscosrv-linux-amd64-v1.23.4.tar.gz
# 运行
# 官方文档:https://docs.syncthing.net/users/stdiscosrv.html
./stdiscosrv
# 后台运行
nohup ./stdiscosrv &
# 使用jobs查看运行情况
jobs 搭建中继节点
如果 NAT 穿透不乐成,就必要中继 (Relaysrv)服务器传输数据,假如电脑要和手机进行条记同步,通信过程就是:电脑-中继-手机,固然Syncthing自带有公共网络服务,但是此文章使用云服务器就是为了搭建一个中继的通信过程
# 仓库在:https://github.com/syncthing/discosrv/releases,想用新的直接换新链接就行
wget https://github.com/syncthing/relaysrv/releases/download/v1.22.1/strelaysrv-linux-amd64-v1.22.1.tar.gz
# 解压
tar -xzvfstrelaysrv-linux-amd64-v1.22.1.tar.gz
# 运行
# https://docs.syncthing.net/users/strelaysrv.html
# pools为空是不加入公共中继节点,部署为私有
./strelaysrv -pools=""
# 后台运行
nohup ./strelaysrv -pools=""&
# 使用jobs查看运行情况
jobs
需要去配置,记得给电脑、服务器、手机都配置一下,协议监听地址对应中继节点地址,全局发现服务器和全局发现的地址。
# 协议监听地址,中继服务URI
relay://公网IP:22067?id=中继服务器device ID
# 全局发现服务器
https://公网IP:8443/?id=发现服务器device ID
https://i-blog.csdnimg.cn/blog_migrate/02ac91040c05ae71f683ec247c1e523a.png
https://i-blog.csdnimg.cn/direct/bec6b83fab304bffaa7dd47916c7e21f.gif编辑
配置阐明
举个例子:文件夹路径是本地计算机的路径,比如我们如今必要电脑同步到服务器,那么过程就是
[*] 打开电脑上的 syncthing http://127.0.0.1:8384/,添加文件夹,路径选择本身电脑本地的要上传的文件路径,如:D:\My\Notes,在共享里选择服务器上的 syncthing
[*] 打开服务器上的 syncthing ,你会看到发过来的共享哀求,那么在继承后的配置内里,选择你必要保存在服务器上的地址,比如挂载后的OSS地址大概服务器的其他地方
如今如果你必要再同步给手机,那么就选择服务器上电脑发过来的共享文件夹,同样的点击共享就可以分享得手机
地址
[*] ossfs
[*] relaysrv
[*] discosrv
[*] syncthing
[*] syncthing-android
[*] alist
[*] rclone
[*] winfsp
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]