在副本上保留文件属性

Ins*_*ere 15 python file-attributes

我有这种情况,我想保持文件的原始属性(文件创建日期等).通常,当您在Windows中复制文件时,您创建的副本会获得新的"修改"日期等.我已经遇到了shutil.copy命令 - 虽然这不会使文件属性保持不变.

在Stack Unix上发现了以下问题,但我想知道我是否有办法在Python中执行此操作.

aba*_*ert 29

如果您查看文档shutil,您将立即找到该copy2函数,即:

copy()除了copy2()同样尝试保留所有文件元数据之外的相同内容.

在最新版本的Python,有功能的整体转换要做到这一点separately-的点点滴滴copy,copymode,copystat-但是如果你只是想复制的一切,copy2做一切可能的.

正如文档顶部的警告所说,"一切可能"并不意味着一切,但它确实包括日期和其他属性.特别是:

在Windows上,不会复制文件所有者,ACL和备用数据流.

如果你真的需要包括那些东西,你将需要访问Win32 API(这是最容易通过pywin32做).但你没有.

  • 通常,对于取证,您需要首先复制整个驱动器(不仅仅是文件系统,甚至只是分区 - 很容易将数据放入驱动器的未映射部分)并保留对每个文件的源及其元数据的引用在(签名和盖有时间戳的)副本上。实际上没有办法以跨平台的方式做到这一点,特别是如果您怀疑数据可能隐藏在 ATA/SCSI/等处。等级。但无论如何,“copy2”可能足以制作一个可以扫描的工作副本,只要您在找到所需内容后可以返回并获取相关信息。 (2认同)