小编ayk*_*yke的帖子

在 Linux 中如何获取 inode 的代号?

摘要:我想i_generation从用户空间获取 Linux(或至少 ext4)中文件的生成号 ( )。或者,“出生时间”(文件创建时间)。

我正在尝试编写一个双向文件同步程序(又名Unison),但没有中央数据库(简单,只需将数据存储在同步根中)并且通过保留文件移动(如果您想支持所有文件移动,则非常非常困难)例如,奇怪的情况,例如将文件移出随后删除的目录)。

拥有一种唯一标识文件的方法将使事情变得容易很多。我知道如何获取 inode 和设备号(通过stat),但由于 inode 可以重复使用(我自己也见过),我想使用更稳定的唯一标识。

我读过 NFS 使用“世代号”来唯一标识文件。在 NFS 中,( st_ino, i_generation) 组合用于在重新启动和服务器崩溃时唯一标识文件句柄(或至少防止重复使用同一文件句柄导致可能的数据损坏)。

不过我还没成功拿到号码。这个 ext4 文档似乎表明可以从 ext4 文件系统获取该数字,但我无法从用户空间获取它(我不会在内核空间中运行这个简单的程序)。看EXT4_IOC_GETVERSION。我在我的系统上找不到合适的头文件(LMDE、Debian 测试)。我可以找到两种选择:

  1. 尝试使用内核中的那个 - 失败说不应该从用户空间使用它。
  2. 尝试使用EXT2_IOC_GETVERSIONin <linux/ext2_fs.h>- 给出EBADF( errno9)。也许是因为我试图从 EXT4 文件系统获取 EXT2 信息?或者也许我做错了什么ioctl,这是我第一次尝试使用它。文件被正确打开,因为open在我的例子中调用返回 3 (这应该是有效的)。

代码:

#include <sys/ioctl.h>
#include <sys/fcntl.h>
#include <linux/ext2_fs.h>
#include <stdio.h>
#include <errno.h>

int main () {
    int fileno = open("generation.c", O_RDONLY); …
Run Code Online (Sandbox Code Playgroud)

linux inode ioctl stat

5
推荐指数
1
解决办法
2365
查看次数

是否有可用于Arm芯片的MongoDB 2.4+安装?

我有兴趣使用具有1.7GHz四核芯片的Odroid U3构建一个小型服务器.我确实在Raspberry上安装了MongoDB 2.1.1,但发现其性能远远低于修补之外的任何严重用法.我想知道有一个MongoDB软件包/指令/教程可以安装更新版本的MongoDB.任何建议/帮助将不胜感激

mongodb raspberry-pi odroid

5
推荐指数
1
解决办法
7399
查看次数

标签 统计

inode ×1

ioctl ×1

linux ×1

mongodb ×1

odroid ×1

raspberry-pi ×1

stat ×1