不同电子设备之间传输文件的方案

1 序言

我日常使用的操作系统包括 windows, mac, iOS, Android,这些操作系统支持的网络文件共享协议以及文件系统各有差异。 并且我需要在平板上在线观看电脑上的视频,iOS Android 系统上的播放器对不同的传输协议的支持也各有不同。 原来使用 windows 文件共享在局域网共享文件,移动硬盘拷贝文件已经没法满足需求了。我整理了下各种常见的文件传输协议以及软件,针对不同场景给出了最优的方案。

2 结论

如果不想阅读各种技术的详细解析,直接看针对不同场景的最优选择就行了。 

2.1 传输单个文件(push模型)

微信,企业微信,AirDrop(只支持 mac + iOS)

2.2 备份数据

建议用移动硬盘备份数据。   如果需要保留多个历史版本:使用 windows 自带的"文件历史记录"。 如果不需要保留历史版本:使用 FreeFileSync。   如果备份的数据想要加密:建议直接用 BitLocker 把整个移动硬盘加密了。不要使用备份软件提供的加密功能。 注意 BitLocker 只有专业版和企业版的 windows 才能用,家庭版没有这个功能。

2.3 windows 和 macOS 之间共享文件(poll模型)

不管是给别人的电脑共享文件,还是自己的电脑之间共享文件,都可以用下面的方案。 SMB 和 sftp 都使用操作系统的用户,所以只要给自己和别人分别创建一个读取共享文件用的用户,然后分别授予不同的文件访问权限就行了。

2.3.1 ⭐️ 推荐: SMB

SMB: Server Message Block,也就是 windows 自带的文件共享。macOS 下面的实现叫做 samba。 windows 和 macOS 都内置的这个软件,不用安装什么。

2.3.2  备用: sftp

如果遇到 macOS samba 和 windows 的 smb 不兼容的情况,选择 sftp 方案。   windows client 端: Bitvise SSH Client 图形界面,支持高分屏。   windows server 端:  bitvise ssh server 图形界面配置,非常好用   mac client 端:  Cyberduck 免费,图形界面软件,完美支持高分屏。   mac server 端: 系统自带的 sftp 服务器功能。 不过需要注意这个会把磁盘上的所有文件都共享出去,不安全。需要自己修改配置文件来限制共享的目录。

2.4 windows 共享视频给平板和手机看(poll模型)

还是使用 SMB,也就是 windows 自带的文件共享。   windows: 使用系统自带的共享功能。   iOS: nplayer   Android: Cx File Explorer 打开视频文件,在弹出的菜单中选择用 mx player 播放。

2.5 不同的设备之间做文件的镜像或者双向同步

如果不需要增量网络同步: (1) FreeFileSync + smb 网络驱动器 (2) FreeFileSync + sftp 服务器   如果需要增量网络同步: (1) Unison File Synchronizer

3 完整方案一览

按照工作模型区分: (1) push模型 发送者决定接收者能获取哪些数据,并且手动发送文件给接收者。 (2) poll模型 发送者开启文件共享,接收者自行决定从发送者获取哪些数据。

 

按照目的区分:

 

(1) 手动拷贝数据

(2) 备份 备份的数据需要能回到一个历史版本,所以需要做版本管理。因此比手动拷贝数据复杂很多,一般需要借助一些软件来实现。 (3) 镜像 把A电脑的数据拷贝到B电脑,丢弃B电脑的修改。 镜像也可以叫做单向同步。 (4) 同步 A和B电脑都有数据修改,需要保留两边的修改。   按照传输介质区分: (1) 使用 TCP/IP 网络 (2) 存储介质直连   下面不好用,不稳定,跨平台太差的方案,用删除线标记。

4 工作模型

4.1 poll模型 - 通用文件传输协议

(1) Server Message Block(windows自带的文件共享) 如果可能的话,就用这个协议。windows对它的支持是完美的,特别好用。 (2) sftp 没有smb的话,就用这个好了,也挺好用的。 (3) http 这个没有标准的展示目录,文件属性的方法。不过对于流媒体文件共享来说,非常够用了。mx player 老版本只支持 http 协议的网络串流。 (4) apple filing protocol 这个是苹果私有的协议,而且好像苹果自己都不用了。 (5) nfs 只有 unix 操作系统原生支持。macOS 的开发者文档中说这个协议是不安全的。 (6) webdav 这个协议和它的实现有一堆的坑,一般情况下使用 sftp 是更好的选择。  

下面简单介绍下不同协议常用的软件

4.1.1 Server Message Block

Android 2021-05-06 推荐使用的 Android smb 软件(我自己试过了):
  1. Cx File Explorer     界面还不错,对 smb 支持也挺完美的。
  2021-05-06 不推荐使用的 Android smb 软件(我自己测试过)
  1. ES 文件浏览器。        没法正常浏览 win10 smb 共享出来的文件,直接打不开。广告超级多,而且是那种弹出式的广告。有很多没有用的垃圾功能,软件非常臃肿。有常驻后台的垃圾服务。有垃圾通知。
  2. mx player pro 1.35.8    印象中拖动一部分视频文件的时候,会有卡顿的问题。而且只使用这个软件的时候,没法加载字幕。
  2021-05-06 不推荐使用的 Android smb 软件(没测试过)
  1. X-plore File Manager        看 google play 上软件界面的截图,还是 Android 4.0 的界面风格。
  参考资料:
  1. TUTORIAL: SAMBA on Android, connection with Windows and alternatives | AndroidPCtv    这篇2018年的文章,写了 Android 软件对 smb 协议的支持情况,里面也推荐了一些软件,文章质量不错
  2. TUTORIAL: Connect an Android device with your PC through SAMBA | AndroidPCtv    下面这个文章也可以看看,是设置教程,不过用处不大
 

Mac & iOS

Mac & iOS smb 共享文件教程

4.1.2 sftp

windows server 端 (1) ⭐️ bitvise ssh server 图形界面配置,非常好用   windows client 端 (1) ⭐️ Bitvise SSH Client 图形界面,支持高分屏。 (2)
上一篇:什么是文本扩展以及它如何帮助你在Mac上更快地打字?


下一篇:pat甲级1029 Median