由于文件名太长,无法从卷影副本恢复

由于文件名太长,无法从卷影副本恢复

我们在 Windows SBS 2008 服务器上启用了卷影副本。尝试从卷影副本还原文件时出现以下错误-

源文件名大于文件系统所支持的长度。尝试移至路径名较短的位置,或尝试重命名为较短的名称,然后再尝试此操作。

文件名有 67 个字符,其卷影副本路径有 170 个字符。这些似乎都在 NTFS 限制之内(260?)。

我们尝试了-

  • 复制到最短路径(C:)
  • 复制到客户端计算机和服务器本身上最短的路径

在进行复制之前,是否可以重命名卷影副本中的文件? 尽管文件名大小似乎在限制范围内,但为什么会出现错误?

采取的措施

  1. 在本地计算机上,转到 SBS 服务器上的共享文件夹(通过映射驱动器),例如 J:\Projects\Foo\Bar
  2. 右键单击文件夹并选择特性
  3. 点击之前的版本标签。
  4. 选择一个卷影副本并单击打开
  5. 在新打开的窗口中,选择文件夹/文件并按 Ctrl-C 进行复制。
  6. 打开一个新的 Windows 资源管理器,然后将文件夹/文件粘贴到本地驱动器上。

编辑-(不幸)的是,我现在无法重现此错误。导致问题的特定文件已被删除,无法使用其他类似文件重现该错误。

答案1

我在 Server 2008 R2 中遇到了完全相同的问题,以下是我解决问题的方法:

  1. 右键单击要从卷影副本还原的文件夹,然后选择之前的版本. 选择日期并点击打开

  2. 右键单击上一个文件夹中的任何文件或文件夹,然后选择特性。在常规选项卡上复制“位置”中显示的内容,例如: \\localhost\D$\@GMT-2011.09.20-06.00.04\_Data

  3. 打开 cmd.exe 并输入:

     subst X: \\localhost\D$\@GMT-2011.09.20-06.00.04\_Data
    
  4. 打开 PowerShell 并使用 robocopy 复制 X: 的内容,例如:

     robocopy X: D:\Folder\ /E /COPYALL
    
  5. 检查所有文件是否均已复制。

  6. 完成后,subst X: /D在 cmd(命令提示符)窗口中输入

答案2

您是否尝试过共享要从中恢复的文件夹?这样,您可以尝试打开 \server\share\filename,而不是 \server\share\path.....\filename?

如果这不起作用,我建议尝试访问通过命令行您可以使用\\?\访问方法,该方法具有32,767 个字符限制

答案3

您能否从“属性信息”窗口中常规选项卡的“位置”条目中获取卷影副本文件的名称/路径,然后使用“subst”命令将长路径缩短为一个字母?

subst Z: "H:\1\2\3\4\5\6\7\我喜欢创建很长的愚蠢目录名\8\9"

dir Z: 与 dir "H:\1\2\3\4\5\6\7\我喜欢创建很长的愚蠢目录名\8\9" 相同

相关内容