总体思路
使用Tailscale在设备之间进行内网穿透,使其在公网可以互相访问,而后配合使用FreeFileSync 实现文件共享。
前置条件
- 打开FTP服务
- 下载FreeFileSync,教程:FreeFileSync安装使用教程
-
需要同步的设备都需要下载安装Tailscale应用
关于tailscale:同一个账号的所有设备是可以互相访问的,但是别人分享的设备只能由被分享者单方向访问到分享的设备。例如:
此时,A的三台设备都可以去访问到B的设备1,但是B设备都不能访问到A的任意一台设备
在此基础之上,如果A共享其设备1给B账户,那么B的所有设备都能访问到A设备1,且A的设备1与B的设备1是可以双向访问的。
1.搭建FTP服务
1. 选择需要的文件夹(Tips:如果文件夹是某一个特定用户A下的文件夹,则后续访问用户只能为文件夹的所有者A)
2. 绑定的IP填写为0.0.0.0
3. 身份验证及授权,一般选匿名、所有用户访问,而后确认
4. 此时在开启FTP服务的机器的文件资源管理器中输入ftp://127.0.0.1/,回车后,正常会显示登录页面,根据上一步的设置进行登录。成功后会显示相应文件
2.登录Tailscale连接设备访问FTP服务文件夹
Tailscale分为两种情况:1)Tailscale账号中没有别人分享的设备;2)Tailscale账号中有别人分享的设备
1. 如果Tailscale账号中没有别人分享的设备,如下图
此时可以通过输入Tailscale提供的ip来访问(不需要在同一个局域网),假设是A设备1开启的FTP服务,则在A设备2、3上可以访问 ftp://100.88.132.55/来访问A设备1的文件夹
2. 如果Tailscale账号中有别人分享的设备
假如B设备1分享给A账户,
1)此时如果FTP服务启动在B设备1上,那么,A的所有设备都可以通过访问 ftp://100.118.56.11/来访问B设备1的文件夹
2)此时如果FTP服务启动在A设备1上,A的所有设备都可以通过访问 ftp://100.88.132.55/来访问A设备1的文件夹,而B设备1不可访问A设备1
(解决方法是:将A设备1分享给B账户,
分享后,B设备1可通过ftp;//100.88.132.55/来访问A设备1的文件夹)
3.使用FreeFileSync实现文件同步
假如需要在A设备1与B设备1实现文件同步,且A设备1启动FTP服务,A设备1与B设备1已经在Tailscale中双向共享。那么操作如下:
1.假设在B设置1中打开FreeFileSync,而后左侧填入A设备1的ip:100.88.132.55,端口默认21,其余遵循FTP服务器的设定
2.右侧选择B设备1中需要同步的文件夹
3.选择需要的同步策略
4.确定同步策略后,将其另存为脚本
这里存为 BisSync.ffs_batch。
由于RealTimeSync不支持ftp进行同步,这里需要新建一个批处理文件来处理刚刚保存的脚本。可参考以下链接:工具分享之文件同步工具FreeFileSync(2) - 知乎 (zhihu.com)
5.新建ftp_Sync.bat文件,内容如下:
@echo off
echo.
:: 注释内容——设置默认的文件同步时间间隔,5秒
set file_interval=5
:: 注释内容——统计文件同步的次数
set File_Sync_Sum_Num=0
echo *默认文件同步的时间间隔是5秒,选择默认值可直接点击“回车键”
echo.
echo *自定义文件同步的时间间隔,输入大于等于1的整数,然后点击“回车键”
echo.
set /p file_interval= *自定义文件同步的时间间隔(单位:秒):
echo.
:onme0
:: 注释内容——C:\Program Files\FreeFileSync\FreeFileSync.exe是程序安装的目录
:: 注释内容——C:\Users\xxx\Desktop\BisSync.ffs_batch是作业脚本的目录
start "FreeFileSync" "C:\Program Files\FreeFileSync\FreeFileSync.exe" C:\Users\xxx\Desktop\BisSync.ffs_batch
set /a File_Sync_Sum_Num=File_Sync_Sum_Num+1
echo 执行文件同步地第%File_Sync_Sum_Num%次的时刻:%DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2% %TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2%
TIMEOUT /T %file_interval% /NOBREAK >nul
goto onme0
6.保存后,运行ftp_Sync.abt查看是否正常运行,如果正常运行会有以下页面
而后在A设备1的文件夹下新建一个test.txt文件,五秒后在B设备1中的文件test.txt也存在
打开A设备1的test.txt与B设备1的test.txt,在A设备1的test.txt输入任意文字,保存后
重新打开 B设备1的test.txt,如果test.txt内容与A设备1一致,则配置成功。
关闭刚刚的bat脚本
4.使用nssm最小化运行自动同步脚本
由于刚刚的bat批处理文件容易被删除和关闭,所以可以将其最小化一下
下载nssm,官网地址:https://nssm.cc/download
1.更改以上ftp_Sync.bat文件如下:(去除提示性代码,自己修改设置同步时间间隔)
@echo off
echo.
:: 注释内容——设置默认的文件同步时间间隔,60秒
set file_interval=60
:onme0
:: 注释内容——C:\Program Files\FreeFileSync\FreeFileSync.exe是程序安装的目录
:: 注释内容——C:\Users\xxx\Desktop\BisSync.ffs_batch是作业脚本的目录
start "FreeFileSync" "C:\Program Files\FreeFileSync\FreeFileSync.exe" C:\Users\xxx\Desktop\BisSync.ffs_batch
TIMEOUT /T %file_interval% /NOBREAK >nul
goto onme0
2.定位到nssm.exe文件所在的文件夹下,而后右键调出cmd,输入nssm install,会弹出nssm服务安装界面,选择刚刚的bat脚本,输入服务名:aotuSyncService,而后点击install service
3.搜索“服务” ,点击aotuSyncService,而后启动即可