![复制目录并保留其权限](https://linux22.com/image/1391968/%E5%A4%8D%E5%88%B6%E7%9B%AE%E5%BD%95%E5%B9%B6%E4%BF%9D%E7%95%99%E5%85%B6%E6%9D%83%E9%99%90.png)
我找到了这个知识库文章这解释了主题标题。但我的问题是,当我使用“xcopy”命令时,它只会将目录内的内容复制到新位置,而不是像 Linux 发行版中那样将整个目录复制到新位置。
例如:如果我输入“xcopy c:\folder1 d:\newfolder”;那么它会将 c:\folder1 中的内容复制到 d:\newfolder,但不会将 folder1 复制到 d:\newfolder。我很困惑,不知道该如何实现这一点。请给我一些建议。
先感谢您。
答案1
我终于成功实现了这一点,我想这也许可以帮助其他人实现这样的需求。好吧,正如我之前提到的,我提到了此知识库文章并使用以下命令来实现不丢失任何数据
我无法复制目录本身,但我设法复制了其中的所有内容,而不会丢失权限。以下是方法
首先,我创建了一个文件夹只是为了复制源目录中的所有内容,并且我曾经xcopy
通过保留其权限来复制所有文件和文件夹。
xcopy c:\source_folder_name e:\destination_folder_name /O /X /E /H /K
- /E-复制文件夹和子文件夹,包括空文件夹。
- /H -还复制隐藏文件和系统文件。
- /K-复制属性。通常,Xcopy 会重置只读属性。
- /O-复制文件所有权和 ACL 信息。
- /X -复制文件审核设置(隐含/O)。
这样就行了,无需再问任何问题。完成后,我注意到复制的文件数和原始文件数存在差异。因此,我过去常常robocopy
通过在镜像时创建日志文件来确保所有文件都已到位。
假设你的命令提示符路径是C:/..
robocopy c:\source_folder_name e:\destination_folder_name /MIR /LOG:log.txt
- /米尔-在源和目标之间镜像文件并复制/修改/删除。
- /日志 -创建该过程的日志文件
笔记:日志文件将在驱动器或命令提示符上显示的路径中创建。例如:如果其C:/,那么日志就会在那里)。
完成任务后,我检查了属性以确保两者都正确。天哪,robocopy
是的!正确,我检查了日志以查看哪个文件没有被复制。正如我所料,它只是大拇指.db&省略了一些其他文件。
附言:使用 robocopy 进行镜像时请注意,如果源文件与目标文件不符,它可能会删除/修改源文件(这种情况非常罕见,但可能会发生)。我之所以使用它,是因为新目标文件的文件数低于原文件。此外,我备份了源文件,以避免任何数据丢失。除此之外,这两个命令都可以执行,不会造成任何问题。
希望这可以帮助!
答案2
唯一的方法是再次指定 folder1。/I 开关将停止 XCOPY 询问关于 folder1 是文件还是目录的愚蠢问题。/E 递归。
xcopy /I /E c:\folder1 d:\newfolder\folder1
编辑:我没有读过之前的知识库文章,所以你可能遇到了权限问题,这可能违背了要点。在这种情况下,劳伦斯可能有道理。
答案3
是的,最好的选择是再次指定文件名...例如,我需要将文件夹复制C:\Inetpub
到另一个文件夹或驱动器。
XCOPY "C:\Inetpub" "C:\DDRIVE\Inetpub" /o /x /e /h /k
按下回车键后,系统会询问“Inetpub 指定目标上的目录名称或文件名?”。按下F文件并按下D目录。您可以D在此处按下。这将创建一个新目录并从源复制具有相同权限的所有子文件夹和文件。