我有一个卷,里面有需要在 Mac、Linux 和 Windows 计算机之间复制的文件。我想确保不会出现以下意外情况:
- 文件大小
- 文件名长度
- 文件名字符集
- 嵌套目录的数量
我是否可以正确地假设(上面列表中的)在 FAT32 中合法的任何内容在 NTFS、EXT3 和 HFS+ 中也是合法的?
如果没有,是否有一个脚本/实用程序可以运行,而无需实际将文件复制到所有这些类型的卷,而是打印出潜在问题的列表?
答案1
您是对的 - FAT32 及其限制(与文件大小和字符限制有关)将是您最大的限制。
供参考(以便将所有信息集中在一处):
| TYPE | FILE SIZE | FILENAME | CHARACTER SET | DIRECTORY | VOLUME SIZE |
| FAT32 | ~4GB | 11/255(2)|ASCII/Unicode(2)| No (3) | 2TB (1) |
| NTFS | ~16 EiB(5)| 255 | Unicode(6) | No (4) | 16 EiB |
| EXT3 | 16GB/2TB | 255 | Unicode | No | 16GB/32TB(7)|
| HFS+ | ~8 EiB | 255 | Unicode | Unlimited | ~8 EiB |
| ZFS | 16 EiB | 255 | Unicode | Unlimited | 16 EiB |
- 64k 大小的集群最高可以达到 8TB。
- FAT32 本身支持使用 ASCII 的 11 个字符文件名 (8.3),如果支持长文件名,则最多可支持 255 个 UTF-16 字符。排除的 ASCII 字符包括:
" * / : < > ? \\ |
- 虽然子目录的数量没有限制,但路径限制为 260 个字符。(这是 Windows 95/98 中的限制 - Linux 上为 4096)
- 与 FAT32 类似,子目录没有限制,但路径限制为 32767。
- EiB = 艾字节 = 2 ^ 60 字节。1 艾字节 = 1024 拍字节。1 拍字节 = 1024 太字节。
- NTFS 具有与 FAT 32 相同的一组不允许的字符(
" * / : < > ? \\ |
) - 最大限制取决于块大小。
欲了解更多信息,可以从维基百科开始文件系统比较但在一些细节上却相当模糊。
答案2
我不知道有任何这样的实用程序,但我想到的是,你可以拥有一组虚拟机,在其中你可以使用脚本测试大多数文件系统。
只需使用脚本将一组示例文件复制到每个分区,看看它是否会引发错误。