1

我最近了解了 Unix inode 及其用途。特别是,我了解到 an.inode 在文件系统中是独一无二的。

我的问题是:如果用户将 Micro SD 卡插入他们的 Android 设备,该卡会​​成为现有文件系统的一部分还是成为单独的文件系统?

或者,换一种说法: inode 可以在内部和外部存储之间复制吗?

非常感谢,P

4

2 回答 2

1

它是一个单独的文件系统。所以是的,内部存储上的文件可以与外部存储上的文件具有相同的 inode 编号,即使它们是不同的文件。

如果您真正的问题是如何唯一标识文件,则需要 inode 号和设备 ID 号。两者都可以通过 *stat() 系列系统调用来检索,特别是 stat 结构的 st_dev 和 st_ino 字段。

于 2012-09-07T17:55:15.017 回答
1

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.

于 2012-09-08T07:45:03.597 回答