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

时间:2012-04-20 15:52:19

标签: timestamp directory move ads ntfs

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

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

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

3 个答案:

答案 0 :(得分:17)

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

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

robocopy %1 %2 /e /dcopy:T

...其中%1是源目录,%2是目标目录。

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

robocopy %1 %2 /b /e /copyall /dcopy:T

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

P.S。我已经验证了Robocopy也可以传输NTFS流。

答案 1 :(得分:2)

我打算推荐 robocopy ,但当我尝试使用该方案时,我发现(令我惊讶的是)它将复制的目录保留在新的日期,如您所述。 / p> 另一方面,

Total Commander也会复制目录的时间戳。

答案 2 :(得分:2)

SynchronizeIt可以做到这一点,就像拥有漂亮GUI的Robocopy一样好,并且可以选择轻松查看和选择要复制的文件。 http://www.grigsoft.com/wndsync.htm

(请注意,极少数情况下此工具会以某种方式破坏目标文件 - 我发现下载管理器下载的文件,特别是FlashGet和Orbit Downloader,只有前25kb被正确复制,其余部分被填充用零,我不知道解释。我看到Robocopy在同样罕见的情况下也失败了 - 它被类似的文件名混淆了,复制了一个文件而不是另一个文件因此错过了另一个。所以现在我确保始终使用Total Commander或WinMerge验证副本是否完美。)