设想:
执行从旧 Server 2008 R2 到新 Server 2016 的服务器迁移,遵循此服务器故障指南:使用 Robocopy 进行文件服务器迁移
Robocopy 完成后,在 Server 2016 上为复制的卷启用重复数据删除,然后使用 PowerShell 手动开始重复数据删除。几个小时后,它完成并恢复了大约 25% 的磁盘空间。
再次运行 Robocopy 以复制初始副本中可能遗漏的任何内容,作为对新服务器的最终检查。
....但是 Robocopy(从 Server 2016 运行)不了解重复数据删除,因此继续丢弃重复数据删除块存储。
-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows
-------------------------------------------------------------------------------
Started : Sunday, July 8, 2018 12:10:02 PM
Source : \\SERVER-2008\e$\
Dest : \\SERVER-2016\e$\
Files : *.*
Options : *.* /TEE /S /E /COPYALL /PURGE /MIR /ZB /NP /MT:32 /R:1 /W:10
------------------------------------------------------------------------------
*EXTRA Dir -1 \\SERVER-2016\e$\System Volume Information\Dedup\
*EXTRA Dir -1 \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\
*EXTRA Dir -1 \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\
*EXTRA File 253504 \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\DedupFileList.1
*EXTRA File 253504 \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\DedupFileList.2
*EXTRA File 28 \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\stamp.dat
*EXTRA Dir -1 \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\COW\
*EXTRA Dir -1 \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\COW\00010000\
*EXTRA File 196608 \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\COW\00010000\00000046.00.RB
*EXTRA File 106496 \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\COW\00010000\00000048.00.RB
[.......]
*EXTRA File 30.3 m \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\Stream\000f0000.00000002.ccc
*EXTRA Dir -1 \\SERVER-2016\e$\System Volume Information\Dedup\Logs\
*EXTRA File 29.7 m \\SERVER-2016\e$\System Volume Information\Dedup\Logs\00000001.kmchange.log
*EXTRA File 999.8 m \\SERVER-2016\e$\System Volume Information\Dedup\Logs\changes.optimization.1.10.archive.etl
*EXTRA File 1000.0 m \\SERVER-2016\e$\System Volume Information\Dedup\Logs\changes.optimization.1.11.archive.etl
*EXTRA File 735.5 m \\SERVER-2016\e$\System Volume Information\Dedup\Logs\changes.optimization.1.12.archive.etl
*EXTRA File 999.8 m \\SERVER-2016\e$\System Volume Information\Dedup\Logs\changes.optimization.1.9.archive.etl
*EXTRA File 1.3 m \\SERVER-2016\e$\System Volume Information\Dedup\Logs\changes.optimization.2.1.archive.etl
*EXTRA Dir -1 \\SERVER-2016\e$\System Volume Information\Dedup\Settings\
*EXTRA File 76 \\SERVER-2016\e$\System Volume Information\Dedup\Settings\Dedup.00.cfg
*EXTRA File 76 \\SERVER-2016\e$\System Volume Information\Dedup\Settings\Dedup.01.cfg
*EXTRA File 2228 \\SERVER-2016\e$\System Volume Information\Dedup\Settings\dedupConfig.01.xml
*EXTRA File 2228 \\SERVER-2016\e$\System Volume Information\Dedup\Settings\dedupConfig.02.xml
*EXTRA File 0 \\SERVER-2016\e$\System Volume Information\Dedup\Settings\VolumeJobLock.bin
*EXTRA Dir -1 \\SERVER-2016\e$\System Volume Information\Dedup\State\
*EXTRA File 2982 \\SERVER-2016\e$\System Volume Information\Dedup\State\chunkStoreStatistics.xml
*EXTRA File 2592 \\SERVER-2016\e$\System Volume Information\Dedup\State\dedupStatistics.xml
*EXTRA File 11.5 m \\SERVER-2016\e$\System Volume Information\Dedup\State\GCReservedSpaceBitmap.tmp
*EXTRA File 1.0 g \\SERVER-2016\e$\System Volume Information\Dedup\State\GCReservedSpaceContainer.ccc
*EXTRA File 46.0 m \\SERVER-2016\e$\System Volume Information\Dedup\State\GCReservedSpaceDeleteLogs.tmp
*EXTRA File 1.0 m \\SERVER-2016\e$\System Volume Information\Dedup\State\GCReservedSpaceFileList.tmp
*EXTRA File 4096 \\SERVER-2016\e$\System Volume Information\Dedup\State\GroupCommitFlushControl0.bin
*EXTRA File 2066 \\SERVER-2016\e$\System Volume Information\Dedup\State\optimizationState.xml
[……]
在日志中看到这只飞过并意识到发生了什么后,我立即中止了它。但是损坏已经造成,删除重复数据的新服务器上的数据立即被 Robocopy 破坏,因为它冲入了 \System Volume Information。新的服务器驱动器分区已从 Server 2008 重新格式化和重新复制。
有没有一种安全的方法来使用 Robocopy,这样它就不会触及重复数据删除卷数据?
另外,我有一个新的担忧.. 如果 Robocopy 可以销毁重复数据删除卷,那么使用重复数据删除卷还有什么不安全的,它可以直接看到它并且可以破坏只能由服务器访问的基础数据?(可能应该是一个单独的问题..)
System Volume Information
应使用 /XD 开关排除该目录。排除其他隐藏/系统目录(例如$RECYCLE.BIN
.使用的两个命令行开关导致了这一点:
/MIR
和/ZB
. 正如文档 (robocopy /???
) 所述:这是您所做的组合:
/MIR
将删除(正如您在不带参数的情况下运行时指出的那样robocopy
)并且“备份模式”会破坏大多数权限,以便能够读取“通常”不可读的文件以进行完整备份。“备份模式”在“帮助”描述中明显未定义。您必须知道 Windows
CreateFile
API 支持一个名为 的标志FILE_FLAG_BACKUP_SEMANTICS
,它与特定的访问权限(默认情况下SE_BACKUP_NAME
授予管理员组- 也是 Backup Operators 组,duh)相结合,绕过了正常的文件安全性。你不知道吗?那么您可能也不知道 robocopy 最初根本不是 Windows 的一部分 - 它是一个名为“Windows 资源工具包”的补充程序的一部分,当时主要由程序员和核心系统管理员使用,尽管它早在 Windows Server 2008 中就被纳入 Windows 发行版,它从未受到任何关注 - 除了额外的性能选项,哇!特别是,专注于 UI 或可用性的项目经理没有关注。所以这是一种可以使用或滥用的原始力量!- 风险自负。
(一个好的经验法则:不要使用你不太了解的命令行选项。)
您可能想了解的有关“备份模式”文件访问的信息:
https://isc.sans.edu/forums/diary/Use+The+Privilege/20483/
https://docs.microsoft.com/en-us/windows/desktop/api/FileAPI/nf-fileapi-createfilea
https://docs.microsoft.com/en-us/windows/desktop/FileIO/file-security-and-access-rights
以下是使用提供的其他答案的后续结果,并使用重复数据删除的目标进行测试。(元:我不知道我是否应该将其作为编辑包含在原始问题的底部。)
Robocopy 命令行最终演变为如下所示:
选项和目的:
最后重新运行:
,
此外,我不知道向 Microsoft 报告错误的适当渠道,但我已在其Windows IT Pro Center网站上的 Microsoft 重复数据删除文档底部链接到此讨论:
https://docs.microsoft.com/en-us/windows-server/storage/data-deduplication/overview
问题是您没有复制您需要的文件夹,而是整个卷,其中包含隐藏的系统文件夹“系统卷信息”,用于与文件系统相关的任何内容。重复数据删除和文件服务器资源管理器也在其中存储他们的数据。通过将卷复制到另一个卷并使用 /MIR*,也通过使用 /B** 您正在使用可以复制您的管理员帐户无法复制的文件夹的备份模式,您实际上是在替换系统卷信息目标,这会破坏 Dedup 的块存储。我建议不要进行这种类型的复制,最好通过文件夹进行复制,或者完全排除“系统卷信息”文件夹(这将在短期/长期内节省大量的头发拉扯和咒骂)。
“*” 将源中的内容镜像到目标,从目标中删除源中不存在的文件。** 备份模式,复制管理员帐户无法访问的文件(使用 SeBackupPrivilege 进行源读取,使用 SeRestorePrivilege 复制到目标文件夹)。
也许只有我一个人,但我的第一个想法是——永远不要试图复制驱动器本身“e$”。我只会 Robocopy 为用户内容创建的特定文件夹,而不是 Windows 本身创建的任何系统文件夹。