文章摘要
Google开源了一个名为cdc-file-transfer的工具,用于在Windows和Linux系统之间同步和流式传输文件。该项目托管在GitHub上,提供跨平台文件传输功能。
文章总结
GitHub - google/cdc-file-transfer 项目概述
项目简介
该项目由Google开发,提供了一套用于在Windows和Linux系统间高效同步与流式传输文件的工具集。核心功能基于内容定义分块(Content Defined Chunking, CDC)技术,尤其采用了FastCDC算法实现文件分块处理。
主要工具
CDC RSync
- 功能:类似Linux的
rsync,但针对已有旧版本文件的场景优化 - 优势:
- 快速跳过时间戳和大小匹配的文件
- 使用快速压缩传输
- 仅传输文件变更部分(基于CDC算法)
- 性能:测试显示比Cygwin版
rsync快3倍,算法速度达1500 MB/s(传统rsync为50 MB/s)
- 功能:类似Linux的
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 |
使用指南
配置SSH/SFTP
- 需配置免密登录(推荐密钥认证)
- 可通过环境变量指定SSH路径:
bat set CDC_SSH_COMMAND="C:\path\to\ssh.exe" set CDC_SFTP_COMMAND="C:\path\to\sftp.exe"
常用命令
- 文件同步:
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
- 文件同步:
日志查看
- CDC Stream服务日志路径:
%APPDATA%\cdc-file-transfer\logs - 调试模式:添加
-vvv参数输出详细日志
- CDC Stream服务日志路径:
构建说明
需分别在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云实例传输大型游戏内容的效率问题。
评论总结
以下是评论内容的总结:
对Stadia技术的看法
- 正面:认为Stadia技术有长期价值,但遗憾没有自托管版本(评论1:"Nice to see Stadia had some long term benefit")
- 负面:质疑开发成本是否合理,认为优化可能冗余(评论10:"how many engineering quarters did it take to build this")
对CDC技术的讨论
- 技术原理:解释CDC是用于快速增量文件传输的技术(评论2:"fast incremental file transfer")
- 改进建议:提出FastCDC算法可通过"前瞻"优化(评论9:"can be improved significantly by looking ahead")
- 应用场景:讨论是否适用于Steam游戏更新(评论4)、Git(评论12)或集成到rsync(评论11)
对cdc_rsync工具的评价
- 肯定创新性:开发者称赞其解决分块同步问题的思路(评论3:"This is a cool idea!")
- 批评局限性:指出仅支持Windows→Linux的局限性和构建工具问题(评论8:"only works on a weird combo"、"uses bazel...abomination")
- 功能询问:关注是否支持Linux→Linux(评论6)
其他技术关联讨论
- 与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"