场景如下:我的 Windows 服务器上有 5 TB(是的,就是 1 T)的文件,我需要在尽可能短的时间内将它们迁移到新服务器。(想想:Robocopy、Rsync 等,因为我计划使用差异来逐步完成此操作)。这些文件位于单个父目录下的 ~41,000 个目录中(d:\files\folder1、d:\files\folder2 等)。
由于这些正在迁移到新服务器,我想将它们拆分开来,以便它们不都在同一个“文件”目录中,而是尽可能合乎逻辑地拆分到多个驱动器上(出于备份和复制目的,尝试保持大约 2TB 的驱动器大小)。
Robocopy 没有正则表达式选项。Rsync 需要 Linux 服务器,这并非不可能,但会增加开销:这是从 Windows 到 Windows 的迁移。我找到了一种方法,使用 powershell 循环遍历 41,000 个目录并为每个目录单独启动 Robocopy,从而允许我指定目标……但这似乎效率低下。
我考虑过的另一个选择是一次性迁移所有内容,然后根据需要编写脚本将副本复制到其他驱动器。这意味着将 2/3 的文件复制两次。
我是否遗漏了任何显而易见的事情?
答案1
我已经使用赛格威几年前的框架。Rsync + sshd 绝对可行。
我还发现了这一点,它看起来可能会使 windows-rsyncing 比以往更容易: http://www.aboutmyip.com/AboutMyXApp/DeltaCopy.jsp
我们通常首先将数据克隆到物理磁盘以尽快完成“第一次同步”,然后使用 rsync 仅通过网络移动增量/差异。
答案2
您可以在新服务器上安装带有 RAID 01 的驱动器,这将允许您:
- 使用每个数据就像在单个驱动器上一样
- 多个驱动器上的数据重新分区由文件系统本身管理(RAID 0)
- 通过文件系统本身管理备份,如果检测到错误,则每个数据都会被复制和恢复(RAID 1)
- 当 RAID 由操作系统本身或主板(如果集成)管理时,具有出色的性能(许多主板都具有此功能)
- 您的文件系统可以轻松扩展,同时使用 RAID 在新驱动器上扩展分区也很容易
- 迁移数据将变得容易,因为 RSync 就像是一个简单的驱动器到驱动器同步
答案3
首先,我认为将它们分布在不同驱动器上是没有道理的,除非它们是不同磁盘的不同阵列,并且性能有所提高。如果它们是同一磁盘/阵列的一部分,你只会让事情变得毫无意义的复杂化。
我的文件服务器刚好超过 2TB,但里面却有 400 万个文件和超过 25 万个文件夹。
我使用文件管理器 (Multi-Commander) 进行了初始复制,并在切换服务器之前以相同的方式进行了另一次刷新同步。实际上,初始复制花费了 4 小时,而刷新仅花费了几分钟,因为大多数文件已经传输完毕。切换的停机时间最短。
Synkron 也是一款适用于 Windows 的优秀工具,但我没有针对极大数量的数据进行测试。