在NTFS上的驱动器之间移动文件夹并保留时间戳

Gar*_*son 12 directory timestamp ntfs ads move

对不起,我知道这听起来像是一个新手问题.但说真的,我是一个经验丰富的开发人员,我明白Windows 7 Pro 64位之类的人会说,"哦,如果你将一个NTFS树从一个驱动器移动到另一个驱动器,当我编写那些真正意味着的子文件时我正在修改父文件夹,所以我将更新其时间戳." 所以我最终得到的所有目标文件都具有与原始文件相同的时间戳,但所有文件夹都具有相同的刚刚修改的日期/时间.

所以我明白发生了什么.而且我知道我可以编写自己的实用程序(我有)在NTFS上复制/移动文件.但实用程序存在风险 - 如果它们不支持NTFS,它们可能会忽略其他属性或错过NTFS备用数据流(ADS)等.

那么有没有人知道一个好的,NTFS感知的树移动实用程序,它只需移动所有树并保持时间戳?我不想冒任何损失的风险.谢谢.

Gar*_*son 18

从Helge Klein的回答中得到一些暗示,我更仔细地研究了Robocopy.事实证明,Robocopy(最新版本,例如Windows 7附带的版本)实际上可以复制复制的文件夹结构的时间戳.还有一个"移动"选项,可以在复制后删除源目录,但在Microsoft的无限智慧中,这与"保留目录时间戳"选项不兼容,因此您必须在执行复制后删除源树.

命令行参数选项令人生畏.我做了一些研究,使用Robocopy复制保留目录时间戳的基本命令是这样的:

robocopy %1 %2 /e /dcopy:T
Run Code Online (Sandbox Code Playgroud)

... %1源目录在哪里,%2是目标目录.

如果要确保复制所有内容(包括NTFS安全性,所有者和审核权限),请指定应复制所有属性并使用备份模式,如下所示:

robocopy %1 %2 /b /e /copyall /dcopy:T
Run Code Online (Sandbox Code Playgroud)

但是,使用这些额外选项将需要完全管理员权限(而不仅仅是管理员帐户).例如,单击" 开始",右键单击" 命令提示符",然后选择"以管理员身份运行".然后输入上面的命令.

PS我已经验证了Robocopy也可以传输NTFS流.