国庆假期,我拍了一些手机视频,打算存到新买的移动硬盘。
然后,就傻眼了。我的 Mac 电脑无法写入移动硬盘,因为移动硬盘的默认文件系统是 NTFS,Mac 不支持写入 NTFS。
虽然可以买一个软件解决这个问题,但是我不想为这种功能付钱。经过一番研究,我发现把移动硬盘的文件系统改成 exFAT,就可以解决问题,Mac 原生支持读写 exFAT。
由于这个问题很普遍,下面我就来写一写跟 exFAT 相关的知识。
一、文件系统
所谓文件系统,就是文件的储存方式。简单说,它就是一个门牌系统,为储存设备划分门牌号,每个文件分配一个门牌,然后就能按照门牌找到文件。
没有文件系统的硬盘,就是一块荒地。如果有人住在那里,你只能说那里有人住,精确位置你说不出来。只有划分了路牌,你才能说出,这个人住在"人民路15号",这样才能精确定位。文件系统就是路牌的划分方法。
储存设备都需要指定文件系统,计算机才能读写。所谓"格式化",就是为硬盘安装文件系统。不同的操作系统有不同的文件系统,Linux 使用 ext4,OSX使用 HFS +,Windows 使用 NTFS,Solaris 和 Unix 使用ZFS。如果计算机不认识某个文件系统,就会显示这块盘无法读写。
现在的问题就是,NTFS 文件系统是 Windows 的专有系统,Mac 可以读,但是默认不能写入。
二、Windows 的文件系统
Windows 系统主要有三种文件系统。
- FAT32
- NTFS
- exFAT
格式化硬盘的时候,Windows 系统会提供这三种文件系统让你选。这时应该选哪一种呢?
FAT32 是最老的文件系统,所有操作系统都支持,兼容性最好。但是,它是为32位计算机设计的,文件不能超过 232 - 1 个字节,也就是不能超过 4GB,分区不能超过 8TB。目前来看,这个文件系统有点过时了,只适合小文件,如果有大的视频文件,就不能使用它。
NTFS 是 Windows 的默认文件系统,用来替换 FAT32。Windows 的系统盘只能使用这个系统,移动硬盘买来装的也是它。
exFAT 可以看作是 FAT32 的64位升级版,ex
就是 extended 的缩写(表示"扩展的 FAT32"),功能不如 NTFS,但是解决了文件和分区的大小问题,两者最大都可以到 128PB。由于 Mac 和 Linux 电脑可以读写这种系统,所以移动硬盘的文件系统可以改成它。
三、解决方案
移动硬盘买来后,你把它格式化成 exFAT 文件系统,问题就解决了。
Windows 在资源管理器或我的电脑里面,都可以进行格式化。
Mac 在磁盘工具进行格式化。
格式化完成后,就 OK 了。如果你使用 Linux 系统,可能需要装一下 exFAT 支持,Ubuntu 和 Debian 执行下面的命令。
$ sudo apt-get install exfat-utils exfat-fuse
一般读者读到这里,就可以了。如果你像我一样,想用 Linux 进行 exFAT 格式化,请接着往下读。
四、Linux 的 exFAT 格式化
Linux 进行硬盘格式化,需要先找到设备路径。
$ sudo fdisk -l
上面命令会列出本机的所有储存设备,移动硬盘一般是/dev/sdX1
的形式,比如/dev/sdc1
。这里需要了解sdX1
的含义,sd
表示可移动设备和SATA 设备,X
表示设备的序号,依次为 a、b、c 等,最后的1
表示这是该设备的第一个分区。
然后,使用下面的命令进行格式化。
$ sudo mkfs.exfat /dev/sdX1
注意,如果你的储存设备只显示为/dev/sdX
,没有最后的数字,表明这个设备没有分区。exFAT 只能用来格式化硬盘的一个分区,所以必须先分区,再格式化,下面介绍如何分区。
五、分区表
所谓硬盘分区,就是指一块硬盘上面,同时存在多个文件系统。每个文件系统管理的区域,就称为一个分区(partition)。比如,一块 100 GB 的硬盘,可以一半是 NTFS 分区,另一半是 exFAT 分区。
硬盘必须先分区,才能指定每个区的文件系统。分区大小、起始位置、结束位置、文件系统等信息,都储存在分区表里面。
分区表也分成两种格式:MBR 和 GPT。前者是传统格式,兼容性好;后者更现代,功能更强大。一般来说,都推荐使用 GPT。gdisk
命令用于分区操作。
$ sudo gdisk /dev/sdX GPT fdisk (gdisk) version 0.8.8 Partition table scan: MBR: not present BSD: not present APM: not present GPT: not present Creating new GPT entries. Command (? for help):
上面命令表示对/dev/sdX
进行分区。输出结果表明,这个设备还没有分区表。
第一步,o
命令表示创建 GPT 分区表。
Command (? for help): o This option deletes all partitions and creates a new protective MBR. Proceed? (Y/N): Y
第二步,n
命令表示新建一个分区。
Command (? for help): n Partition number (1-128, default 1): First sector (34-16326462, default = 2048) or {+-}size{KMGTP}: Last sector (2048-16326462, default = 16326462) or {+-}size{KMGTP}: Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): 0700 Changed type of partition to 'Microsoft basic data'
上面代码中,分区号(Partition number
,默认为1
)、起始扇区、结束扇区,都可以接受默认值,直接按回车。这时整个硬盘只建一个分区,占据所有空间。文件系统的类型要设成0700
,代表 exFAT。
第三步,w
命令表示写入所有变更。
Command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): Y OK; writing new GUID partition table (GPT) to /dev/sdX. Warning: The kernel is still using the old partition table. The new table will be used at the next reboot. The operation has completed successfully.
到了这一步,分区表应该已经建立了。然后,使用上一节的命令,建立 exFAT 文件系统。
$ sudo mkfs.exfat /dev/sdX1 mkexfatfs 1.0.1 Creating... done. Flushing... done. File system created successfully.
六、参考链接
- Formatting a Universal Drive
- What's the Difference Between FAT32, exFAT, and NTFS?
- How to Mount and Use an exFAT Drive on Linux
(完)
mghio 说:
这种深入折腾的精神值得我们学习
2018年10月16日 18:01 | # | 引用
resty 说:
exFat不适合作为硬盘这种用于存放数据场景下的文件系统。网上见过很多丢数据的case了,交换数据还可以。
2018年10月16日 18:40 | # | 引用
pase 说:
用 exFat 丢过数据。不止一次。
2018年10月16日 19:56 | # | 引用
alswl 说:
exFat 会丢失 macOS / Linux 文件属性,慎用。我的解决方案是,一个硬盘分割两个区域 HFS+ / Fat32,一个日常使用,一个用来交换文件。
2018年10月16日 20:15 | # | 引用
gzg1023 说:
碰到一个问题,不单单是解决,而且了解其中的原理。然后记录下来写给自己,也分析给别人。向您学习
2018年10月16日 20:46 | # | 引用
summer 说:
为什么不购买nas呢
2018年10月16日 21:18 | # | 引用
lajfox 说:
买个群辉nas吧,好用。另外支持docker,也可以当服务器使用,随意折腾了。
2018年10月16日 21:47 | # | 引用
John 说:
没有提到 exFat 这种不带日志的文件系统的脆弱性。
2018年10月16日 22:07 | # | 引用
MGhostSoft 说:
Apple 现在基本都换成 APFS 了;也谈谈各文件系统的优劣吧。
2018年10月17日 00:37 | # | 引用
liuliu 说:
mac可以开启原生读写ntfs的
2018年10月17日 00:52 | # | 引用
业余草 说:
阮老师的这个电脑和我的一个型号,记录一下,以后说不定会用到这篇文章!
2018年10月17日 09:14 | # | 引用
code 庆 说:
哈,我之前碰到过,装了 exFAT 之后感觉传输速度变慢了,有可能是我装的不对还是其他原因,不过后来就不折腾了,用软件传输,,没有大文件传输的需求,,
2018年10月17日 09:28 | # | 引用
Helloyou 说:
Mac 其实可以写入 NTFS 的,只需要重新挂载加上写权限就可以,只是不太稳定,详见:https://zhuanlan.zhihu.com/p/29542892
2018年10月17日 09:48 | # | 引用
HelloWorld 说:
格式化分慢格和快格,请问有什么区别?新硬盘要慢格吗?
2018年10月17日 10:17 | # | 引用
winlans 说:
硬盘盒子和文章的一模一样, O(∩_∩)O
2018年10月17日 10:45 | # | 引用
Leon 说:
慢格会擦除原来的数据,快格就不擦除。如果还是格成原来的文件系统,快格后可能恢复一些数据。
2018年10月17日 11:31 | # | 引用
Alan 说:
那为什么mac不支持ntfs格式呢
2018年10月17日 13:32 | # | 引用
小m 说:
Monty软件了解一下~
2018年10月17日 16:53 | # | 引用
yswang 说:
阮老师,这篇文章好像可以解决您的问题:开启Mac的原始NTFS读写功能。
https://juejin.im/entry/59546970f265da6c34332bdd
2018年10月17日 17:50 | # | 引用
木木 说:
怎么开启啊
2018年10月17日 18:27 | # | 引用
frank 说:
一定是NAS,群辉之类的。
2018年10月17日 21:38 | # | 引用
etworker 说:
我觉得mounty是我找到的mac下免费支持ntfs的还不错的软件,但是需要记得安全退出磁盘
2018年10月18日 01:33 | # | 引用
cuteximi 说:
我自己使用的是希捷的移动硬盘,市场上有一个NTFS For Mac 15 (介绍是:NTFS For Mac 为您轻松解决硬盘、U盘不能读写问题,完美兼容 Windows NTFS文件,让您简单自如读写NTFS外置存储文件),这个软件是收费的,但是希捷官方提供了一个免费的版本。https://www.seagate.com/cn/zh/support/software/paragon/
2018年10月18日 09:07 | # | 引用
DeCodeArt 说:
很佩服阮一峰老师的这种解决问题的能力,敢于专研的精神,资源整合能力。
2018年10月18日 19:05 | # | 引用
peak 说:
exFAT 可以看作是 FAT32 的64位升级版,ex就是 extended 的缩写(表示"扩展的 FAT32"),功能不如 NTFS,但是解决了文件和分区的大小问题,两者最大都可以到 128PB。
只是系统位数变化,exFAT文件存储大小为什么会比FAT32大这么多?
2018年10月19日 08:46 | # | 引用
Cat Chen 说:
FAT32 不是最老的,前面还有 FAT16。
2018年10月19日 10:37 | # | 引用
davix 说:
为什么不叫FAT64呢?
2018年10月19日 11:40 | # | 引用
CallMeSoul 说:
果断还NTFS,
因为NTFS支持超过4GB的单个大文件,
其他格式,想拉个系统iso,或者高清电影,超过4GB就拜拜了,还是NTFS实际点。
2018年10月19日 15:00 | # | 引用
Kevin 说:
正好这两天摄像机的SD卡拍的视频丢失了,用的就是exFAT文件系统,用了好多工具才恢复出数据。再来看阮老师的这个文章,真是清晰明了。
2018年10月20日 08:57 | # | 引用
浩码农 说:
第一步,o命令表示创建 GPT 分区表。
Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): Y
这里命令提示的是创建一个MBR呀?
2018年10月22日 10:00 | # | 引用
Jerry 说:
exFAT 一个比较重要的缺点就是不被很多设备所支持,比如电视机(盒子),也是由于这个原因,没有办法使用 exFAT 来格式化硬盘作为电影片源在电视机(盒子)上播放 ~ 这个对于 Mac 用户,确实比较烦,所以,还是要用 Tuxera NTFS ~ (好在这个软件还比较可靠)
2018年10月23日 09:44 | # | 引用
哈哈 说:
我好像遇到过这么一个问题,就是U盘默认Fat32格式,发现他的传输速度真的超级慢,况且传输大文件的时候总是提示无法传输,所以我就想把它的格式改成ntfs的格式,我当时用的是一段命令在命令行改的(命令式百度一位大神教的),发现最后改了,操作挺简单,也挺好用的。
2018年10月23日 13:59 | # | 引用
John Doe 说:
@浩码农
GPT有保护MBR(protective MBR)
https://en.m.wikipedia.org/wiki/GUID_Partition_Table
2018年10月25日 09:59 | # | 引用
crackhopper 说:
应该是 Mounty。说起来NTFS for MAC这种软件,不过是个文件系统挂载,居然收费,实在是让我觉得震惊。
2018年10月28日 20:16 | # | 引用
老蜜蜂 说:
FAT32不是最古老的
前面还有FAT16,然后还有FAT12。。。
嗯,知道其实也没啥用,我跳出来说主要是为了存在感。。。
2019年4月 2日 20:41 | # | 引用
气象万千 说:
今天准备在电视上看一部存储在新U盘上的电影,电视提示没有本地存储设备,老U盘没问题,查了下,新U盘是exFAT文件系统,老U盘则是FAT32文件系统。
2019年9月21日 13:34 | # | 引用
nutbrain 说:
Mac原生读写NTFS,有可能会出错,我就出现了文件不显示的情况,ls不出来。不过放回Windows之后就显示了。
2020年3月11日 11:17 | # | 引用
learm 说:
来访!现在的安卓盒子系统好像都已经兼容exfat了,底层linux的设备应该都能兼容,应用范围比较广
2020年12月10日 10:02 | # | 引用