尧图精选

文件系统原理与跨平台适配:从VFS到FAT/exFAT的避坑指南

🕒 发布时间:2026/10/1 1:37:44 📁 来源:尧图网络
你有没有遇到过这种事从 Windows 电脑把 U 盘拔下来插到 Mac 上屏幕上弹出一句“这个磁盘无法被识别”或者同事带回来一个移动硬盘里面全是单个超过 4GB 的大文件结果 FAT32 格式直接拒绝拷贝再或者客户端在 Windows 上压缩一个 zip 包发给你你在 Linux 服务器上一解压文件名叫“乱码”……这些日常到不能再日常的翻车现场本质上都在说同一件事文件系统。你以为你在拷文件其实你在横跨好几套完全不同的“数据组织规则”。如果只停留在“选错格式”的表面那就永远搞不懂为什么有的文件死活拷不过去、为什么在 Linux 上好好的 U 盘插到 Windows 就不认了。这也是为什么我打算把文件系统原理与跨平台适配这个主题单独拿出来写一篇。这篇内容会从 VFS 到底层格式、从根文件系统到 sync 落盘、从权限属性到真实场景的格式选择全部串起来讲。碎碎念一句如果你平时要在 Windows、Mac、Linux 之间传数据或者你正在做嵌入式、运维、桌面开发这几个点迟早会以某种让你头疼的方式找上门。1. 文件系统到底在管什么从 VFS 到分区格式1.1 文件系统不是“文件夹”而是一套管理契约我刚入行时也以为文件系统就是“把文件放进去的容器”直到有一次在系统盘上做数据恢复才真正意识到文件系统是一套把磁盘扇区抽象成“文件/目录”的完整管理契约。磁盘本质上是一块巨大的、按扇区排列的存储空间。扇区只是按地址读写的“编号格子”并没有“这个文件叫 xxx”“这个文件的修改时间是昨天”这样的概念。文件系统要做的事就是在这堆编号格子上建立起一套规则文件数据怎么摆文件内容对应哪些扇区、是不是连续存放。目录结构怎么组织一个目录下有哪些文件子目录怎么表示。元数据怎么存文件名、大小、时间戳、权限、属主这些信息放哪里。空闲空间怎么记账哪些格子是空的下次写文件时分配哪些格子。损坏怎么兜底产生不一致时靠什么机制发现和修复。打个比方磁盘是一间空旷的库房文件系统就是库房管理员编出来的“分格编号台账规则”。没有这套规则你放进去的只是纸箱还没法回答“某个纸箱对应哪个订单号”。明白了这一点你就不会觉得“格式化只是清除数据”了——格式化其实是重建整套台账规则旧数据可能还残留在格子里但新规则已经接管了整块磁盘。1.2 一切皆文件为什么 Linux 里的设备也能挂载在跨平台讨论里VFSVirtual File System虚拟文件系统是一个绕不开的桥头堡。VFS 是内核对各类文件系统做的统一抽象层。应用程序不需要关心“我这个文件到底在 ext4 分区上还是在 NTFS 分区上”它只要调用open()、read()、write()、close()这套标准系统调用剩下的路由工作全交给 VFS。你可以把 VFS 理解成一个万能插座每个真实文件系统都是不同制式的插头。只要把 ext4、XFS、NTFS、FAT32 这些“插头”按接口规范接到 VFS 上应用层就能用同一套 API 操作它们。这也是为什么 Linux 能同时挂载一个 ext4 的根分区、一个 NTFS 的移动硬盘、一个 exFAT 的 U 盘它们在 CPU 眼里都只是“文件系统对象”。顺带解释一个很多人初学 Linux 时会困惑的点“设备也是文件”。在/dev/sda这样的设备文件上执行read()/write()最终会触发对应设备驱动而不是读写普通数据块。VFS 在这里起到了把设备驱动也抽象成“类文件”的作用。跨平台场景里VFS 的思维特别重要格式不同接口相同但能表达的信息却可能严重不同。后面我会专门讲这些信息差。1.3 常见文件系统横向对比不是越新越好Windows 用户最熟悉的是 FAT32、NTFSMac 用户则离不开 APFSLinux 服务器上常见 ext4、XFS、Btrfs跨平台传输时又总是碰到 exFAT再往高性能存储走还有 GPFS 这类并行文件系统。我整理了一张常用表单方便直接对照文件系统最大单文件日志权限/ACL跨平台便利性典型场景FAT324GB无无Windows/macOS/Linux 原生或驱动支持极好U盘、内存卡、老设备exFAT极大无无Windows/macOS 原生Linux 需 exfat 驱动新版内核已含大文件 U盘、移动硬盘跨平台NTFS极大有有Windows 原生macOS 只读Linux 靠 ntfs-3gWindows 系统盘、Windows 之间数据交换APFS极大有有macOS 原生Windows/Linux 支持有限Mac 系统盘、Time Machineext4极大有有Windows/macOS 不能原生识别Linux 系统分区、服务器普通数据盘XFS极大有有Linux 生态RHEL/CentOS 默认文件系统大文件高并发Btrfs极大有有高级特性Linux 生态快照、压缩、RAIDGPFS极大有有专有集群环境HPC、高性能并行存储只看这张表你可能会觉得“选格式嘛哪个功能多选哪个”。但跨平台适配恰恰相反功能越多越容易锁死在单一生态里。NTFS 的权限、APFS 的快照、Btrfs 的 CoW这些极其有价值的能力一旦离开原生平台往往要么读不了要么只能以牺牲功能的方式兼容。所以跨平台场景的第一原则不是“选功能最全的”而是“选双方都能无损读写的”。2. 跨平台适配的核心为什么 U 盘在 Windows 和 Mac 之间不能直接读写2.1 三个最容易忽略的坑大小写、字符集与元数据很多人的第一反应是“格式不兼容”但真正让人抓狂的往往不是“不能读写”而是“明明能读写数据却悄悄出了错”。第一个坑是大小写敏感。Linux 的 ext4 是区分大小写的你可以同时在同一个目录下放readme.md和README.md它们会被视为两个文件。而 FAT32/exFAT/NTFS 在默认规则下不区分大小写。如果你在 Linux 上建立了一个同时包含“abc”和“ABC”两个文件的目录然后把这个目录拷到 U 盘格式化为 FAT32/exFAT大概率会直接报“目标已存在”或冲突。反过来Windows 上的文件名全是小写拷到 Linux 没问题但 Linux 上创建的两个大小写不同文件拷到 Windows 就完蛋。第二个坑是字符集乱码。Windows 简体中文环境通常使用 GBK/GB2312 作为本地代码页Linux 和 macOS 则普遍使用 UTF-8。文件名本身只是“一串字节”但不同的文件系统在保存文件名时会选择不同的编码方式。FAT32 在中文 Windows 下保存文件名时走的是本地代码页编码Linux 按 UTF-8 解析看到的就是乱码。这个问题在 zip 压缩包里尤其常见——Windows 自带的压缩功能不把文件名元数据标记为 UTF-8到了 Linux 上解压就全是“锟斤拷”。解决思路很朴素要么统一约定使用 UTF-8 编码要么在压缩/解压时显式指定字符集。第三个坑是元数据精度与扩展属性丢失。FAT 的时间戳精度只有 2 秒NTFS 是 100 纳秒ext4 是纳秒级。从 ext4 拷贝文件到 FAT32文件修改时间会丢失纳秒部分。更隐蔽的是 xattr扩展属性FAT/exFAT 根本不支持 xattr如果你用 Linux 的cp -a从 ext4 拷到 exFATxattr、ACL、selinux 标签都会悄悄消失而且不会报错。2.2 权限模型差异Linux 的 755 在 Windows 上是什么在 Unix 世界里每个文件都有一个属主、属组以及三组权限位owner/group/other的 rwx。Windows NTFS 用的是 ACL访问控制列表逻辑更细但不兼容 Unix 权限位。FAT/exFAT 则更彻底根本没有权限概念所有文件都是“谁都能读、谁都能写、谁都能删”。这意味着什么你在 Linux 上写好一个脚本给它设置了 755 权限传入 U 盘再拷贝到另一台 Linux权限位不会跟着文件系统迁移。如果你直接拷贝目录新文件会继承目标机器的 umask 默认权限比如变成 644 甚至 600于是执行时“Permission denied”。我踩过最惨的一次是把整个/etc/nginx/目录打包复制到移动硬盘然后在一台新服务器上直接cp -r还原。因为 FAT 没有权限位所有文件到了新服务器都变成了普通用户权限nginx 直接无法启动。后来学乖了凡是要迁移 Linux 数据先tar再传。tar会把 Unix 权限、属主、符号链接等元数据都编码到归档文件里到目标机器再解包才能完整还原。zip、cp 到 U 盘这种方案都只适合“数据内容”不适合“系统配置”。2.3 从 VFS 角度看跨平台兼容的通用原则VFS 的抽象让我们能在不同文件系统之间用同一套 API 读写但抽象不等同于能力一致。真正深度的跨平台适配应该从“能力差异”去理解而不是只纠结“什么格式能被两个系统识别”。我把跨平台数据交换分成四层字节数据层文件内容本身。这一层几乎总是能跨平台除非涉及特殊格式如某些依赖平台字节序的二进制文件。命名层文件名、目录结构、字符编码、大小写规则。这一层最容易产生乱码、冲突。元数据层时间戳、权限、属主、ACL、xattr、符号链接。这一层在不同文件系统之间差异巨大通常无法无损迁移。语义层稀疏文件、压缩、快照、加密、CoW写时复制、硬链接。这些是文件系统的高级特性跨平台时基本不要指望保留。因此我的处理原则是如果你的数据只是普通文档、图片、视频用 exFAT 或 FAT32 就够如果你的数据包含大量权限、属主、软链、xattr那就不要用移动硬盘直拷而是用tar、rsync、或者通过 SMB/NFS 协议走网络。网络协议会把本地文件系统的语义转换成协议规定的语义对方文件系统再把协议语义映射到本地这比通过一个“无权限的 U 盘中转”要可靠得多。3. 根文件系统、sync 与特殊权限以 Linux 为中心的深度解读3.1 根文件系统是什么它和普通分区的关系一提到“根文件系统”很多初学者会以为它就是“根分区”。其实更准确的理解是根文件系统是内核启动后挂载到/目录的那套完整文件系统。它可能来自一个独立分区比如/dev/nvme0n1p2也可能来自 LVM 卷、内存盘initramfs、网络文件系统甚至可能在系统启动过程中从 initramfs 切换过去。Linux 启动流程大致是BIOS/UEFI 加载引导程序GRUBGRUB 加载内核和 initramfs内核把自己初始化完成后把 initramfs 作为临时根文件系统挂载然后在内核里加载真正的磁盘驱动、文件系统驱动、LVM 等再挂载真正的根分区最后通过pivot_root/switch_root切换到真实根目录并执行/sbin/init。整个过程里有一个关键点内核必须能找到并挂载根文件系统否则系统直接 kernel panic。所以根文件系统不是随便一个分区它必须包含/bin、/sbin、/etc、/lib、/dev、/proc等基础目录以及系统启动到用户态所需的核心程序和库。这也是为什么很多 Linux 教程反复强调“根文件系统是系统的地基”——它对内核来说就是那个最后要交给用户态的“家”。聊跨平台适配时根文件系统这个概念也很重要如果你要做一个便携式 Linux 系统或者要迁移一个系统盘光看分区是不行的必须确认这套根文件系统是否与目标机器的硬件支持驱动、固件匹配。3.2 sync/fsync数据落盘与断电丢数据的真相另一个常被忽视的原理是“写文件不等于立刻写盘”。Linux 内核会先把要写的数据放进 page cache页缓存然后由后台线程在合适时机批量刷到磁盘。这样做是为了性能把所有小写入合并成大块顺序写大幅减少磁盘 IO。但代价是断电或系统崩溃时缓存里还没落盘的数据可能丢失。sync命令做的就是把当前所有脏页缓存强制写回磁盘fsync()则针对单个文件的文件描述符把该文件相关的所有脏页和元数据落盘。很多服务端程序在写日志、数据库事务时都会在关键步骤调用fsync()来保证数据不丢。而普通用户在日常操作里最容易踩的坑是往 U 盘/移动硬盘拷贝完文件后拔掉写保护开关或直接拔设备。虽然文件管理器通常会在“安全弹出”时自动执行同步但如果在缓存未刷完时拔盘轻则文件损坏目录打不开重则整个分区元数据都乱了。尤其 exFAT/FAT32 这类没有日志的文件系统断电损坏后恢复起来非常麻烦。我做过一个很直观的小实验在 Linux 下写一个 1GB 的文件写完后立刻调用reboot或直接按电源键等再开机时文件可能要么不存在、要么是旧版本。而加入fsync后再重启文件就稳定了。所以“安全弹出”真的不是玄学是在给内核时间去落盘。3.3 特殊权限与属性管理SUID、SGID、Sticky、chattr iLinux 除了普通 rwx 权限位还有一组“特殊权限”和“扩展属性”这些在跨平台适配时是最容易被丢的。SUID设置用户ID当一个可执行文件设置了 SUID 位后普通用户执行它时进程的有效用户 ID 会临时变成文件属主的 ID。最典型的例子是/usr/bin/passwd普通用户通过它修改密码而密码文件/etc/shadow只有 root 才能写。如果在拷贝这个二进制文件到 U 盘时丢了 SUID它就变成一个废文件。SGID设置组ID对目录设置 SGID 后在该目录下新建的文件/目录会继承目录所属的组而不是创建者的默认组。这常用于团队共享目录。Sticky bit粘滞位放在/tmp这类共享目录上作用是“只有文件所有者和 root 能删除目录里的文件”防止普通用户互相删文件。chattr 属性chattr i设置不可变属性chattr a设置只可追加属性lsattr可以查看。这些属性存储在文件系统自己的元数据区ext4、Btrfs 支持但 FAT32/exFAT/NTFS 根本不认。如果你把设置了i的文件拷到 U 盘再回来属性就没了。从跨平台角度说这些机制有一个共同点它们只属于特定文件系统生态。因此当你用tar备份 Linux 系统时tar默认不会保留 selinux 上下文/xattr 的某些部分需要显式加--xattrs、--acls、--selinux等参数当你需要把配置或可执行程序跨平台拷贝时最好先打包再在目标平台重新设置属性。否则你很难在事后发现这些权限已经悄悄丢失。4. 实际场景操作格式化、挂载、迁移与换盘聊完原理下面都是可以直接抄作业的实际场景。4.1 Ventoy 分区文件系统类型选哪个经常有人问Ventoy 装完之后U 盘会分成两个分区其中一个用于存放 ISO 的数据分区文件系统类型到底选 FAT32、exFAT 还是 NTFS我自己的选择逻辑如下exFATVentoy 官方推荐之一能存超过 4GB 的大 ISOWindows/macOS/Linux 支持都比较友好适合作为日常数据分区。NTFS如果你的启动环境是纯 Windows 生态比如老式 PE、Windows 引导器或你需要在 Windows 下直接往数据分区塞 NTFS 权限相关的东西可以选 NTFS。FAT32最大兼容老 BIOS/UEFI 主板普遍认但单文件 4GB 上限很多新系统的 ISO 根本放不进去。我的经验是默认用 exFAT。如果遇到某些老机器或特殊主板无法从 exFAT 分区引导再在 Ventoy 配置里调整或改用 NTFS。还有一个经常踩的坑很多制作工具会把第一个分区做成 EFI 系统分区那个分区保持 FAT32 不要乱改要改的是“用于存放 ISO 的大容量分区”。改错分区会导致 Ventoy 引导失效插上后 Windows 可能提示未格式化。格式化时我更推荐用 Ventoy 自带的工具或者在 Windows 的磁盘管理器里操作不要在 macOS 的磁盘工具里随便抹盘因为 macOS 磁盘工具可能会把分区表改写成 GPTAPFSVentoy 的引导结构可能因此丢失。一句话总结数据分区选 exFAT引导分区保持 FAT32别动 GPT 分区表结构。4.2 跨平台 U 盘/移动硬盘选格式与实操步骤除了 Ventoy普通数据 U 盘也会遇到同样的选择题。我按场景给出建议场景一只在 Windows 之间传数据。选 NTFS。理由NTFS 有日志、有权限 ACL、有压缩和加密且 Windows 原生读写稳定性最好。不要把 U 盘格式化成 FAT32否则遇到大于 4GB 的单个文件比如 Visual Studio 安装包、docker 镜像 tar直接失败。场景二在 Windows 和 Mac 之间传数据且文件不大4GB。选 FAT32 最保险两边原生支持几乎不会出现驱动问题。缺点是没日志、没权限、单文件不能超过 4GB。场景三在 Windows 和 Mac 之间传数据且有大文件。选 exFAT。Windows 和 macOS 都原生支持 exFATLinux 新版内核也已内置 exfat 驱动。这是目前跨平台大文件最稳的选择。场景四在 Linux 和 Windows 之间传系统文件/大量小文件且要求保留权限。不要直接用 U 盘直拷。正确做法是先把目录tar czf打包再把 tar 包放到 exFAT 分区到目标机器解包时用tar -xzf或者在两台机器之间用 rsync/SMB/NFS 直接同步。实操时要注意格式化前一定备份数据确认目标分区是整个 U 盘还是某个卷Linux 下使用mkfs.exfat、mkfs.vfat、mkfs.ntfs等命令时要确认设备名别把系统盘格了。4.3 GPFS 磁盘更换场景的注意事项“GPFS 文件系统更换磁盘”是存储运维里的高频话题。GPFSGeneral Parallel File SystemIBM 的并行文件系统主要用于 HPC、大数据集群文件系统底层横跨多块 NSDNetwork Shared Disk。换盘这件事不能像普通 Linux 单机换盘那样直接umount然后换个新分区格式化因为 GPFS 是全集群共享访问的。根据我这些年和一些存储工程师交流的经验换盘前至少要想明白这几件事先确认数据复制策略GPFS 可以通过 per-file 或 per-filesystem 设置副本数replication也可以把元数据单独做副本。如果打开了复制某个磁盘坏了数据还能从另一块副本里恢复如果没开复制换盘前必须对受影响数据做一次备份否则可能丢数据。查清楚盘在文件系统里的角色是数据盘还是元数据盘是主副本盘还是备份盘角色不同换盘后的恢复流程会差很多。做文件系统健康检查再动手GPFS 有 fsck 类工具mmfsck换盘前先跑一遍确认没有 pending 的不一致。如果文件系统本身已经处于异常状态直接换盘可能扩大问题。按存储厂商流程操作不同版本的 GPFS 命令细节很多差异不要凭记忆乱敲。仔细看mmchdisk、mmdeldisk、mmadddisk的相关参数并在维护窗口内操作。换完盘后要验数据用文件校验和如cksum或对关键目录滚动比对确保换盘后数据完整。很多事故发生在“换了盘roster 看的挺正常但里面其实缺文件”。GPFS 的换盘本质上是一个“从冗余策略中重建设备”的过程。和普通 ext4 的mdadm换盘类似但又多了一层集群一致性管理。这里我给不出一步不差的命令序列因为版本和环境差异太大。我的建议是在生产环境动手前一定先在测试环境用同样版本的 GPFS 模拟一遍。这句话比任何具体命令都值钱。4.4 FAT 文件系统与碎片化从“fats 文件系统”说开去热搜词里出现了“fats 文件系统”我猜多半是把 FAT 家族FAT12、FAT16、FAT32叫成了“fats”。FAT 的名字来自 File Allocation Table也就是“文件分配表”。核心思想是把存储空间划分成一个个簇cluster再用一张表记录每个文件占用了哪些簇、簇和簇之间的链接顺序。目录项里记录文件名、起始簇号、文件大小等FAT 表则维护所有簇的使用和链接关系。FAT 家族的缺点就是碎片化明显。因为文件数据不一定连续存放频繁增删文件后同一个文件可能被拆到几十个不连续的簇里。在机械硬盘上读取这类文件时磁头要来回跳性能大幅下降。闪存 U 盘虽然没有机械寻道但大量碎片会导致随机小 IO 增多也会影响部分主控的写入效率。exFAT 虽然算是新一代的 FAT 系统但它的基础结构依然接近 FAT 表对碎片和掉电的敏感程度比 NTFS/ext4 这类日志文件系统高。还有一个有趣的点FAT 族没有日志删除文件时只是修改目录项和 FAT 表实际文件数据还留在扇区里。这正是很多数据恢复软件能“找回”文件的原因。跨平台场景下如果你误删了重要文件第一原则一定是停止对 U 盘/硬盘的继续写入然后尽快做只读镜像备份再用恢复工具扫描成功率高很多。5. 常见问题排查与避坑实录5.1 跨平台文件系统问题速查表我把这几年私下被问最多的问题整理成一个速查表方便你遇到直接对照问题现象常见原因解决思路U 盘在 Mac 上能读文件但 Windows 不能识别可能格式化为 APFS 或 GPTAPFS 分区Windows 原生不支持备份数据后格式化为 exFAT/FAT32使用 MBR 分区表Linux 挂载 NTFS 分区报“卷已挂载或损坏”Windows 启用了快速启动/休眠NTFS 卷被标记为脏在 Windows 关闭快速启动并正常关机或 Linux 下用ntfsfix修复从 Windows 复制的 zip 在 Linux 解压出乱码zip 文件名编码为本地代码页如 GBK不是 UTF-8用 7-Zip 选择 UTF-8 编码创建 zip或在 Linux 下用unzip -O GBK指定编码拷贝到 U 盘后脚本失去可执行权限FAT/exFAT 无 Unix 权限位改用 tar/rsync或在目标端重新chmod x从 Linux 拷目录到 Windows 报“找不到文件”文件名中存在冒号、竖线、问号等 FAT 非法字符先重命名文件避免 Windows 保留字符ls显示文件可读但打开时权限不足文件拥有者改变或 xattr/ACL 冲突检查属主和 ACL必要时chown/setfacl回传时文件修改时间变成拷贝时间FAT 时间精度不足或cp忘了-p拷贝时用cp -p或使用 rsync-t保留时间戳设置了chattr i的文件没法删不可变属性阻止写入/删除用chattr -i解除后删除掉电/没弹出 U 盘后分区打不开FAT/exFAT 掉电导致目录项损坏用 Windowschkdsk /F或 Linuxfsck.exfat修复重要数据先镜像再修df/du 看到大小不一致删了文件空间没释放有进程仍持有已删除文件的句柄用lsof L1找到进程重启进程或/proc/pid/fd处理5.2 三个真实翻车案例第一个案例是 NTFS 移动硬盘挂在 Linux 服务器上写数据。我按rsync完了以后随手 CtrlC 中断了一个批量任务但系统没有立即停止所有 IO后台依然在刷缓存整整等了将近两分钟才看到真正的写入结束。如果这时候直接拔 USB缓存会丢目标目录可能变成乱码。后来我对大文件传输要么等它自然完成要么在拔盘前用sync多刷一次不再迷信“复制进度条走完就安全”。第二个案例是 zip 跨平台乱码。同事从 Windows 给我发了一个项目包里面所有中文文件名在 Linux 上解压后变成一堆方块和问号。一开始我以为文件就长那样后来发现只要在 Windows 上用 7-Zip 创建 zip 时勾选“UTF-8 文件名”选项或者生成后解压指定代码页就能解决。这个问题的根源就是我在前面讲的字符集差异FAT 文件系统在中文系统下存的是 GBK 字节流而 Linux 默认按 UTF-8 解析。第三个案例是用 FAT32 U 盘传 Docker 镜像。镜像 tar 包动辄几十 GBFAT32 单个文件限制 4GB拷了几分钟就报错。我当时第一反应是“U 盘坏了”换了一个 U 盘发现还是报错才意识到是格式限制。后来把 U 盘格式化成 exFAT 解决问题。结果又因为没“安全弹出”就拔盘整个 exFAT 分区的根目录出现大量.Trash残留和簇异常最后在 Windows 上chkdsk修了好久。从那以后凡是用 exFAT/FAT32 拷贝重要数据我一律先sync再等系统提示再拔。5.3 我的跨平台迁移固定流程如果现在要我在不同操作系统之间安全迁移一份数据我会按这套固定动作来先确认数据里有没有符号链接、硬链接、xattr、ACL、特殊权限。有就走 tar/rsync没有才考虑直接 U 盘拷贝。选定文件系统Linux 之间用 ext4/XFS 并尽量走网络Windows 之间用 NTFS跨 WindowsMac 用 exFAT老设备兼容用 FAT32。拷贝前先做一次du -sh和文件数统计迁移后再做du -sh对比大小不一致一定是哪里出了问题。所有命名上含中文/特殊字符的文件先做一次“命名预检”。Windows 常见非法字符\ / : * ? |以及以点号结尾的文件名。拔盘前执行sync确认读写指示灯歇了再断电。如果用的是移动硬盘尽量走“安全弹出”流程。传完以后不要马上删除源文件先抽样打开关键文件验证大项目校验cksum或sha256sum。这套流程没法保证 100% 不出问题但能把你踩坑的概率下降一大截。最后聊点个人体会吧。跨平台适配这件事做不到“一招鲜”。我自己的习惯是凡是要在多台电脑之间倒腾的 U 盘和移动硬盘统一格式化成 exFAT凡是 Linux 之间传输数据优先走网络而不是拿 U 盘当中间人凡是必须用 U 盘做中转的系统配置、脚本、可执行文件一律先tar打包再传。这些习惯不是从哪本手册里背来的全是插拔 U 盘、恢复分区、救文件这些年攒下来的。如果你看完这篇能对“文件系统”和“跨平台适配”之间的关系有个更立体的理解下次再遇到 U 盘不认、文件乱码、权限丢失这类问题时至少会先想一想“这套文件系统能表达什么、不能表达什么”那就比当年只会乱试格式的我强多了。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →