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

Posted

技术标签:

【中文标题】在 NTFS 上的驱动器之间移动文件夹并保留时间戳 [关闭]【英文标题】:Move folder between drives on NTFS and preserve timestamps [closed] 【发布时间】:2012-05-02 05:29:32 【问题描述】:

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

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

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

【问题讨论】:

在超级用户:How to copy a directory on Windows, preserving timestamps of all directories being copied SuperUser 可能是问这个问题的更好地方。 【参考方案1】:

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

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

【讨论】:

Helge,你的回答很有用,所以我给了它一个 +1。它向我展示了 Robocopy,谁知道呢,也许 Total Command 很好。但我认为,最好的方法可能是将 Robocopy 与我发现的额外选项一起使用;看我的回答。谢谢! 为了跟进,我联系了创建 Total Commander 的人,他们向我保证“Total Commander 确实复制了‘最后修改’时间戳和所有 ADS,但‘最后访问’和'created' 时间戳不会被复制。”所以 Total Commander 似乎也是一个选择,虽然我倾向于 Robocopy,因为它已经安装在 Windows 7 上。 总指挥官+1!像魅力一样工作,甚至支持 Win8。 ;) @dbernard,我们如何让它复制“上次访问”和“创建”时间戳?【参考方案2】:

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

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

robocopy %1 %2 /e /dcopy:T

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

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

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

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

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

【讨论】:

哇,很好的发现。我已经使用 robocopy 很长时间了,但我不知道 /dcopy:T。 @GarretWilson,您确定/b 保留所有安全权限和属性吗?那不是/dopcy:DAT/copy:DATSOU /copyall 吗?请参阅support.microsoft.com/en-us/kb/979808“不会复制其安全配置信息,例如访问控制列表 (ACL)。相反,这些文件从目标文件夹继承其 ACL” @Pacerier,请校对您的评论。没有/dopcy:DAT,甚至没有/dcopy:DAT;只有/dcopy:T。并仔细检查命令行帮助:/copyall 等同于/copy:DATSOU。如果校对后仍有问题,我会进一步调查。 @GarretWilson,我知道/copy:DATSOU == /copyall。另外,确实有/dcopy:DAT。默认为/DCOPY:DA,带有复制标志D=DataA=AttributesT=Timestamps。再说一遍,您确定/b 保留了所有安全权限和属性吗?那不是/dcopy:DAT/copy:DATSOU / /copyall 吗?请参阅support.microsoft.com/en-us/kb/979808:“不会复制其安全配置信息,例如访问控制列表 (ACL)。相反,这些文件从目标文件夹继承其 ACL” 截至 2021 年 3 月,在 Windows 10 上,robocopy %1 %2 /b /e /copyall /dcopy:T 不保留文件夹时间戳。【参考方案3】:

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

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

【讨论】:

完美就是我所需要的。 Total Commander 不这样做。

以上是关于在 NTFS 上的驱动器之间移动文件夹并保留时间戳 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Paragon NTFS 15.1.70+系列Mac OS X免费下载

用NTFS For Mac对Mac有啥好处

如何将NTFS格式的移动硬盘挂接到Mac OS上进行读写操作

记录和捕获 NTFS 活动

如何授予 apache 使用 NTFS 分区上的目录的权限?

树莓派外部安装的 NTFS 磁盘上没有足够的可用空间