一次上传到多个 FTP 站点(或文件夹同步)

一次上传到多个 FTP 站点(或文件夹同步)

我目前正在构建一个小型 CDN 拓扑系统,正在寻找在所有服务器中同步某个文件夹内的文件的最佳方法。

我需要能够将文件上传到某个特定的 FTP,并将其复制到所有其他服务器。

需要同步的文件夹大小约为 50GB,我需要在最多 5 分钟内完成同步。

基本上,有两个选项:
1)在所有服务器之间进行某种文件夹同步,并同步该单个文件夹。2
)采用某种一对多 FTP 上传机制

所有服务器上的操作系统都是 Windows 2008 R2。

哪种方法更好?还有其他想法吗?

答案1

文件夹同步是基础操作。在 Windows Server 上,最好的建议是使用 DFS-Replication。它会监视 USN 日志(文件系统更改日志)中的更改并进行复制。

以下是一个简单的概述(我目前正在分析所涉及的底层 I/O):

对 Windows 系统上某个位置的读取访问权限

  1. Readfile() [win32 api]
  2. NTReadFile() [kernel32.dll]
  3. Ntdll.dll [传递给内核模式驱动程序]
  4. ntoskrnl.exe 用于调用子系统
  5. driver.sys 用于调用驱动程序,如下所示:
  6. ntfs.sys(USN 日志受影响)<----------
  7. ftdisk.sys / dmio.sys
  8. 磁盘系统文件
  9. RAID 控制器
  10. 硬盘

当您将数据附加到 DFS-R 成员服务器(“主”)上的文件时会发生什么:

  1. 在主服务器上,将数据附加到文件
  2. 按照目标,检查现有的暂存文件
  3. 在主服务器上,生成校验和并将其复制到 Staging
  4. 针对目标,检查现有文件
  5. 按照目标,检查现有的暂存文件
  6. 在目标上,根据校验和在安装中生成文件
  7. 在目标上,将文件移动到目标文件夹
  8. 在目标上,生成校验和并将其复制到 Staging

它对于成员之间的复制非常高效并且非常有效。

相关内容