我们在 Windows SBS 2008 服务器上启用了卷影副本。尝试从卷影副本还原文件时出现以下错误-
源文件名大于文件系统所支持的长度。尝试移至路径名较短的位置,或尝试重命名为较短的名称,然后再尝试此操作。
文件名有 67 个字符,其卷影副本路径有 170 个字符。这些似乎都在 NTFS 限制之内(260?)。
我们尝试了-
- 复制到最短路径(C:)
- 复制到客户端计算机和服务器本身上最短的路径
在进行复制之前,是否可以重命名卷影副本中的文件? 尽管文件名大小似乎在限制范围内,但为什么会出现错误?
采取的措施
- 在本地计算机上,转到 SBS 服务器上的共享文件夹(通过映射驱动器),例如 J:\Projects\Foo\Bar
- 右键单击文件夹并选择特性
- 点击之前的版本标签。
- 选择一个卷影副本并单击打开
- 在新打开的窗口中,选择文件夹/文件并按 Ctrl-C 进行复制。
- 打开一个新的 Windows 资源管理器,然后将文件夹/文件粘贴到本地驱动器上。
编辑-(不幸)的是,我现在无法重现此错误。导致问题的特定文件已被删除,无法使用其他类似文件重现该错误。
答案1
我在 Server 2008 R2 中遇到了完全相同的问题,以下是我解决问题的方法:
右键单击要从卷影副本还原的文件夹,然后选择之前的版本. 选择日期并点击打开。
右键单击上一个文件夹中的任何文件或文件夹,然后选择特性。在常规选项卡上复制“位置”中显示的内容,例如:
\\localhost\D$\@GMT-2011.09.20-06.00.04\_Data
打开 cmd.exe 并输入:
subst X: \\localhost\D$\@GMT-2011.09.20-06.00.04\_Data
打开 PowerShell 并使用 robocopy 复制 X: 的内容,例如:
robocopy X: D:\Folder\ /E /COPYALL
检查所有文件是否均已复制。
完成后,
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" 相同