Hacker News 中文摘要

RSS订阅

CDC文件传输 -- CDC File Transfer

文章摘要

Google开源了一个名为cdc-file-transfer的工具,用于在Windows和Linux系统之间同步和流式传输文件。该项目托管在GitHub上,提供跨平台文件传输功能。

文章总结

GitHub - google/cdc-file-transfer 项目概述

项目简介

该项目由Google开发,提供了一套用于在Windows和Linux系统间高效同步与流式传输文件的工具集。核心功能基于内容定义分块(Content Defined Chunking, CDC)技术,尤其采用了FastCDC算法实现文件分块处理。

主要工具

  1. CDC RSync

    • 功能:类似Linux的rsync,但针对已有旧版本文件的场景优化
    • 优势
      • 快速跳过时间戳和大小匹配的文件
      • 使用快速压缩传输
      • 仅传输文件变更部分(基于CDC算法)
    • 性能:测试显示比Cygwin版rsync快3倍,算法速度达1500 MB/s(传统rsync为50 MB/s)
  2. CDC Stream

    • 功能:类似sshfs的只读流式传输工具
    • 特点
      • 在Linux设备上缓存数据
      • 文件变更后仅重新流式传输差异部分
      • 目录元数据快速响应
    • 延迟:约(0.5s + 0.7s × 变更文件总大小GB)
    • 性能:比sshfs快2-5倍

技术原理

  • CDC算法:通过64字节滑动窗口确定可变大小的文件分块边界,相比固定分块能更精准定位变更区域
  • 同步流程
    • 传统rsync:固定分块导致插入数据后所有后续分块变更
    • CDC RSync:仅修改分块及其相邻小范围分块受影响

支持平台

| 工具 | 来源系统 | 目标系统 | |-------------|-------------------|-------------------| | CDC RSync | Windows x8664 | Windows/Linux x8664 | | CDC Stream | Windows x8664 | Linux x8664 |

使用指南

  1. 配置SSH/SFTP

    • 需配置免密登录(推荐密钥认证)
    • 可通过环境变量指定SSH路径:
      bat set CDC_SSH_COMMAND="C:\path\to\ssh.exe" set CDC_SFTP_COMMAND="C:\path\to\sftp.exe"
  2. 常用命令

    • 文件同步
      bash cdc_rsync C:\path\to\file.txt user@linux.device.com:~ cdc_rsync C:\path\to\assets\* user@linux.device.com:~/assets -vr
    • 流式传输
      bash cdc_stream start C:\path\to\assets user@linux.device.com:~/assets cdc_stream stop user@linux.device.com:~/assets
  3. 日志查看

    • CDC Stream服务日志路径:%APPDATA%\cdc-file-transfer\logs
    • 调试模式:添加-vvv参数输出详细日志

构建说明

需分别在Windows和Linux系统执行: ```bash

Linux构建

bazel build --config linux --compilationmode=opt //cdcrsync_server

Windows构建

bazel build --config windows --compilationmode=opt //cdcrsync ```

项目状态

  • 仓库已于2025年2月25日归档(只读状态)
  • 采用Apache-2.0开源协议
  • GitHub数据:3.1k Stars | 98 Forks | 8位贡献者

注:该项目最初为Stadia游戏开发平台设计,用于解决开发者从Windows工作站向Linux云实例传输大型游戏内容的效率问题。

评论总结

以下是评论内容的总结:

  1. 对Stadia技术的看法

    • 正面:认为Stadia技术有长期价值,但遗憾没有自托管版本(评论1:"Nice to see Stadia had some long term benefit")
    • 负面:质疑开发成本是否合理,认为优化可能冗余(评论10:"how many engineering quarters did it take to build this")
  2. 对CDC技术的讨论

    • 技术原理:解释CDC是用于快速增量文件传输的技术(评论2:"fast incremental file transfer")
    • 改进建议:提出FastCDC算法可通过"前瞻"优化(评论9:"can be improved significantly by looking ahead")
    • 应用场景:讨论是否适用于Steam游戏更新(评论4)、Git(评论12)或集成到rsync(评论11)
  3. 对cdc_rsync工具的评价

    • 肯定创新性:开发者称赞其解决分块同步问题的思路(评论3:"This is a cool idea!")
    • 批评局限性:指出仅支持Windows→Linux的局限性和构建工具问题(评论8:"only works on a weird combo"、"uses bazel...abomination")
    • 功能询问:关注是否支持Linux→Linux(评论6)
  4. 其他技术关联讨论

    • 与Steam的对比:建议Steam可借鉴该技术实现秒级游戏启动(评论7:"launch games in seconds")
    • 对Cygwin的质疑:反问是否还有人使用(评论5)

关键引用保留:
- 评论1(英文):"It’s a shame they don’t make a self hosted version"
- 评论8(英文):"Why???? How hard is it to write platform-independent code"
- 评论9(英文):"FastCDC...can be improved significantly by looking ahead"
- 评论12(英文):"Something like CDC would improve this alot"