CloudDrive2 클라우드 드라이브 관리
로컬 CloudDrive2 gRPC 서비스를 통해 클라우드 드라이브(115/바이두网盘/迅雷/로컬 디렉토리)의 파일 작업 및 시스템 관리를 수행합니다. 서비스 주소 127.0.0.1:19798, 이미 로그인되어 있으며 인증은 자동으로 완료됩니다.
전제 조건
- 서비스가 상시 실행 중이며 시작할 필요 없음
- 인증 자동: 우선순위
CD2_TOKEN/CLOUDDRIVEAPI환경 변수 → 로컬/opt/clouddrive2/config/api_tokens.json의 API token →GET token.txt. 일반적으로 바로 사용 가능합니다. - 도구 디렉토리:
/root/.openclaw/workspace/skills/clouddrive2/cd2.py— 범용 호출기, 전체 227개 RPC 지원cd2cmd.py— 자주 사용하는 명령어 편리한 래퍼gen/proto/— 생성된 Python gRPC 클라이언트(수정 금지)clouddrive.proto— 최신 proto 정의(1.0.17)docs/— 공식 gRPC 문서 스냅샷(오류 시 참고서)
공식 문서 참고서
- 로컬 스냅샷:
docs/CloudDrive2_gRPC_API_Guide_zh-CN.md(공식 업데이트 시 자동 동기화) - 오류/필드 조회 시 우선 참고: 메서드명, 요청/응답 필드, 열거형 값, 일반적인 오류 설명이 모두 포함됨
- 온라인 버전: https://www.clouddrive2.com/api/CloudDrive2_gRPC_API_Guide.html
- 자동 업데이트: 매주 월요일마다 공식 문서/proto 변경 사항을 자동 감지하여 업데이트가 있을 경우 클라이언트를 자동 재생성하고 세 곳(이 작업 복사본,
~/.agents/skills/clouddrive2, GitHubeutopiazen/clouddrive2-skill)을 동기화하며, 변경 요약은scripts/cd2doc-watch/changes/에 기록됩니다.
사용법
A. 빠른 명령어(cd2cmd.py, 자주 사용하는 작업 우선)
cd /root/.openclaw/workspace/skills/clouddrive2
python3 cd2cmd.py ls /115open # 디렉토리 목록: 이름<TAB>크기<TAB>유형
python3 cd2cmd.py ls / --refresh # 캐시 새로고침 강제
python3 cd2cmd.py find /115open 영화 # 퍼지 검색
python3 cd2cmd.py info /115open/xx.mkv # 파일 상세 정보
python3 cd2cmd.py mkdir /115open 새폴더
python3 cd2cmd.py mv /115open/a.mkv /115open/영화 # 이동(기본 rename 충돌 정책)
python3 cd2cmd.py cp /115open/a.mkv /115open/백업 --policy overwrite
python3 cd2cmd.py rm /115open/쓰레기.mkv # 삭제(휴지통)
python3 cd2cmd.py rmperm /115open/쓰레기.mkv # 영구 삭제
python3 cd2cmd.py rn /115open/a.mkv b.mkv # 이름 변경
python3 cd2cmd.py dl /115open/a.mkv # 다운로드 URL + curl/wget
python3 cd2cmd.py mounts | clouds | copy-tasks # 마운트 포인트/클라우드 드라이브/복사 작업
python3 cd2cmd.py dl-tasks | ul-tasks # 다운로드/업로드 큐
python3 cd2cmd.py backups # 백업 상태
python3 cd2cmd.py settings | acct | tokens # 설정/계정/토큰
python3 cd2cmd.py token-create 이름 --perm allow_read allow_list
python3 cd2cmd.py unlock /path 비밀번호 [--permanent]
python3 cd2cmd.py stat # 시스템 정보
B. 임의 RPC(cd2.py) — 문서의 모든 기능
python3 cd2.py <RpcName> [field=value ...] [--json|--raw|--no-auth|--list]
- 필드명은 camelCase 사용(문서와 일치), 중첩은
.사용:subField=value - 값은 JSON으로 파싱(숫자/bool/배열 자동 변환), 스트리밍 메서드는 자동 집계
--list는 전체 227개 메서드명 출력- 자주 사용하는 예시:
python3 cd2.py GetSubFiles path=/115open forceRefresh=true
python3 cd2.py FindFileByPath parentPath=/115open path=/115open/영화/xxx.mkv
python3 cd2.py GetSearchResults searchFor=영화 path=/ fuzzyMatch=true
python3 cd2.py CreateFolder parentPath=/115open folderName=새디렉토리
python3 cd2.py RenameFile theFilePath=/115open/a.mkv newName=b.mkv
python3 cd2.py MoveFile theFilePaths=/115open/a.mkv destPath=/115open/영화 conflictPolicy=Rename
python3 cd2.py CopyFile theFilePaths=/115open/a.mkv destPath=/115open/백업 conflictPolicy=Skip
python3 cd2.py DeleteFiles path=/115open/쓰레기1.mkv path=/115open/쓰레기2.mkv
python3 cd2.py GetMountPoints
python3 cd2.py GetAllCloudApis
python3 cd2.py GetDownloadUrlPath path=/115open/a.mkv preview=false
python3 cd2.py GetCopyTasks
python3 cd2.py BackupGetAll
python3 cd2.py GetAccountStatus
python3 cd2.py ListTokens
python3 cd2.py GetSystemSettings
주요 개념
- 경로 접두사(클라우드 드라이브 루트):
/115open,/百度网盘,/迅雷云盘,/mnt(로컬 디스크),/CD2(로컬 /ssd/CD2) - 충돌 정책
conflictPolicy:Overwrite=0 / Rename=1 / Skip=2 - 클라우드 드라이브 목록:
python3 cd2.py GetAllCloudApis - 마운트 포인트: 기본적으로
/mnt/115open만 마운트됨,GetMountPoints로 확인 - 삭제는 기본적으로 휴지통으로 이동됨;
DeleteFilesPermanently/rmperm만 영구 삭제 - 다운로드:
GetDownloadUrlPath가 조합된 URL 반환(directUrl우선, 없으면downloadUrlPath에{SCHEME}/{HOST}/{PREVIEW}플레이스홀더 포함되어 치환 필요); 주소는127.0.0.1:19798사용 - 대용량 파일 작업(클라우드 드라이브 간 이동/복사)은 백그라운드 작업으로 생성되며,
GetCopyTasks로 추적
인증 문제 해결
No valid auth token→ 인증서 파일/환경 변수 누락,api_tokens.json존재 여부 확인- 2FA 메시지 →
CD2_TOTP필요 또는 API token 사용 - 공개 메서드(GetSystemInfo/GetToken/Login 등)는 인증 불필요,
--no-auth추가
검증
각 작업 수행 후 결과 필드를 통해 성공 여부를 확인해야 합니다:
- 생성/이동/복사/삭제 →
FileOperationResult반환 (success/errorMessage포함) - 목록/검색 → 반환된 항목 수와 대상 확인
- 작업 실패 시
errorMessage를 먼저 확인한 후, 재시도 또는 작업 상태 조회 결정