-
CDC File Transfer는 Google에서 개발한 오픈 소스 도구로, Windows와 Linux 간 파일 동기화 및 스트리밍을 지원함
- 파일을 변경된 부분만 전송하는 Content Defined Chunking (CDC) 기술을 활용해, 기존 rsync 대비 최대 30배 빠른 속도를 달성함
-
cdc_rsync와 cdc_stream 두 가지 주요 도구를 제공하며, 각각 파일 동기화와 실시간 스트리밍 기능을 수행함
- Windows 기반 개발자가 Linux 환경에 효율적으로 파일을 배포·테스트하도록 설계되어, 원격 개발·게임 개발환경에서 탁월함
-
ssh와 sftp 기반 인증을 지원하며, 사용은 직관적이며, 다양한 플랫폼에 맞는 바이너리를 제공함
개요 및 프로젝트의 중요성
-
CDC File Transfer는 Google에서 오픈 소스로 공개한 파일 전송 도구 모음으로, Windows에서 Linux 또는 Windows 간의 파일 동기화 및 스트리밍을 빠르고 효율적으로 처리함
- 이 프로젝트는 Stadia 게임 개발 환경을 위해 만들어졌으며, 기존 scp나 rsync의 한계(느린 전송, 전체 파일 복사, 델타 모드 부재) 를 해결하기 위해 탄생함
- 핵심 기술은 FastCDC라는 Content Defined Chunking 알고리듬이며, 파일 변경 시 실제 변경된 데이터만 전송해 대용량 반복 동기화에 최적화됨
- 오픈 소스임에도 상용 수준의 성능(예: 1500 MB/s 동기화 속도, sshfs 대비 2~5배 빠른 스트리밍)을 제공하며, 클라우드/원격 개발 환경에서 경쟁 서비스보다 확연한 효율을 갖춤
주요 도구 설명
cdc_rsync
- Windows에서 Linux로 파일 동기화하는 도구이며, 기존 리눅스 rsync의 단점을 극복함
-
시간 및 파일 크기가 일치하는 파일은 신속히 건너뛰고, 변경된 파일만 효율적으로 전송함
-
FastCDC를 활용하여, 변경된 데이터의 위치만 감지해 전송함으로써, 최소한의 트래픽과 빠른 전송을 제공함
- 동기화 테스트 결과, Cygwin에서 실행한 rsync보다 약 3배, 표준 리눅스 rsync보다 훨씬 빠른 성능을 보임
-
고속 압축 지원과, 파일을 바이트 단위까지 검증하는 간단하면서도 효율적인 알고리듬 구조를 갖춤
cdc_stream
- Windows의 폴더·파일을 Linux에서 마치 로컬 파일처럼 실시간으로 스트리밍해 접근 가능하게 만듦
- 기존 sshfs 구조와 유사하나, 파일 읽기 속도와 캐시 성능이 최적화되어 있음
-
변경 감지 및 차등 스트리밍을 통해, 변경된 데이터만 재전송하며 메타데이터 처리도 빠름
- Linux 디렉터리는 readonly로 제공, Windows에서 변경된 파일이 거의 즉시(최대 수 초 수준) Linux에 반영됨
- 게임 데이터 등 대용량 파일 접근이 필요한 개발 환경에서, 실제로 sshfs 대비 2~5배의 성능 향상을 보임
지원 플랫폼
- cdc_rsync: Windows x86_64 ↔ Ubuntu 22.04 x86_64 간 주로 지원, 원격 동기화/로컬 동기화 모두 점진적 지원
- cdc_stream: Windows x86_64에서 Ubuntu 22.04 x86_64로의 스트리밍 지원, 반대 방향이나 다른 플랫폼은 미지원
인증/설정 방식
-
ssh.exe 및 sftp.exe를 통한 패스워드 없는 인증 방식(키 기반 인증 권장)
- Windows에서 명령 줄 경로나 환경 변수로 커맨드 세부 경로 지정 가능
- 추가적인 SSH 명령어 옵션, 사용자별 설정 파일(%USERPROFILE%.ssh\config) 활용 가능
- Google 사내 사용자는 별도의 보안 키 기반 인증 환경 변수 제공
사용 예시
cdc_rsync 사용 예시
- 파일 동기화: cdc_rsync C:\path\to\file.txt user@linux.device.com:~
- 와일드카드 및 디렉터리 전체 재귀 동기화 지원: cdc_rsync C:\path\to\assets\* user@linux.device.com:~/assets -r
- 동기화 상태 실시간 확인(-v 옵션), 로컬 파일 간 동기화도 가능
cdc_stream 사용 예시
- 디렉터리 스트리밍 시작: 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 경로 저장
- 상세 로그 및 디버깅 옵션 제공(verbosirty 레벨 JSON 설정)
- cdc_rsync는 콘솔 로그 출력, -vvv, -vvvv로 상세 로그 출력 가능
- 실패한 SSH/SFTP 커맨드 추적 및 직접 실행해 문제 원인 분석 용이
기술 스택 및 운영 정보
- 주요 개발 언어는 C++ , 일부 파이썬/빌드관리용 Starlark
- Apache-2.0 라이선스, 8인 이상의 기여자 보유, GitHub 기준 3.3k stars 달성
- 2023년 이후로는 추가 개발 없이 Archived 상태
요약
-
CDC File Transfer는 Windows-Linux 간의 대용량 파일 및 디렉터리 반복 전송에 있어서 업계 최상위 수준의 효율과 속도를 제공함
-
원격 개발, 게임, 미디어, 데이터 분석 등 크로스플랫폼 작업환경에서 동기화와 스트리밍 과정을 크게 단축시키는 이점이 있음
- 타 동기화/스트리밍 툴 대비 단순성, 빠른 부분 변경 감지, 뛰어난 캐시 기능으로 강력한 경쟁력을 갖춤
- SSH/SFTP 인증, 다양한 명령 줄 또는 설정 파일 기반의 유연한 환경 설정으로 엔지니어가 쉽게 도입 및 운용 가능함
- 소스 코드 열람 및 커스터마이즈가 가능하며, 오픈 소스 커뮤니티에서 이미 높은 평판과 활용도를 기록 중임