Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python NTFS是否存储每个inode/文件的哈希或CRC32,如何访问它?_Python_Windows_Filesystems_Ntfs_Ntfs Mft - Fatal编程技术网

Python NTFS是否存储每个inode/文件的哈希或CRC32,如何访问它?

Python NTFS是否存储每个inode/文件的哈希或CRC32,如何访问它?,python,windows,filesystems,ntfs,ntfs-mft,Python,Windows,Filesystems,Ntfs,Ntfs Mft,我知道如何读取文件,将这些字节传递给散列算法,如MD5SUM、SHA256或CRC32,然后获取散列 在这里,我要问一些稍微不同的问题: 每次我们在NTFS分区上写入/修改文件时,它是否会重新计算哈希或CRC32并将此信息存储在NTFS元数据/FAT/MFT(主文件表)(我不记得确切的名称) 注意:重要的是,我只想读取存储在文件系统中的hash/CRC(即读取几个字节,最长应为几毫秒),并且不重新计算hash(对于一个10 GB的文件,这将需要很多秒) 如果是,如何使用Python访问特定文件

我知道如何读取文件,将这些字节传递给散列算法,如MD5SUM、SHA256或CRC32,然后获取散列

在这里,我要问一些稍微不同的问题:

每次我们在NTFS分区上写入/修改文件时,它是否会重新计算哈希或CRC32并将此信息存储在NTFS元数据/FAT/MFT(主文件表)(我不记得确切的名称)

注意:重要的是,我只想读取存储在文件系统中的hash/CRC(即读取几个字节,最长应为几毫秒),并且不重新计算hash(对于一个10 GB的文件,这将需要很多秒)


如果是,如何使用Python访问特定文件的CRC或哈希?是否有类似于:

import ntfsutil
ntfsutil.getCRC('d:/big50GBfile.dat')  # done in < 10 ms
导入ntfsutil
ntfsutil.getCRC('d:/big50GBfile.dat')#在<10毫秒内完成

您可以在备用数据流中缓存校验和以及相应的上次写入时间戳,例如“big50GBfile.dat:md5”。如果将文件复制到不支持命名流的文件系统(例如FAT32),则此“md5”流将丢失。@eryksun哇,这是我第一次听说流,非常酷。对于将来的引用:
notepad c:\test.txt:secret
将创建一个名为
secret
的流!有趣的是,这是如此少用…看。NTFS文件/目录是驻留和非驻留属性(即流)的集合。NTFS目录具有包含文件的索引流(例如,“C:\”、“C:\::$index\u分配”和“C:\:$I30:$index\u分配”是等效的)。NTFS文件至少有一个匿名(匿名)数据流(例如,“C:\test.txt”和“C:\test.txt::$data”是等效的)。文件和目录都可以有命名的数据流(例如根目录上的数据流“C:\:secret”或“C:\:secret:$data”)。仅供参考,流/属性是NTFS设计的基础,因此自1993年NT 3.1以来,这一功能一直存在。您链接到的文章错误地声称这是在Windows 2000中添加的,这可能是由于文章发布时对所支持的Windows版本(在MSDN文档底部列出)的字面解释。