在 Linux 上,我们可以简单地执行以下操作:
cp -pr directory
在 Windows 中如何做到这一点?可以在 Windows 资源管理器中完成吗?有什么 GUI 工具建议吗?
如果我能保留 NTFS 权限和创建/修改/访问时间,那就最好了。至少,我需要保留文件的修改日期和目录。Windows 资源管理器的副本不会保留目录的修改日期。
答案1
在 Windows 中没有简单的方法可以做到这一点。有几种程序声称能够保留文件的创建日期。
以下是一些可能有用的程序http://forum.soft32.com/windows/preserve-creation-date-Copy-ftopict361820.html (链接已损坏;不在 Wayback Machine 中)。
仅使用 Windows 资源管理器是不可能的。如果你查看 CopyFile 的文档, CopyFile 函数(winbase.h),你会发现它避开了这个话题。但是 CopyFile 函数(Windows 开发人员预览版) (同一 URL 的 2012 年档案)内容如下:
文件时间语义
本文应记录与文件创建/修改/访问时间有关的语义。
创建时间:如果目标文件已经存在,则其创建时间为保存,否则设置为当前系统时间。
上次修改时间:始终从源文件的修改时间复制。
上次访问时间:始终设置为当前系统时间。
答案2
Robocopy 命令行工具(大多数 Windows 版本都附带)
在我的 Windows 10 机器上,它位于C:\Windows\System32
从维基百科,它可以与以下选项一起使用来保存文件和目录时间戳,以及其他属性:
Robocopy C:\some_directory D:\some_directory /DCOPY:T /COPYALL /E /R:0
/DCOPY:T
保留原有目录的时间戳(需要 XP026 或更高版本)/E
:递归复制目录,包括空目录/R:0
:不重试锁定的文件(失败副本的重试次数默认值为 100 万),/COPYALL
:复制所有文件信息,
(相当于/COPY:DATSOU
,其中D
=数据,A
=属性,T
=文件时间戳,S
=安全=NTFS ACL,O
=所有者信息,U
=审计信息),
如果你仅有的想要保留日期和目录时间戳,但不是想要复制空子目录并执行不是想要保留其他属性,那么您可以使用:
Robocopy C:\some_directory D:\some_directory /DCOPY:T /COPY:T /S
副本/S
非空子目录
要查看完整语法,请robocopy /?
在命令提示符下键入,或查看以下博客文章:https://ss64.com/nt/robocopy.html和
https://techjourney.net/robocopy-syntax-command-line-switches-and-examples/
我最近运行的一个命令示例:
Robocopy D:\ C:\D_backup /DCOPY:T /COPYALL /E /R:0 /ZB /ETA /TEE /V /FP /XD D:\$RECYCLE.BIN /XD "D:\System Volume Information" /LOG:C:\D_backup_robocopy.LOG /MIR
请注意,排除 2 个子目录需要/XD
使用两次标志。此外,第二个目录排除使用引号,因为目录名称中有空格。
最后,您可以添加/L
标志,在实际执行命令之前测试该命令。这样,您可以验证它不会复制(或删除)您不想要的任何目录/文件,并且命令中没有错误。
编辑:从根目录(又名驱动器)复制到文件夹(非根目录)时遇到问题
运行上述示例命令后,目录不可见!(尽管在 Windows 10 中show hidden files
已show system files
检查!)以下命令https://serverfault.com/a/455029/399723修复了这个问题:
attrib -h -s C:\D_backup
或者,添加/A-:SH
“取消设置系统文件的隐藏属性”,这样可能会首先阻止目录被隐藏,如https://serverfault.com/a/565804/399723。 也可以看看https://ss64.com/nt/robocopy.html。
这讨论进一步阐明了此选项作为解决方案的重要性。
Robocopy D:\ C:\D_backup /A-:SH /DCOPY:T /COPYALL /E /R:0 /ZB /ETA /TEE /V /FP /XD D:\$RECYCLE.BIN /XD "D:\System Volume Information" /LOG:C:\D_backup_robocopy.LOG /MIR
其他软件:
或者,你可以下载robocopy 的 GUI 版本如果您不想使用命令行。
另一个 Windows 实用程序是复制,尽管它包含在 Windows 10 中,但已被弃用。请参阅链接以了解陷阱。
RoboCopy 的维基百科页面(链接于本文顶部)列出了其他可以使用的软件。
答案3
...或者您可以创建一个 zip 存档(将压缩方法设置为“存储”),然后将文件解压到您想要复制它们的位置。日期/时间属性与原始文件相同。
答案4
RoboCopy 应该能够使用 COPYALL 开关来实现这一点。您可以从以下位置获取 GUI 版本微软技术网。