我最近了解了 Unix inode 及其用途。特别是,我了解到 an.inode 在文件系统中是独一无二的。
我的问题是:如果用户将 Micro SD 卡插入他们的 Android 设备,该卡会成为现有文件系统的一部分还是成为单独的文件系统?
或者,换一种说法: inode 可以在内部和外部存储之间复制吗?
非常感谢,P
我最近了解了 Unix inode 及其用途。特别是,我了解到 an.inode 在文件系统中是独一无二的。
我的问题是:如果用户将 Micro SD 卡插入他们的 Android 设备,该卡会成为现有文件系统的一部分还是成为单独的文件系统?
或者,换一种说法: inode 可以在内部和外部存储之间复制吗?
非常感谢,P
它是一个单独的文件系统。所以是的,内部存储上的文件可以与外部存储上的文件具有相同的 inode 编号,即使它们是不同的文件。
如果您真正的问题是如何唯一标识文件,则需要 inode 号和设备 ID 号。两者都可以通过 *stat() 系列系统调用来检索,特别是 stat 结构的 st_dev 和 st_ino 字段。
Micro SD 卡通常使用 FAT32,一种不存储 inode 的文件系统。当访问新文件时,Linux 内核正在创建一个与其他不同的随机 inode 编号。
在 FAT32 文件系统上,路径名足以唯一标识文件,这与其他文件系统不同,在其他文件系统中,文件可以有任意数量的路径名,甚至根本没有。
这些 FAT32 假 inode 号被删除:
如果您想要一种可靠的方法来识别 FAT32 上的文件,请不要使用它们的 inode。
I would suggest to use a hash of their pathname, combined with their size if you want to be really sure to avoid collision.