我正在编写一个应用程序,我需要拦截一些文件系统系统调用,例如.断开链接.我想保存一些文件说abc.如果用户删除了该文件,那么我需要将其复制到其他地方.因此,在删除abc之前,我需要取消链接以调用我的代码,以便我可以保存它.我已经完成了与拦截系统调用相关的线程,但像LD_PRELOAD这样的方法在我的情况下不起作用,因为我希望这是安全的并在内核中实现,所以这个方法不会有用.事件发生后inotify通知我无法保存它.你能建议任何这样的方法.我想在内核模块中实现它,而不是修改内核代码本身.格雷厄姆·李建议的另一种方法,我曾想过这种方法,但它有一些问题,我需要所有文件的硬链接镜像它不占用空间但仍然可能有问题,因为我必须反复镜像驱动器以保持我的镜像到日期,它也不会工作跨分区和分区不支持链接所以我想要一个解决方案,通过它我可以挂钩到文件/目录,然后观察更改而不是重复扫描.我还想添加对修改文件的写入支持,我不能使用硬链接.我想通过替换系统调用拦截系统调用,但我还没有找到任何在linux> 3.0中执行此操作的方法.请提出一些方法.
我正在使用python中的一个项目,我只需要提取tar存档的子文件夹而不是所有文件.我试着用
tar = tarfile.open(tarfile)
tar.extract("dirname", targetdir)
Run Code Online (Sandbox Code Playgroud)
但这不起作用,它不提取给定的子目录也没有抛出异常.我是python的初学者.另外如果上面的函数对目录不起作用,那么这个命令和tar.extractfile()之间的区别是什么?
我有一个tar存档,我有一个目录,我需要在给定的目录中提取.例如:我有一个目录
TarPrefix/X/Y/Z
在tar存档中我想在给定的目标目录中提取它,例如:extract/a/this目录应该包含目录TarPrefix/x/y/z中包含的所有文件和目录.
subdir_and_files = [ tarinfo for tarinfo in tar.getmembers()
if tarinfo.name.startswith("subfolder/")
]
Run Code Online (Sandbox Code Playgroud)
获取目录路径"子文件夹/"中所有成员的列表然后我使用tar.extractall(extracted/a,subdir_and_files)
它提取它,但它提取所有成员及其目录路径例如,这导致提取/ a/x/y/z.你能帮我解压一下给定文件夹中的这些文件吗?
您好,我是内核编程的新手.我正在编写一个基于wrapfs模板的小内核模块来实现备份机制.这纯粹是为了学习的基础.
我正在扩展wrapfs,以便在进行write调用时,wrapfs透明地在单独的目录中创建该文件的副本,然后对该文件执行write.但我不希望我为每次写入调用创建一个副本.
一个天真的方法可能是我检查该目录中是否存在文件.但我认为,对于每次通话检查,这可能是一个严重的惩罚.
我还可以检查第一次写入调用,然后使用private_data属性存储该特定文件的值.但那不会存储在磁盘上.所以我需要再次检查一下.
我也在考虑利用修改时间.我可以节省修改时间.如果较旧的修改时间早于该时间,那么只创建一个副本,否则我将不会做任何事情.我尝试使用inode.i_mtime,但即使在调用write之前它也是修改过的时间,应用程序也可以修改那个时间.
所以我想在磁盘上的inode中存储一些值,表明它已经创建了备份.那可能吗?欢迎任何其他建议或方法.
我正在开发一个项目,我需要知道调用系统调用的可执行文件的当前工作目录.我认为有可能像一些系统调用那样open利用这些信息.
你能告诉我如何在字符串中获取当前的工作目录路径吗?
我想在我的内核模块中获取文件系统的文件系统挂载点,这是一个可堆叠的文件系统.例如.如果/ home/ab/abc是一个文件,并且/ home安装在不同的文件系统上,我想要一个dentry或path结构到/ home.我想在模块中执行此操作而不修改内核代码.例如/ home/user /中有一个文件,现在我想知道这个文件在哪个分区.例如,此文件可能位于与"/"相同的分区中,或者此文件可能位于/ home或/ home/user上的另一个分区中.
linux ×4
filesystems ×3
linux-kernel ×3
python ×2
tar ×2
directory ×1
extract ×1
inode ×1
intercept ×1
kernel ×1
system-calls ×1