引言
这一篇整理的笔记抨击一下恶心的Mac自身使用APFS的磁盘格式,但是系统本身插外接硬盘只能兼容ExFAT,使用NTFS要靠第三方软件,此外虽然第三方软件可以支持NTFS但是读写速度比较感人=-=。
这篇简短笔记就是告诉各位移动硬盘千万不要使用ExFAT格式,不要相信任何道听途说Windows和MacOs格式都能兼容的鬼话,数据无价。
原文
如果想要了解全貌,可以看看下面这篇文章:
以及这一篇:
# 移动硬盘上的文件的占用空间比实际文件大小大了好几倍怎么解决? - 知乎 (zhihu.com)
基本概念
你要先了解簇这个概念. 不管是u盘,机械硬盘,固态硬盘. 其文件系统都存在一个最小的存储单位. 哪怕你的文件只有1字节. 放进去也会占用整个最小单位的空间.
机械硬盘一般用NTFS格式分区. 默认参数格式化之后 1簇=4KB=4096字节. 比如说:
如果你的一个文件长1字节.存进去会占用4KB空间.
如果你的文件长4097字节.那么会占用8KB空间....以此类推.
而U盘默认格式化时会采用Fat32或者 ExFat 格式. 默认簇大小会根据设备不同. 原作者的测试是U盘为1簇=1MB=1024KB。
这就意味着NTFS默认文件簇大小是 4KB,即使你的一个文件是 1B,那也占 4KB。
市面主流硬盘
目前市面上主流的硬盘格式主要有
1,苹果格式:
·APFS:macOS 10.13 或后续版本使用的文件系统。在确保可靠性的基础上优化性能,该系统的核心为增加了加密功能。为固态硬盘优化,现为配备固态硬盘的 Mac 电脑的默认文件系统。
·Mac OS 扩展(日志式 HFS+ Plus):macOS 10.12 或之前版本使用的文件系统,16年之前的格式。
2,Windows格式:
·NTFS:是Windows NT内核的系列操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理安全特性设计的磁盘格式。
3,兼容格式(Mac和PC都能用):
·ExFAT:为了解决FAT32等不支持4G及其更大的文件而推出。对于闪存,NTFS文件系统不适合使用,exFAT非常适合闪存的文件系统,属于FAT32与NTFS之间的折中方案。既有了FAT32的轻便、不需要耗损太多的效能及记忆体来处理文件运作,又有类似NTFS的CAL存取控制机制以及类似HPFS系统可快速整理可用丛集空间的Free Space Bitmap避免档案破碎的情况发生。
exFAT格式对于磁盘则不太适用,适合固态硬盘。个人补充:这里所说的适合固态是指的固态寿命本身不是特别长讨论的,ExFat作为固态个人也并不推荐,原因看下文。(未来劣币驱逐良币,QLC颗粒基本会烂大街)
·MS-DOS (FAT):传输单文件不能超过4G。但稳定性较好,适合小型U盘。
在2019年现在往后主流使用的格式这3种,他们特点是。
·APFS:优点:可靠,安全。对配合苹果电脑使用友好。缺点:不兼容Windows系统。
·NTFS:优点:采用日志式,稳定安全,Windows系统使用友好,是主流格式。缺点:苹果电脑只支持读,想要写需要买驱动软件。
·ExFAT:优点:对Windows和MAC格式都兼容,对闪存SSD硬盘优化更好。缺点:机械硬盘用这格式数据容易丢。
数据安全可靠度:APFS=NTFS > ExFAT
数据传输便捷度:ExFAT > NTFS > APF.
很明显,既然有办法让各个操作系统兼容,这里更加建议使用NTFS这种带日志的。
对比ExFat 和 NTFS
NTFS和exFAT都有其缺点,选择何种方案,看具体需求:
- 通常来说,推荐用NTFS,macOS安装第三方软件如NTFS-3G来读写就可以;
- 如果偶尔需要和其它macOS用户用移动硬盘交换一些临时文件,并且这些文件可能来自于Windows也可能来自于macOS可以单独分一个分区,这种情况可以考虑用单独分区的exFAT格式化作为交换分区;
- 如果macOS的一些重要数据保存在移动硬盘上,单独分一个分区,用HFS+格式化。
为什么ExFAT 比 NTFS 占用大?
下面论述的都是默认情况下格式化的情况。
exfat格式默认的空间单元是128KB,而NTFS是4KB。 简单来说就是,即使你的一个文件只有3KB大小,在exfat格式硬盘中,那也是要占用128KB的,而在NTFS格式的硬盘中只需要4KB。上面也讨论过这话题,这里相信能更进一步理解。
所以对于有大量小文件的情况,exFAT空间浪费情况十分严重。比如说我的项目代码总共2G大小,却消耗了50多G的空间。
要解决这个问题只能重新格式化了,注意选择分配单元为最小值。
为什么不推荐使用ExFat 放重要数据?
根本原因是exFAT是一个没有日志的文件系统,是会出现文件“丢失”的风险的。具体来说,假设我们往移动硬盘上复制一个文件,复制到一半的时候把移动硬盘拔下,那么这个文件肯定没拷贝完,用什么文件系统都一样并没有区别。
但是拷贝一个文件,不单单是拷贝这个文件本身,文件系统需要修改这个文件所在的目录的数据,这样操作系统才能知道这个目录下有这么一个文件,这个文件在硬盘上的哪个扇区,这样的数据,一般称之为Metadata(元数据)。
但在修改Metadata的过程中,如果移动硬盘被拔下,Metadata被破坏的话,那么这个目录下的文件、子目录数据都会被破坏,结果就是文件、子目录的数据其实都还在硬盘上,但是在操作系统看来,有部分文件/子目录消失了——这是前面说丢失要用双引号的原因。
对于有日志的文件系统,如NTFS、HFS+,在修改Metadata之前会先写日志记录要修改哪些Metadata,如果修改硬盘拔下后修改失败,只要重新插上,操作系统挂载的时候会发现这个修改未完成,重新修改一遍,保证文件系统数据结构的完整性。
对于没有日志的文件系统,如FAT/FAT32/exFAT、HFS,只能在进行文件系统检查的时候发现错误,然后把丢失的文件找出来——但文件信息已经丢失,文件系统只能知道这里曾经有一个文件,但不知道文件名,也不知道在哪个目录下。
少量的文件可以用16进制查看工具,根据特征人工判断是什么类型的文件,然后用对应的软件打开来看内容后重新命名放回合适的位置。但如果文件特征不明显找不到对应软件打开查看内容,或者找回来几百上千甚至上万个文件,或者这个文件分成多个碎片存储,那么基本上就只能丢失了。例如Windows上可能不少朋友都见过的Found.000文件夹,里面一堆找回来的FILE.CHK文件碎片:
结尾
相信你已经知道这篇文章说什么了,让我们一起痛骂水果没良心吧(笑。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。