13

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

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

那么有没有人知道一个好的、支持 NTFS 的树移动实用程序,它可以简单地移动整个树并维护时间戳?我不想冒险失去任何东西。谢谢。

4

3 回答 3

17

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

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

robocopy %1 %2 /e /dcopy:T

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

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

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

但是,使用这些额外选项将需要完整的管理员权限(不仅仅是管理员帐户)。例如,单击Start,右键单击Command Prompt,然后选择Run as administrator。然后输入上面的命令。

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

于 2012-04-21T05:59:27.510 回答
3

我打算推荐robocopy,但是当我尝试这个场景时,我发现(令我惊讶的是)它会在新的日期留下复制的目录,正如你所描述的那样。

另一方面,Total Commander也会复制目录的时间戳。

于 2012-04-20T18:38:19.873 回答
3

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

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

于 2012-11-25T20:43:27.270 回答