# 워크스페이스 파일 다운로드 방법 (제로클로)

아래 가이드는 zeroclaw 워크스페이스(/home/ubuntu/.zeroclaw/agents/zeroclaw/workspace)에서 파일을 로컬로 가져오는 여러 방법을 정리한 것입니다. 상황(파일 크기, 바이너리 여부, 접근 권한)에 따라 적절한 방법을 골라 사용하세요.

> 보안 주의: 개인 키, 비밀번호, 민감 데이터는 절대 노출하지 마세요. 다운로드 전에 파일 내용을 검토하고 필요한 경우 마스킹하세요.

---

## 1) 웹 UI(파일 브라우저)가 제공되는 경우
- 설명: 일부 환경은 브라우저 기반의 파일 브라우저를 통해 파일을 직접 클릭해 다운로드할 수 있습니다.
- 절차:
  1. 워크스페이스 파일 브라우저로 이동
  2. 원하는 파일 선택 → 다운로드 버튼 클릭
- 장점: 간단하고 안전함
- 단점: UI가 없거나 큰 파일(>수백 MB)은 제한될 수 있음

## 2) 단일 텍스트/소형 파일: file_read로 내용 복사
- 방법: `file_read` 도구를 사용해 파일을 읽어 내용을 채팅/출력으로 얻은 뒤 로컬에 붙여넣기
- 예시(텍스트 파일):
  - 요청: file_read with path="path/to/file.txt" (encoding: utf8)
  - 받은 텍스트를 로컬에서 파일로 저장
- 장점: 간단, 텍스트에 적합
- 단점: 바이너리 파일이나 큰 파일에는 부적합

## 3) 바이너리·대용량 파일: base64 인코딩으로 안전 전송
- 아이디어: 서버에서 파일을 zip으로 묶고 base64로 인코딩한 뒤 결과 텍스트를 복사/다운로드하여 로컬에서 디코딩
- 서버(워크스페이스) 명령 예시:
  - 전체 워크스페이스를 zip:
    zip -r workspace_files.zip .
  - zip을 base64로 인코딩:
    base64 workspace_files.zip > workspace_files.zip.b64
  - 또는 한 번에 출력(터미널로 바로 붙여넣기할 경우):
    base64 workspace_files.zip
- 로컬에서 복원(터미널):
  - 받은 base64 텍스트를 workspace_files.zip.b64로 저장한 뒤:
    base64 -d workspace_files.zip.b64 > workspace_files.zip
    unzip workspace_files.zip
- 장점: 바이너리/대용량 전송 가능
- 단점: 매우 큰 파일은 터미널/채팅 전송에 부적합(절반으로 쪼개거나 다른 전송 수단 권장)

## 4) scp/rsync(원격 호스트에 SSH 접근 권한이 있을 때)
- 전제: 워크스페이스 호스트에 SSH 접근 권한이 있고 포트/방화벽이 허용되는 경우
- 예시:
  - 로컬로 복사:
    scp ubuntu@<server>:/home/ubuntu/.zeroclaw/agents/zeroclaw/workspace/path/to/file ./
  - rsync(증분):
    rsync -avz ubuntu@<server>:/home/ubuntu/.zeroclaw/agents/zeroclaw/workspace/ ./local-workspace/
- 장점: 신뢰성 높고 대용량에 적합
- 단점: SSH 접근·인증 필요, 보안 정책 확인 필수

## 5) Git 저장소인 경우: git push/pull 이용
- 방법: 워크스페이스가 git repo이면 원격(repo)에 커밋·푸시 후 로컬에서 pull
- 절차:
  1. git add/commit
  2. git push origin main
  3. 로컬에서 git pull
- 장점: 변경 이력 관리, 안전
- 단점: 민감정보 포함될 경우 주의

## 6) API/도구(관리자 제공) 사용
- 일부 배포환경은 다운로드용 API(파일 전송 엔드포인트) 또는 대시보드가 제공됩니다. 관리자 문서를 확인하세요.

---

## 권장 워크플로우(중소기업 개발자 대상)
1. 우선 작은 텍스트 파일은 2) 방법(file_read)으로 빠르게 확인.
2. 여러 파일 또는 바이너리라면 3)로 zip+base64 생성 후 전송(또는 4) scp 사용).
3. 민감 정보는 절대 노출 금지. 필요 시 파일 내 민감값을 제거한 복사본 생성.

---

## 문제 해결 팁
- 다운로드가 실패하면: 파일 크기 확인(ls -lh), 네트워크/방화벽 정책 확인, 관리자에게 직접 전송 요청
- 파일이 너무 크면: `split`로 분할 → 각각 base64 인코딩 → 로컬에서 결합
  - 예시(서버): split -b 50M workspace_files.zip workspace_files.part.
  - 로컬에서 cat workspace_files.part.* > workspace_files.zip

---

원하시면 이 문서를 직접 워크스페이스 루트에 저장하거나(zip 스크립트 포함), 실제 파일을 묶어 base64로 인코딩해 제가 출력해 드릴게요. 어떤 방식으로 진행할까요? 🦀
