生活中碰到需要跨设备传输文件并且尽可能要快的情况时,用 NAS 来应付有些杀鸡用牛刀,各个品牌生态内的互传工具听上去不错,但现实情况却是
不过办法总比困难多,在系统自带的快速传输功能之外,我们其实还有非常多优秀的独立工具可供选择。本文从少数派以往挑选过的数种文件传输工具中,挑选了一些简洁易用、适应性广并且依然具备可用性的本地传输工具,希望能够在你需要的时候帮到你。
关联阅读:英特尔出了个软件,让你的 Windows 也能与 iPhone「无缝」连接
AirDrop 或许是苹果推出过的最有名的软件服务了,从 2011 年开始,这个在苹果生态圈内随处可用的高速分享功能已经成为了相关产品中的标杆。而 Android 则是到了 2020 年才将之前因为必须依托 NFC 硬件使用而遇冷的 Android Beam 进行修改和整合,推出了 Nearby Share 功能,并且由于谷歌在桌面市场的先天劣势,Nearby Share 至今还是没能打通移动到桌面端的传输。
于是,各种第三方的传输方案纷纷涌现出来,光怪陆离。这其中就包括了 SnapDrop ——一款极致还原了 AirDrop 的界面与使用体验的网页版局域网传输方案。
如 SnapDrop 的界面所见,它与访达中的 AirDrop 页面不能说一模一样,只能说完全一致:
得益于 SnapDrop 的传输原理,它可以在任何支持WebRTCAPI 的浏览器上使用——这就包括了目前所有 Chromium 内核的浏览器,以及 Safari 。
SnapDrop 会自动为局域网内登录了网页的设备分配一个由颜色和动物组成的代号,点选对应的设备之后就可以选择你想要发送的文件了,过程体验也与 AirDrop 别无二致。
不过,SnapDrop 虽然在体验上做到了比肩甚至超越了 AirDrop(毕竟这两代 macOS 中 AirDrop 窗口卡死的时候是真的不少),也可以用来直接发送一些纯文本的短消息,但是受到 API 与传输协议的限制,它对于大体积文件的传输速度相比 AirDrop 还是稍微逊色一些。
而且 SnapDrop 单次只能传输单个文件(即使选择多个文件也是依次传输),无法按文件夹发送,因此如果你想用 SnapDrop 来同步音乐资料库之类的话就会变得比较麻烦。
但是话说回来,即使仅仅用来作为跨平台的零碎文件传输,SnapDrop 的体验和兼容性都可以称得上是第一梯队,你甚至可以将网页保存成 PWA 来固定使用它。
唯一需要注意的是,由于 WebRTC 的定义,SnapDrop 其实并不是彻底的本地传输——它虽然是用局域网来传送文件,但是各个设备的广播、寻找和标签识别则是需要通过一立的 Signaling 服务器实现,个中细节可以参考少数派的这篇文章 。
事出有因,开发者Tien Do Nam之前也是一个 SnapDrop 用户,但是在碰上了 SnapDrop 由于 Signaling 服务器宕机导致设备之间不能互相识别之后,他就开始考虑基于 SnapDrop 的开源框架做一款纯局域网的文件传输工具,LocalSend 由此诞生。
macOS 版的程序界面,可以看出 LocalSend 的交互主要还是基于 Android 的设计规范开发的
在使用逻辑上,与 SnapDrop 先选择设备再选择文件相反,LocalSend 使用的是「发件箱」的逻辑,你需要先在程序内的发送区选择好想要传输的文件,再点击要发送的设备开始上传。
如果你一直将 LocalSend 挂在后台使用的话,这个发件箱是需要你来手动管理的,或者在退出程序后清空。
并且与 SnapDrop 的限制一样,LocalSend 目前也不支持传输文件夹,想要大批量传输文件的话还是得先把文件压缩到一起。
由于同样是基于本地网络传输,LocalSend 的传输速度会在相当程度上受到你使用的网络规格的影响,比如在尝试将一部大约 4GB 的电影发送到手机上时,回报的平均速度在 13~15MB/s 左右,传输完成用了大约 5 分钟——在 5Ghz Wi-Fi 下并不算理想,但用来传输照片或者文档的话是绰绰有余了。
如果你下载了 AirDroid 客户端,或者使用它的网页版入口的话,你会吃惊于「文件传输」只占了页面中多么小的一块区域——比起在电脑和移动设备之间互传文件,AirDroid 主打的其实是全套的「无线控制」业务,你几乎可以通过它来控制局域网内安装了 AirDroid 客户端的 Android 设备的全部功能。
左侧的功能列表之丰富,几乎可以看作是给所有 Android 设备的三星 DeX
而如果只将 AirDroid 作为局域网内的文件传输工具的效果如何呢?取决于你使用的是网页版还是 app ,用 AirDroid 来传文件的评价可以是从「还不错」到「不太行」区间内的任何一种。
首先,如果你使用网页版远程连接来传文件的话,虽然你可以访问 Android 设备中的所有文件路径,但是单次传输的文件大小被限制在了 30MB,即使付费成为高级帐户也只能传输不超过 100MB 的文件。
但如果你愿意在电脑上下载客户端,并且只用它来传输文件的话,那么 AirDroid 的体验其实还不错。虽然在不注册不登录的情况下你只能通过局域网无线连接的方式来传输,但是速度至少可以跑满局域网的带宽,并且没有任何的文件体积限制。
相比上面 AirDroid 功能的玲琅满目,名字十分甚至九分相似的 MacDroid 则单纯很多,它的功能只有一个:在 macOS 上把 Android 设备识别为移动硬盘, 从而进行文件管理和传输。
启动 MacDroid 后,它会提示你可以通过两种方式连接 Android 设备。要么通过开启安卓调试桥(ADB)、让它通过 shell 指令访问机内文件,要么将 Android 设备的连接模式改为「传输文件」、以 MTP 的格式读取设备。
无论选择哪种方式连接后,MacDroid 都会将已连接的设备直接显示在访达的侧边栏中,进行文件管理的方式和使用移动硬盘别无二致:
并且 MacDroid 可以同时挂载多台设备,你可以直接将 Mac 作为中继直接在两台 Android 设备之间通过数据线进行文件传输。
尽管 MacDroid 在不付费的时候只允许你以「只读」的方式挂载设备,虽然无法向里面写入任何东西,但你其实是可以从里面向电脑里拷贝数据的。
作为一款单纯可以为 macOS 提供识别 MTP 协议的「挂载器」来说,MacDroid 每年 19.99 美元的订阅费还是有些让人心痛的。而如果你不想花这笔钱的话,谷歌其实很早就已经有了一个本家的解决方案——这个长得有些「毛坯房」的窗口就是Android File Transfer的主界面:
Android File Transfer 的文件管理窗口不像 MacDroid 那样无感,也不支持在 Mac 上对 Android 设备里面的文件进行复制黏贴和剪切之类的移动操作。换句话说,除了把文件复制进去或者复制出来之外,它能做的就只剩下创建文件夹、重命名和删除文件了。
不过对于简单的文件传输和数据同步,上述的功能其实也已经足够, 在传输文件的过程中也可以轻松跑满接口或者是数据线的最大带宽。再加上 Android File Transfer 和 ADB 两者都可以算是来自谷歌的官方传输方案,并且都是彻底的离线工具,其可靠程度是毋庸置疑的。
你或许还记得,春节前的少数派首页文章中就出现过 Tailscale 这个名字。Tailscale 是一个基于软件定义广域网(software-defined wide area network, SD-WAN)技术提供远程的内网访问的工具,可以部署在各种平台、甚至是你的 NAS 上。
在内网访问功能之外,Tailscale 也提供了一个跨平台的内网文件传输服务 TailDrop 。想要使用 TailDrop 的话,你需要首先在所有设备上都安装 Tailscale 的 app 并且登陆,在登录账号的过程中 TailScale 就会询问你是否要将当前设备连接到你的账号:
添加设备完成后,你就可以在这些设备之间使用 TailDrop 功能相互传输文件了。与其他共享软件往往使用一个独立的页面作为交互区域不同,TailDrop 会以系统自带的分享选项出现,只需要打开需要传输的文件、在分享菜单中选择 Tailscale、再选择目标设备即可。
虽然 Tailscale 与系统的整合度极高,分享的过程也是最符合「设备原生」的体验,但是它在单纯的文件传输方面仍然有一些细枝末节做得不太好。
比如 Tailscale 的 macOS 客户端在接收文件时是不会有任何通知提醒的,它只会悄无声息的把接收到的文件保存到设备的下载目录,至于文件发送成功与否全都要在发送文件的设备上查看。
不过得益于 Tailscale 所基于的 SD-WAN 协议和「免确认传输」的特点,如果你需要在出门在外的同时向局域网内的设备传输文件(比如旅游的时候实时向家里的电脑同步照片)的话,Tailscale 将会是一个可行的方案,或者直接在两台不在同一局域网内的设备(比如同时在使用流量的两台手机)之间传输文件:
除了在开头提到的自己同步照片的场景之外,「本地文件传输」中其实还包含了另一类场景:一位朋友来家中做客,如何在不使用即时通讯软件的前提下向他发送一些自己拍摄的照片和视频?
诚然,前面提到的 SnapDrop 可以很好的解决这个问题,但是它所必须的 Signaling 服务器的稳定性却参差不齐,局域网内「优势在我」的 LocalSend 又需要先下载软件才能使用。这种时候,支持 P2P 链接分享文件的老牌文件传输工具 SendAnywhere 就可以派上用场了。
虽然 SendAnywhere 目前有自己的账号系统和付费功能,也在各大平台上提供了 app ,但对于频率不高的小规模文件传输来说它的 网页版 其实就已经足够(只不过在手机上你还是需要强制请求桌面版网站才能发送或者接收)。尽管 SendAnywhere 的页面布局看起来有些松散,它的功能区实际上划分的很明确:发送文件,或者接受文件。
选择想要分享的文件后,你就可以选择分享方式了——而这也是 SendAnywhere 的独门绝技:如果想要在局域网内传输的话,你可以选择使用「直接分享」。此时,SendAnywhere 会生成一个 10 分钟内有效的 6 位数字密钥,你只需要在接收端输入密钥就可以实现内网传输,速度只取决于家里的网络规格。
而如果你注册了 SendAnywhere 账号的话,就可以使用「链接分享」了,此时 SendAnywhere 则会将文件分散上传到 P2P 网络中,并且生成一个分享链接。48 小时的文件有效期内,你可以在任何地方用任何网络来下载这个链接所指向的文件,此时的传输速度取决于接受者的网络状况和 P2P 节点的分布情况。
在仅仅注册、不支付任何费用的前提下,每个账号可以最高上传 10GB 的待下载文件。而这样的传输模式也就意味着 SendAnywhere 的运营是有着不小的服务器开支的,因此在它的使用过程中会有广告的存在——但是数量非常克制,绝没有到影响使用心情的程度——你可以选择支付 5 美元关闭广告,顺便支持一下运营团队。
长久以来,各个品牌各个平台在文件传输这件事上的「分而治之」已经给我们的使用带来了数不胜数的烦恼,甚至反过来逼迫我们将原本只是用来聊天通讯的社交软件当成了传输文件的终极手段。
这样能用吗?能用,但也真的不好用。第三方软件市场中拥有无数的开源解决方案,其中不乏类似 LocalSend 这样的优秀选手。虽然在文件的远程、异地传输上我们仍然需要借助各类云盘或者 P2P 方案来解决,但是至少从桌前的本地传输开始,我们可以真正的「不将就」一次,让专门的软件来做专业的事。