LocalSend:局域网文件传输利器

序言

最近准备重装笔记本的系统,因此要备份文件,存到台式机里。我将要备份的文件夹压缩,通过 Windows 自带的文件夹共享(局域网共享),传输这些压缩包。

但是,传输过程却非常艰难。有的压缩包有 10 几个 GB,传了一分钟,网速就没了,之后就开始报超时之类的错误。更离谱的是,有个压缩包在两台电脑上摘要算法的结果不同。

显然,windows SMB 协议既不能保证速度,也不能保证数据正确性,于是我开始寻找更加好用的局域网传输软件。它,就是本文的主角 —— LocalSend

LocalSend 介绍

LocalSend 是一个跨平台的局域网传输软件,支持 Windows, Linux, macOS, Android 和 IOS. 这是它的官网;这是它的 GitHub 仓库

作者设计了一个基于 HTTP 的传输协议,在这里

LocalSend 基本上是开箱即用,没必要专门写一节 quickstart

但是,由于 Windows 防火墙的默认配置,第一次使用该软件时,同局域网内的设备可能无法发现这台 Windows 设备。下面,我将给出解决方案。

防火墙配置

我的方案

  1. 将家庭 WIFI 设置为专用网络(不建议在公共网络使用局域网传输文件,无论软件作者做了怎样的加密,我都认为是不安全的。因此,这里不讨论公用网络的情况)image-20230904212558782

  2. 进入『配置防火墙和安全设置』

    image-20230904212718315

  3. 『允许应用通过防火墙』——『更改配置』。找到 localsend_app(其他以localsend开头的也可以这样做),将它之前那的单选框选上。以防万一,确保之后的两个单选框也是选上的(应该是默认开启的)。然后点击『确定』

    image-20230904212911221

  4. 重启 LocalSend,等待找到目标主机

网上的方案(未验证)

这里也给出网上其他人的解决方法,虽然我觉得全局操作防火墙很不安全

  1. 打开『Windows Defender 防火墙』

    image-20230904213446263

  2. 『高级设置』——『Windows 防火墙属性』。在『专用配置文件』一栏,将『入站连接』改为『允许』,然后『应用』

    image-20230904213728952

  3. 重启 LocalSend,查看能否找到目标主机。如果不行,再将上述『公用配置文件』一栏的『入站连接』改为『允许』,然后『应用』,再次重启 LocalSend 并检验。

文件传输校验

在网络传输文件后,通常要使用摘要算法(MD5、SHA1、SHA256等)对比两份文件是否一致,防止由于网络导致的数据丢失。很多现成的工具提供这样的服务,这里我介绍 3 个。

7-zip

7-zip 虽然是一个开源的压缩软件,但也提供摘要函数。

右键选中要摘要的文件,点击『CRC SHA』,选择摘要算法

image-20230904214607556

如果右键菜单没有该选项,在 7-zip 中配置即可:

image-20230904214947662

openssl

Linux 大多数发行版都会自带的工具。也可以在 git bash 中使用这个命令。语法是:

1
openssl 摘要算法名 文件路径

例子:

1
2
3
Gustav@PC MINGW64 ~/Desktop
$ openssl sha256 generate-random-file.cmd
SHA256(generate-random-file.cmd)= 03f9454e4ee7923d08aefa4957282b62a655e7231ea6f4bdd6cdcc4e9a4c1bd9

Certutil

Windows 上的一个用来提供证书服务的工具,也提供了一些摘要算法。语法是:

1
certutil -hashfile 文件路径 摘要算法名

例子:

1
2
3
4
PS C:\Users\Gustav\Desktop> certutil -hashfile .\generate-random-file.cmd sha256
SHA256 的 .\generate-random-file.cmd 哈希:
03f9454e4ee7923d08aefa4957282b62a655e7231ea6f4bdd6cdcc4e9a4c1bd9
CertUtil: -hashfile 命令成功完成。

总结

在本文中,我介绍了一款开源好用的局域网传输工具 —— LocalSend。之后,我又给出了 Windows 系统中如何配置防火墙,使得其他设备能发现当前的设备。最后,我介绍了一些常见的对文件进行摘要的工具:从网络下载的文件,理论上都要进行一遍校验,防止数据损坏或丢失。