Rediacc CLI 참조
개요
**Rediacc CLI** (`rdc`)는 자체 호스팅 인프라(머신, 저장소, 스토리지, 백업 등)를 관리하는 명령줄 인터페이스입니다.
설치
[Rediacc 릴리스 페이지](https://www.rediacc.com)에서 플랫폼에 맞는 최신 바이너리를 다운로드하거나 패키지 매니저를 통해 설치하세요:
# macOS / Linux
curl -fsSL https://www.rediacc.com | sh
# Or use the packaged binary directly
./rdc --help
전역 옵션
모든 명령에서 다음 전역 플래그를 사용할 수 있습니다:
| 플래그 | 설명 |
|---|---|
--output | 출력 형식 (table|json|yaml|csv) |
--config | 이 명령에 특정 구성 사용 |
--lang | 언어 재정의 ({{languages}}) |
--force | 확인 프롬프트 건너뜀 |
1. 에이전트 유틸리티
AI 에이전트를 위한 인트로스펙션 명령어입니다. 주요 하위 명령어: capabilities (모든 명령어와 인수/옵션을 JSON으로 나열), schema (단일 명령어의 상세 스키마), exec (stdin의 JSON 입력으로 명령어 실행, 항상 JSON 반환).
1.1 capabilities
인수 및 옵션과 함께 사용 가능한 모든 명령어를 나열합니다
rdc agent capabilities
1.2 schema
특정 명령어의 상세 스키마를 표시합니다
rdc agent schema [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--command <path> | 대화형 셸 대신 명령 실행 | 예 | - |
1.3 exec
stdin의 JSON 입력으로 명령어를 실행합니다
rdc agent exec [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--command <path> | 대화형 셸 대신 명령 실행 | 예 | - |
1.4 generate-reference
Claude 스킬을 위한 명령어 참조 마크다운을 생성합니다
rdc agent generate-reference
2. 구성 관리
~/.config/rediacc/에 저장된 CLI 설정 파일을 관리합니다. 설정 내 머신, 저장소, 스토리지 백엔드, SSH 키에 대한 CRUD 작업. 주요 하위 명령어: init (이름 지정 설정 생성), show, list, ssh (키 관리), recover (백업에서 복원), prune (오래된 항목 정리). 중첩 그룹: config machine, config repository, config storage, config infra.
구성 파일은 연결 세부 정보 (API URL, 자격 증명, 기본 팀/리전/브리지)를 저장하여 환경 간 빠른 전환을 가능하게 합니다.
2.1 prune
~/.config/rediacc/<config>.json의 로컬 설정 파일에서 불필요한 항목을 제거합니다. 세 가지 버킷이 정리되며 모두 로컬에서만 처리됩니다 (SSH/renet 호출 없음): (1) 앵커 GUID/저장소/머신이 더 이상 활성 설정에 없는 ACME 인증서 캐시 항목; (2) 유예 기간이 만료된 보관된 저장소 (기본값 7일, defaults.pruneGraceDays 참조); (3) 끊어진 교차 참조 (machine→strategy, strategy→repo). 여전히 사용 중인 리소스, 자격증명, 스토리지 토큰, known-hosts는 변경되지 않습니다. 기본 동작은 변경 사항을 적용합니다. 미리 보기만 하려면 --dry-run을 사용하십시오.
rdc config prune [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--dry-run | 설정 파일을 수정하지 않고 제거될 항목을 미리 봅니다. 다른 prune 명령의 기본 비활성 의미론을 따릅니다. | 아니오 | - |
--certs-only | ACME 인증서 캐시 버킷만 처리합니다. 보관 삭제 및 교차 참조 정리를 건너뜁니다. --archives-only 및 --refs-only와 함께 사용할 수 없습니다. | 아니오 | - |
--archives-only | 만료된 보관 삭제만 처리합니다. 인증서 캐시 및 교차 참조 정리를 건너뜁니다. --certs-only 및 --refs-only와 함께 사용할 수 없습니다. | 아니오 | - |
--refs-only | 끊어진 교차 참조만 처리합니다 (machine→strategy, strategy→repo excludes/includes). 인증서 캐시 및 보관을 건너뜁니다. --certs-only 및 --archives-only와 함께 사용할 수 없습니다. | 아니오 | - |
--purge-archived | 유예 기간에 관계없이 모든 보관된 저장소를 삭제합니다 ('rdc config repository purge-archived' 실행과 동일). 보관된 자격증명 중 복원이 필요한 것이 없는 경우에만 사용하십시오. | 아니오 | - |
--grace-days <days> | 이번 실행에 대한 보관 유예 기간 (일 단위)을 재정의합니다. 설정의 defaults.pruneGraceDays로 대체되며 둘 다 설정되지 않은 경우 7을 사용합니다. | 아니오 | - |
2.2 init
새로운 이름 지정 설정 파일을 생성합니다
머신을 직접 추가할 수 있습니다:
rdc config init [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 아니오 | - |
--ssh-key <path> | SSH 개인 키 경로 (예: ~/.ssh/id_rsa) | 아니오 | - |
--renet-path <path> | renet 바이너리 경로 (기본값: PATH의 renet) | 아니오 | - |
--master-password <password> | 마스터 비밀번호로 리소스를 암호화합니다 | 아니오 | - |
-u, --api-url <url> | API 주소 | 아니오 | - |
--server <url> | 계정 서버 URL | 아니오 | - |
2.3 list
모든 설정 파일을 나열합니다
rdc config list
2.4 show
현재 설정 세부 정보를 표시합니다
rdc config show [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--reveal | 민감한 값의 평문을 표시합니다 (대화형 전용) | 아니오 | - |
2.5 delete
설정 파일을 삭제합니다
rdc config delete [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
2.6 set
기본값을 설정합니다 (team, region, bridge)
rdc config set [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--key <key> | 구성 키 | 예 | - |
--value <value> | 구성 값 | 예 | - |
팁: 기본값을 설정하면 모든 명령에 `--team`, `--region`, `--bridge`를 전달하지 않아도 됩니다.
2.7 clear
기본값을 지웁니다 (전체 또는 특정 키)
rdc config clear [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--key <key> | 구성 키 | 아니오 | - |
2.8 recover
백업 (.bak) 파일에서 설정을 복원합니다
rdc config recover [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 아니오 | - |
-y, --yes | 확인 프롬프트 건너뜀 | 아니오 | - |
2.9 set-ssh
현재 설정의 SSH 구성을 업데이트합니다
rdc config set-ssh
2.10 set-renet
renet 바이너리 경로를 설정합니다
rdc config set-renet
2.11 ssh
SSH 키 설정을 관리합니다
set
현재 설정의 SSH 키를 설정합니다
rdc config ssh set [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--key <path> | SSH 개인 키 파일 경로 | 예 | - |
--embed | 경로 저장 대신 키 내용을 설정에 직접 포함합니다 | 아니오 | - |
show
현재 SSH 키 설정을 표시합니다
rdc config ssh show
remove
현재 설정에서 SSH 키를 제거합니다
rdc config ssh remove
2.12 remote
원격 설정 스토리지 연결을 관리합니다
enable
이 설정을 원격 암호화 스토리지에 연결합니다
rdc config remote enable [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--headless | 기기 코드 흐름을 사용합니다 (헤드리스 서버용) | 아니오 | - |
--api-url <url> | 계정 서버 URL | 아니오 | - |
disable
원격 스토리지 연결을 끊고 설정을 로컬에 저장합니다
rdc config remote disable
status
원격 연결 상태를 표시합니다
rdc config remote status
refresh
원격 스토리지에서 설정을 강제로 다시 가져옵니다
rdc config remote refresh
2.13 machine
현재 설정에서 머신을 관리합니다
add
현재 설정에 머신을 추가합니다. SSH 호스트 키를 자동으로 검사합니다. 추가 후 실행하십시오: config machine setup <name>
rdc config machine add [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
--ip <address> | 머신 IP 주소 또는 호스트명 | 예 | - |
--user <username> | SSH 사용자 이름 | 예 | - |
--port <port> | SSH 포트 | 아니오 | 22 |
--datastore <path> | 머신의 데이터스토어 경로 | 아니오 | /mnt/rediacc |
remove
현재 설정에서 머신을 제거합니다
rdc config machine remove [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
list
현재 설정의 머신을 나열합니다
rdc config machine list
scan-keys
현재 설정의 머신에 대한 SSH 호스트 키를 검사합니다
rdc config machine scan-keys [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-m, --machine <name> | 머신 이름 | 아니오 | - |
setup
저장소를 위한 원격 머신을 프로비저닝합니다 (renet 설치, Docker 구성, BTRFS 데이터스토어). 멱등성. 'config machine add' 후 'repo create' 전에 필요합니다
rdc config machine setup [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
--datastore <path> | 원격 머신의 데이터스토어 경로 | 아니오 | /mnt/rediacc |
--datastore-size <size> | 데이터스토어 크기 (예: 95%, 100G) | 아니오 | 95% |
--debug | 디버그 출력 활성화 | 아니오 | - |
set-ceph
머신에 대한 Ceph RBD 설정을 지정합니다
rdc config machine set-ceph [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-m, --machine <name> | 머신 이름 | 예 | - |
--pool <name> | Ceph 풀 이름 (예: rbd) | 예 | - |
--image <name> | RBD 이미지 이름 (예: datastore-prod1) | 예 | - |
--cluster <name> | Ceph 클러스터 이름 | 아니오 | ceph |
2.14 repository
현재 설정에서 저장소 매핑을 관리합니다
add
현재 설정에 저장소 GUID 매핑을 추가합니다
rdc config repository add [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
--guid <guid> | 저장소 GUID (스토리지 백업 파일 이름에서 가져온 UUID) | 예 | - |
--tag <tag> | 저장소 태그 | 아니오 | latest |
--credential <credential> | 저장소 자격증명 (암호화 패스프레이즈) | 아니오 | - |
--network-id <id> | Docker 격리를 위한 네트워크 ID (2816, 2880, ...). 생략 시 자동 할당 | 아니오 | - |
remove
현재 설정에서 저장소 매핑을 제거합니다
rdc config repository remove [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
list
현재 설정의 저장소 GUID 매핑을 나열합니다
rdc config repository list
list-archived
보관된 저장소 자격증명을 나열합니다
rdc config repository list-archived
restore-archived
보관된 저장소 자격증명을 복원합니다
rdc config repository restore-archived [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
--new-name <name> | 새 리소스 이름 | 아니오 | - |
purge-archived
보관된 모든 자격증명을 영구적으로 삭제합니다
rdc config repository purge-archived
2.15 provider
자동화된 머신 프로비저닝을 위한 클라우드 공급자를 관리합니다
add
클라우드 공급자를 추가합니다
rdc config provider add [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
--provider <source> | 알려진 공급자 소스 (예: linode/linode, hetznercloud/hcloud) | 아니오 | - |
--source <source> | 커스텀 OpenTofu 공급자 소스 (예: vultr/vultr) | 아니오 | - |
--token <token> | 클라우드 공급자의 API 토큰 | 예 | - |
--region <region> | 새 머신의 기본 지역 | 아니오 | - |
--type <type> | 기본 인스턴스 유형/크기 | 아니오 | - |
--image <image> | 기본 OS 이미지 | 아니오 | - |
--ssh-user <user> | 새 VM의 SSH 사용자 이름 (기본값: root) | 아니오 | - |
--resource <type> | 커스텀: VM의 OpenTofu 리소스 유형 | 아니오 | - |
--label-attr <attr> | 커스텀: VM 레이블의 속성 이름 | 아니오 | - |
--region-attr <attr> | 커스텀: 지역의 속성 이름 | 아니오 | - |
--size-attr <attr> | 커스텀: 인스턴스 유형의 속성 이름 | 아니오 | - |
--image-attr <attr> | 커스텀: OS 이미지의 속성 이름 | 아니오 | - |
--ipv4-output <attr> | 커스텀: IPv4 주소의 출력 속성 | 아니오 | - |
--ipv6-output <attr> | 커스텀: IPv6 주소의 출력 속성 | 아니오 | - |
--ssh-key-attr <attr> | 커스텀: SSH 키의 속성 이름 | 아니오 | - |
--ssh-key-format <format> | 커스텀: SSH 키 형식 (inline_list 또는 resource_id) | 아니오 | - |
--ssh-key-resource <type> | 커스텀: SSH 키의 OpenTofu 리소스 유형 | 아니오 | - |
remove
클라우드 공급자 설정을 제거합니다
rdc config provider remove [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
list
설정된 클라우드 공급자를 나열합니다
rdc config provider list
2.16 storage
현재 설정에서 스토리지 백엔드를 관리합니다
import
rclone 설정 파일에서 스토리지를 가져옵니다
rdc config storage import [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--file <path> | 파일 경로 | 예 | - |
--name <name> | 이 이름의 섹션만 가져옵니다 | 아니오 | - |
remove
현재 설정에서 스토리지를 제거합니다
rdc config storage remove [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
list
현재 설정의 스토리지를 나열합니다
rdc config storage list
2.17 infra
인프라 설정을 관리합니다 (프록시, DNS, 인증서)
set
머신에 대한 인프라 설정을 지정합니다 (머신별: IP, 도메인, 포트; 공유: 인증서 이메일, CF DNS 토큰)
rdc config infra set [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-m, --machine <name> | 머신 이름 | 예 | - |
--public-ipv4 <ip> | 공용 IPv4 주소 (머신별) | 아니오 | - |
--public-ipv6 <ip> | 공용 IPv6 주소 (머신별) | 아니오 | - |
--base-domain <domain> | 애플리케이션의 기본 도메인 (머신별) | 아니오 | - |
--cert-email <email> | TLS 인증서 알림을 위한 이메일 (머신 간 공유) | 아니오 | - |
--cf-dns-token <token> | ACME DNS-01 챌린지를 위한 Cloudflare DNS API 토큰 (머신 간 공유) | 아니오 | - |
--tcp-ports <ports> | 포워드할 TCP 포트 (쉼표로 구분, 예: 25,143,465) | 아니오 | - |
--udp-ports <ports> | 포워드할 UDP 포트 (쉼표로 구분, 예: 53) | 아니오 | - |
show
머신의 인프라 설정을 표시합니다
rdc config infra show [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-m, --machine <name> | 머신 이름 | 예 | - |
push
인프라 설정을 머신에 푸시합니다 (Traefik 프록시, 라우터, Cloudflare DNS). 먼저 'config infra set <machine>'을 실행하십시오
rdc config infra push [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-m, --machine <name> | 머신 이름 | 예 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
2.18 cert-cache
캐시된 TLS 인증서를 관리합니다
pull
머신에서 TLS 인증서를 다운로드하고 캐시합니다
rdc config cert-cache pull [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-m, --machine <name> | 머신 이름 | 예 | - |
--no-prune | 오래된 네트워크 ID 인증서 정리를 건너뜁니다 | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
push
캐시된 TLS 인증서를 머신에 업로드합니다
rdc config cert-cache push [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-m, --machine <name> | 머신 이름 | 예 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
status
캐시된 인증서 목록을 표시합니다
rdc config cert-cache status
clear
인증서 캐시를 제거합니다
rdc config cert-cache clear
2.19 field
포인터 주소 지정 설정 필드 작업 (get/set/unset/rotate/list). RFC 6901 JSON 포인터 (예: /credentials/cfDnsApiToken).
get
JSON 포인터로 단일 설정 값을 읽습니다. 민감한 필드는 --reveal 없이 가려집니다 (인간 전용).
rdc config field get [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--pointer <pointer> | 필드에 대한 JSON 포인터 (예: /credentials/cfDnsApiToken) | 예 | - |
--reveal | 민감한 값의 평문을 표시합니다 (대화형 TTY 전용; 감사 기록됨) | 아니오 | - |
--digest | 값 대신 SHA-256 다이제스트를 출력합니다 (에이전트와 공유하기 안전합니다) | 아니오 | - |
set
JSON 포인터에서 설정 값을 씁니다. 민감한 경로는 --current가 필요합니다 (지식 게이트).
rdc config field set [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--pointer <pointer> | 필드에 대한 JSON 포인터 (예: /credentials/cfDnsApiToken) | 예 | - |
--new <value> | 새 값 (JSON처럼 보이면 JSON으로 파싱됩니다: {, [, ", true/false/null/숫자) | 예 | - |
--current <value> | 현재 평문 값 -- 민감한 경로 변경 시 필요합니다 (지식 게이트 증명) | 아니오 | - |
unset
JSON 포인터에서 설정 값을 삭제합니다. 민감한 경로는 --current가 필요합니다.
rdc config field unset [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--pointer <pointer> | 필드에 대한 JSON 포인터 (예: /credentials/cfDnsApiToken) | 예 | - |
--current <value> | 현재 평문 값 -- 민감한 경로 삭제 시 필요합니다 | 아니오 | - |
rotate
--current 없이 민감한 값을 교체합니다. 대화형 TTY 전용; 명시적으로 감사 기록됩니다.
rdc config field rotate [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--pointer <pointer> | 민감한 필드에 대한 JSON 포인터 (예: /credentials/cfDnsApiToken) | 예 | - |
--new <value> | 새 값 | 예 | - |
list
등록된 모든 민감도 포인터 템플릿과 해당 종류 및 commit/encrypt 정책을 나열합니다.
rdc config field list [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--sensitive | 민감한 (비공개) 템플릿만 표시합니다 | 아니오 | - |
2.20 edit
$EDITOR에서 활성 설정을 가려진 JSONC 프로젝션으로 엽니다. 인간 전용; 에이전트는 거부됩니다.
rdc config edit [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--reveal | 민감한 값의 평문을 표시합니다 (대화형 TTY 전용; 감사 기록됨) | 아니오 | - |
--dump | 현재 설정을 JSONC로 stdout에 출력합니다 (읽기 전용; 가려진 경우 에이전트에게 안전합니다) | 아니오 | - |
--apply <file> | 편집된 JSONC 파일을 적용합니다 ($EDITOR 실행을 건너뜁니다) | 아니오 | - |
--current-secrets <file> | --apply의 지식 게이트를 위한 pointer→이전 평문 매핑 JSON 파일 | 아니오 | - |
--editor <cmd> | 편집기 명령 재정의 (git 우선순위를 따름: 플래그 > $GIT_EDITOR > git config core.editor > $VISUAL > $EDITOR) | 아니오 | - |
2.21 audit
설정 감사 로그를 검사합니다 (~/.config/rediacc/audit.log.jsonl의 해시 체인 JSONL)
log
최근 감사 항목을 JSON으로 출력합니다
rdc config audit log [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--since <spec> | 이 시간 이후의 항목만 표시합니다 (예: '24h', '7d', ISO 타임스탬프) | 아니오 | - |
--path <glob> | JSON 포인터 글로브로 필터링합니다 (예: /credentials/*) | 아니오 | - |
--actor <kind> | 액터 종류로 필터링합니다 (human|agent) | 아니오 | - |
tail
새 감사 항목을 실시간으로 스트리밍합니다 (중지하려면 Ctrl+C)
rdc config audit tail
verify
모든 감사 항목에 걸친 SHA-256 해시 체인 무결성을 검증합니다
rdc config audit verify
2.22 backup-strategy
이름 지정 백업 전략을 관리합니다 (hot/cold 모드, 대상, 스케줄링)
set
백업 전략을 생성하거나 업데이트합니다
rdc config backup-strategy set [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 전략 이름 (필수) | 예 | - |
--destination <name> | 전략 내 대상 이름 | 아니오 | - |
--storage <name> | 스토리지 설정 이름 (rclone 자격증명) | 아니오 | - |
--cron <expression> | 크론 스케줄 (예: "0 * * * *" 은 매시간) | 아니오 | - |
--mode <mode> | 백업 모드: "hot" (무중단) 또는 "cold" (중지, 스냅샷, 재시작) | 아니오 | - |
--bwlimit <limit> | Rclone 대역폭 제한 (예: "6M", "10M:off", "08:00,3M;22:00,10M") | 아니오 | - |
--include <repos> | 이 저장소만 백업합니다 (쉼표로 구분된 이름) | 아니오 | - |
--exclude <repos> | 백업에서 이 저장소를 제외합니다 (쉼표로 구분된 이름) | 아니오 | - |
--folder <path> | 이 대상에 대한 스토리지 버킷 아래의 하위 폴더 (예: hot, cold) | 아니오 | - |
--enable | 전략 또는 대상을 활성화합니다 | 아니오 | - |
--disable | 전략 또는 대상을 비활성화합니다 | 아니오 | - |
remove
백업 전략 또는 대상을 제거합니다
rdc config backup-strategy remove [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 전략 이름 (필수) | 예 | - |
--destination <name> | 이 대상만 제거합니다 (다른 대상은 유지) | 아니오 | - |
list
모든 백업 전략을 나열합니다
rdc config backup-strategy list
show
백업 전략 세부 정보를 표시합니다
rdc config backup-strategy show [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 전략 이름 (생략 시 모두 표시) | 아니오 | - |
3. 데이터스토어 관리
머신 데이터스토어를 위한 저수준 블록 스토리지 관리 (Ceph RBD 또는 로컬 BTRFS). 일반적으로 초기 머신 설정 또는 머신 간 마이그레이션 시에만 필요합니다. 주요 하위 명령어: init (데이터스토어 생성), status (상태/사용량), fork (다른 머신에 데이터스토어 복제), unfork (스냅샷에서 복원).
3.1 init
머신에서 데이터스토어를 초기화합니다 (로컬 루프 백엔드 또는 Ceph RBD)
rdc datastore init [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-m, --machine <name> | 머신 이름 (Ceph 데이터스토어가 호스팅되는 곳) | 예 | - |
--size <size> | 데이터스토어 크기 (예: 5G, 50G, 100G) | 예 | - |
--backend <type> | 백엔드 유형: local (기본값) 또는 ceph | 아니오 | local |
--pool <name> | Ceph 풀 이름 (기본값: 머신 설정에서, 또는 rbd) | 아니오 | rbd |
--image <name> | Ceph RBD 이미지 이름 (기본값: set-ceph를 통한 머신 설정에서) | 아니오 | - |
--cluster <name> | Ceph 클러스터 이름 (기본값: ceph) | 아니오 | ceph |
--force | 데이터스토어가 이미 존재해도 강제 초기화 (경고: 스토리지 재포맷) | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
3.2 fork
RBD 스냅샷 + 클론을 통해 Ceph 데이터스토어의 로컬 COW 복사본을 생성합니다 (2초 미만). 출력에서 스냅샷/클론 이름을 저장하여 unfork에 사용하세요. 대상 이름당 하나의 포크만 가능합니다; 재포크 전에 unfork 하세요
rdc datastore fork [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-m, --machine <name> | 머신 이름 (Ceph 데이터스토어가 호스팅되는 곳) | 예 | - |
--to <name> | 클론 접미사 (<image>-fork-<name> 이름의 클론을 생성). 포크는 소스 머신에 남습니다 | 예 | - |
--cow-size <size> | COW 백킹 파일 크기 (기본값: 자동, 요청에 따라 증가) | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
3.3 unfork
포크를 정리합니다: COW 언마운트, 클론 제거, 스냅샷 제거
rdc datastore unfork [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-m, --machine <name> | 머신 이름 (Ceph 데이터스토어가 호스팅되는 곳) | 예 | - |
--source <image> | 포크된 원본 RBD 이미지 (config set-ceph --image에서, 예: ds-prod) | 예 | - |
--snapshot <name> | 제거할 스냅샷 (fork 출력의 "Snapshot:" 값, 예: fork-<timestamp>) | 예 | - |
--dest <image> | 제거할 클론 이미지 (fork 출력의 "Clone:" 값, 예: ds-prod-fork-<machine>) | 예 | - |
--pool <name> | Ceph 풀 이름 (기본값: 머신 설정에서) | 아니오 | - |
--mount-point <path> | 언마운트할 포크 마운트 포인트 (기본값: /mnt/rediacc) | 아니오 | - |
--force | 개별 단계가 실패해도 정리를 계속합니다 (예: 언마운트, 스냅샷 제거) | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
3.4 status
데이터스토어 백엔드, 크기, 사용량, 마운트 상태, cow_mode (포크된 경우)를 표시합니다
rdc datastore status [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-m, --machine <name> | 머신 이름 (Ceph 데이터스토어가 호스팅되는 곳) | 예 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
4. 머신 관리
원격 머신 상태를 검사합니다: 시스템 리소스, 실행 중인 컨테이너, systemd 서비스, 배포된 저장소, 상태 진단. 읽기 전용 조회입니다. 저장소를 수정하려면 `repo`를 사용하세요. 주요 하위 명령어: query (--system, --containers, --repositories, --services 필터와 함께 전체 상태), list, create, rename, delete, prune.
4.1 list
머신 목록을 나열합니다
rdc machine list [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-t, --team <name> | 팀 이름 | 아니오 | - |
--search <text> | {{field}}에서 검색 | 아니오 | - |
--sort <field> | 필드로 정렬 | 아니오 | - |
--desc | 내림차순 정렬 | 아니오 | - |
4.2 create
새 머신을 생성합니다
rdc machine create [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
-t, --team <name> | 팀 이름 | 아니오 | - |
-b, --bridge <name> | 브리지 이름 | 아니오 | - |
--vault <json> | JSON 문자열로 된 머신 볼트 데이터 | 아니오 | - |
4.3 rename
머신 이름을 변경합니다
rdc machine rename [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--current-name <name> | 현재 리소스 이름 | 예 | - |
--new-name <name> | 새 리소스 이름 | 예 | - |
-t, --team <name> | 팀 이름 | 아니오 | - |
4.4 delete
머신을 삭제합니다
rdc machine delete [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
-t, --team <name> | 팀 이름 | 아니오 | - |
-f, --force | 확인 프롬프트 건너뜀 | 아니오 | - |
--dry-run | 변경 없이 수행될 작업 표시 | 아니오 | - |
4.5 vault
머신 볼트 관리 (클라우드 어댑터 전용)
rdc machine vault
4.6 vault-status
{{t:cli.commands.machine.vault-status.description}}
rdc machine vault-status [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
-t, --team <name> | 팀 이름 | 아니오 | - |
4.7 update
머신 설정을 업데이트합니다
rdc machine update
4.8 health
CI/CD 파이프라인을 위한 머신 상태를 확인합니다
health 명령은 시스템 메트릭, 컨테이너 상태, 서비스 안정성, 스토리지 정보를 출력합니다 -- CI/CD 파이프라인 검사에 유용합니다.
rdc machine health [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
-t, --team <name> | 팀 이름 | 아니오 | - |
4.9 containers
상태, 상태 확인, 도메인 라우팅과 함께 머신의 컨테이너를 나열합니다. JSON에는 저장소가 이름으로 해석된 전체 컨테이너 세부 정보(원본은 repository_guid), 도메인, autoRoute가 포함됩니다
rdc machine containers [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
-t, --team <name> | 팀 이름 | 아니오 | - |
--health-check | 상태 확인 모드 - 비정상 컨테이너가 있으면 종료 코드 2로 종료 | 아니오 | - |
4.10 services
머신의 rediacc 관리 systemd 서비스를 나열합니다 (이름, 상태, 하위 상태, 재시작 횟수, 메모리, 저장소 이름으로 해석, 원본은 repository_guid). CI/CD에서 실패하거나 재시작 중인 서비스가 있으면 종료 코드 2로 종료하려면 --stability-check을 사용하세요
rdc machine services [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
-t, --team <name> | 팀 이름 | 아니오 | - |
--stability-check | 안정성 확인 모드 - 실패하거나 재시작 중인 서비스가 있으면 종료 코드 2로 종료 | 아니오 | - |
4.11 query
전체 머신 상태를 표시합니다 (인프라, 시스템, 이름/guid 포함 저장소, repository/repository_guid/domain/autoRoute 포함 컨테이너, repository/repository_guid 포함 서비스)
rdc machine query [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
--system | 시스템 정보만 포함 | 아니오 | - |
--repositories | 저장소만 포함 | 아니오 | - |
--containers | 컨테이너만 포함 | 아니오 | - |
--services | 서비스만 포함 | 아니오 | - |
--network | 네트워크 인터페이스만 포함 | 아니오 | - |
--block-devices | 블록 장치만 포함 | 아니오 | - |
--licenses | 저장소 라이선스 상태 포함 | 아니오 | - |
--storage-health | 저장소별 BTRFS 단편화 및 reflink 절감량 표시 | 아니오 | - |
--sync-certs | 쿼리 후 머신에서 ACME 인증서 캐시도 가져오기 | 아니오 | - |
--strict | 컨테이너가 상태 드리프트 임계값을 초과한 경우 비정상 종료 (코드 2) | 아니오 | - |
4.12 vault-status
머신의 파싱된 볼트 상태를 표시합니다
rdc machine vault-status [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
-t, --team <name> | 팀 이름 | 아니오 | - |
4.13 repos
머신에 배포된 저장소를 나열합니다 (이름, GUID, 크기, 마운트 상태, Docker 상태, 컨테이너 수, 디스크 사용량, 수정 날짜, Rediaccfile 존재 여부). JSON은 각 저장소 아래에 컨테이너와 서비스를 중첩합니다. --search로 이름 또는 GUID로 필터링할 수 있습니다
rdc machine repos [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
-t, --team <name> | 팀 이름 | 아니오 | - |
--search <text> | 이름으로 저장소 필터링 | 아니오 | - |
4.14 test-connection
머신에 대한 SSH 연결을 테스트하고 호스트 키를 캡처합니다
rdc machine test-connection [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--ip <address> | 머신 IP 주소 또는 호스트명 | 예 | - |
--user <name> | SSH 사용자 이름 | 예 | - |
-t, --team <name> | 팀 이름 | 아니오 | - |
-b, --bridge <name> | 브리지 이름 | 아니오 | - |
--port <number> | SSH 포트 | 아니오 | 22 |
--password <pwd> | 초기 인증을 위한 SSH 비밀번호 | 아니오 | - |
--datastore <path> | 머신의 데이터스토어 경로 | 아니오 | /mnt/rediacc |
-m, --machine <name> | 머신 이름 (테스트 후 볼트 업데이트용) | 아니오 | - |
--save | 성공적인 테스트 후 known_hosts를 머신 볼트에 저장 | 아니오 | - |
팁: 성공적인 테스트 후 호스트 키를 머신 볼트에 자동으로 저장하려면 `--save-known-hosts`를 사용하세요.
4.15 provision
OpenTofu를 사용하여 클라우드 제공자에서 새 머신을 프로비저닝합니다
rdc machine provision [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
--provider <name> | 클라우드 제공자 이름 (config provider add에서 설정) | 예 | - |
--region <region> | 기본 지역 재정의 | 아니오 | - |
--type <type> | 기본 인스턴스 유형 재정의 | 아니오 | - |
--image <image> | 기본 OS 이미지 재정의 | 아니오 | - |
--ssh-user <user> | 새 VM의 SSH 사용자 이름 (기본값: root) | 아니오 | - |
--base-domain <domain> | 인프라를 위한 기본 도메인 (예: example.com). --infra를 내포합니다 | 아니오 | - |
--no-infra | 인프라 설정 건너뜀 (프록시 + DNS) | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
4.16 deprovision
클라우드 프로비저닝된 머신을 삭제하고 설정에서 제거합니다
rdc machine deprovision [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
--force | 확인 프롬프트 건너뜀 | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
4.17 backup
머신 백업 관리 (예약, 실행, 상태)
list
모든 머신에 바인딩된 백업 전략을 나열합니다
rdc machine backup list
schedule
원격 머신에 백업 일정을 배포합니다 (systemd 타이머)
rdc machine backup schedule [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-m, --machine <name> | 머신 이름 | 예 | - |
--dry-run | 배포하지 않고 생성된 유닛을 미리 봅니다 | 아니오 | - |
--force | 현재 백업이 실행 중이어도 진행합니다 (새 유닛은 다음 틱에 적용됩니다; 실행 중인 호출은 이전 유닛을 유지합니다) | 아니오 | - |
--reset-failed | 성공적인 배포 후 수정된 서비스의 실패 상태를 지웁니다 (기본적으로 꺼져 있으며, 실패 신호를 보존합니다) | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
now
원격 머신에서 즉시 백업을 실행합니다
rdc machine backup now [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-m, --machine <name> | 머신 이름 | 예 | - |
--strategy <name> | 전략 이름 (생략 시 모두 실행) | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
status
원격 머신의 백업 상태 및 타이머 상태를 표시합니다
rdc machine backup status [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-m, --machine <name> | 머신 이름 | 예 | - |
--strategy <name> | 특정 전략의 세부 정보를 표시합니다 | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
cancel
원격 머신에서 실행 중인 백업을 취소합니다
rdc machine backup cancel [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-m, --machine <name> | 머신 이름 | 예 | - |
--strategy <name> | 전략 이름 (생략 시 모두 취소) | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
4.18 prune
머신에서 고아 데이터스토어 리소스와 오래된 스냅샷을 제거합니다. 기본 실행은 renet 내부 데이터스토어 아티팩트(BTRFS 서브볼륨, 잠금 파일, 임시 파일)를 정리합니다. 아래의 선택적 플래그는 점진적으로 더 좁은 저장소 정리를 활성화합니다: --orphaned-repos는 로컬 CLI 설정만을 신호로 사용하고, --prune-unknown은 추가로 renet .interim/state 미러를 참조하여 다른 도구로 생성된 합법적인 포크가 로컬 설정에 없더라도 살아남을 수 있습니다. 두 삭제 경로 모두 마운트 안전 사전 확인을 실행합니다; --force-delete-mounted로 재정의할 수 있습니다.
rdc machine prune [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
--dry-run | 변경 없이 제거될 항목을 표시합니다 | 아니오 | - |
--orphaned-repos | 로컬 CLI 설정에 없는 머신의 모든 저장소 이미지를 삭제합니다. 광범위함 - renet 미러가 올바르게 포크로 식별하더라도 로컬 설정 항목이 없는 다른 도구로 생성된 포크도 제거합니다. 미러를 존중하는 더 좁은 동작에는 --prune-unknown을 사용하세요. | 아니오 | - |
--prune-unknown | renet .interim/state 미러가 분류할 수 없는 저장소만 삭제합니다 (로컬 설정에 없고 포크 표시 미러도 없는 경우). --orphaned-repos보다 엄격하게 더 좁음: 미러가 식별한 포크 없음 설정은 미러가 식별할 때 보존됩니다. 이전 미러 레거시 고아 및 설정 항목이 삭제된 오래된 grand 모두 이 버킷에 해당합니다. | 아니오 | - |
--force-delete-mounted | 마운트 안전 사전 확인을 재정의하고 현재 마운트되어 있거나 실행 중인 Docker 컨테이너가 있는 저장소도 삭제합니다. --force(아카이브 유예 기간만 재정의)와는 별개입니다. --orphaned-repos와 --prune-unknown 모두에 적용됩니다. | 아니오 | - |
--force | 확인 프롬프트 건너뜀 | 아니오 | - |
--grace-days <days> | 최근 보관된 저장소의 유예 기간 (일 단위, 기본값: 7) | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
5. MCP 서버
AI 에이전트와의 통합을 위해 CLI를 Model Context Protocol (MCP) 서버로 노출합니다. 서버는 CLI 명령어를 구조화된 JSON 입출력을 갖는 MCP 도구로 래핑합니다. 주요 하위 명령어: serve (stdio 기반 MCP 서버 시작).
5.1 serve
MCP 서버 시작 (stdio 전송)
rdc mcp serve [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--config <name> | 모든 명령어에 사용할 설정 이름 | 아니오 | - |
--timeout <ms> | 기본 명령어 타임아웃 (밀리초) | 아니오 | 120000 |
--allow-grand | grand (포크가 아닌) 저장소에 대한 파괴적 작업을 허용합니다. 기본값: 포크 전용 모드 | 아니오 | - |
6. 저장소 라이프사이클
머신에서 암호화된 저장소를 배포하고 관리합니다. 주요 하위 명령어: create, up (배포), down (중지), fork (즉시 CoW 클론), delete, push/pull (백업), sync (파일 전송). 수명 주기: repo create → repo up --mount → repo down. 아키텍처, 라우팅, 환경 변수 세부 정보는 rdc --help의 핵심 개념을 참조하십시오.
6.1 mount
저장소를 마운트합니다 (LUKS 컨테이너를 복호화하고 열어 파일 시스템에 접근할 수 있게 합니다). 최초 배포 시, 새 머신으로 'repo push' 후, 또는 'repo unmount' 후에 필요합니다. 'repo up --mount'를 통해서도 수행할 수 있습니다. 볼륨은 명시적으로 마운트 해제될 때까지 마운트된 상태를 유지합니다. 이름을 생략하면 머신의 모든 저장소를 마운트합니다
rdc repo mount [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 아니오 | - |
-m, --machine <name> | 대상 머신 이름 | 예 | - |
--checkpoint | 마운트 후 CRIU 컨테이너 체크포인트를 복원합니다 (저장된 메모리 상태에서 프로세스를 재개합니다). 라이브 마이그레이션을 위해 'repo push --checkpoint' 후 사용합니다 | 아니오 | - |
--no-docker | 마운트 후 Docker 데몬 시작을 건너뜁니다 | 아니오 | - |
--parallel | 저장소를 동시에 시작합니다 | 아니오 | - |
--concurrency <n> | 최대 동시 저장소 수 (기본값: 3) | 아니오 | 3 |
-y, --yes | 일괄 작업에 대한 확인을 건너뜁니다 | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
--skip-router-restart | 바이너리 업데이트 후 라우트 서버 재시작 건너뜀 | 아니오 | - |
6.2 unmount
저장소를 마운트 해제합니다 (LUKS 컨테이너를 닫아 암호화된 파일 시스템을 분리합니다). 서비스를 먼저 중지해야 합니다 ('repo down'). 마운트 해제 후에는 다시 마운트될 때까지 저장소 데이터에 접근할 수 없습니다. 'repo resize' 전에 필요합니다. 이름을 생략하면 머신의 모든 저장소를 마운트 해제합니다
rdc repo unmount [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 아니오 | - |
-m, --machine <name> | 대상 머신 이름 | 예 | - |
--checkpoint | 마운트 해제 전에 CRIU 컨테이너 체크포인트를 생성합니다 (나중에 복원을 위해 실행 중인 프로세스 메모리 상태를 캡처합니다) | 아니오 | - |
--parallel | 저장소를 동시에 시작합니다 | 아니오 | - |
--concurrency <n> | 최대 동시 저장소 수 (기본값: 3) | 아니오 | 3 |
-y, --yes | 일괄 작업에 대한 확인을 건너뜁니다 | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
--skip-router-restart | 바이너리 업데이트 후 라우트 서버 재시작 건너뜀 | 아니오 | - |
6.3 up
저장소를 배포하거나 업데이트합니다 (마운트, renet compose를 호출하는 Rediaccfile up 실행). 프록시 경로는 배포 후 약 3초 후에 활성화됩니다. 완료 시 HTTP 노출 서비스 (rediacc.service_port 레이블)의 URL 패턴을 출력합니다. 최초 배포 또는 포크된 저장소에는 --mount를 사용하십시오. CRIU 체크포인트 복원은 자동으로 감지됩니다. 새로 시작을 강제하려면 --skip-checkpoint를 사용하십시오. 이름을 생략하면 머신의 모든 저장소를 배포합니다
rdc repo up [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 아니오 | - |
-m, --machine <name> | 대상 머신 이름 | 예 | - |
--skip-checkpoint | 체크포인트 데이터가 있더라도 CRIU 체크포인트 복원을 건너뜁니다 (새로 시작 강제) | 아니오 | - |
--tls | 이 저장소에 대한 전용 TLS 인증서를 요청합니다 (포크는 기본적으로 공유 머신 인증서를 사용) | 아니오 | - |
--include-forks | 포크된 저장소도 마운트 및 시작합니다 | 아니오 | - |
--mount-only | 서비스를 시작하지 않고 마운트만 합니다 | 아니오 | - |
--parallel | 저장소를 동시에 시작합니다 | 아니오 | - |
--concurrency <n> | 최대 동시 저장소 수 (기본값: 3) | 아니오 | 3 |
-y, --yes | 일괄 작업에 대한 확인을 건너뜁니다 | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
--skip-router-restart | 바이너리 업데이트 후 라우트 서버 재시작 건너뜀 | 아니오 | - |
--dry-run | 변경 없이 수행될 작업 표시 | 아니오 | - |
6.4 up-all
머신의 모든 저장소를 배포합니다
rdc repo up-all
6.5 down
저장소 Docker 컨테이너를 중지합니다 (renet compose를 통해 Rediaccfile down 실행). 암호화 볼륨은 마운트 해제하지 않습니다. 저장소는 마운트된 상태를 유지하며 'repo up'으로 재시작할 수 있습니다. 중지 후 LUKS 컨테이너도 닫으려면 --unmount를 사용하십시오. 중지 전에 CRIU 프로세스 상태를 저장하려면 --checkpoint를 사용하십시오 (다음 'repo up' 시 자동 복원). 이름을 생략하면 머신의 모든 저장소를 중지합니다
rdc repo down [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 아니오 | - |
-m, --machine <name> | 대상 머신 이름 | 예 | - |
--unmount | 중지 후 마운트도 해제합니다 (LUKS 컨테이너 닫기). 'repo down' 후 'repo unmount'와 동일합니다. 'repo resize' 전 또는 볼륨을 완전히 보호하려면 필요합니다 | 아니오 | - |
--checkpoint | 중지 전에 CRIU 체크포인트를 생성합니다 ('repo up'을 통해 나중에 복원하기 위해 프로세스 메모리 상태를 저장합니다) | 아니오 | - |
-y, --yes | 일괄 작업에 대한 확인을 건너뜁니다 | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
--skip-router-restart | 바이너리 업데이트 후 라우트 서버 재시작 건너뜀 | 아니오 | - |
--dry-run | 변경 없이 수행될 작업 표시 | 아니오 | - |
6.6 status
저장소 상태를 가져옵니다 (마운트 상태, Docker 데몬 실행 여부, 컨테이너 수, 디스크 사용량)
rdc repo status [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
-m, --machine <name> | 대상 머신 이름 | 예 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
--skip-router-restart | 바이너리 업데이트 후 라우트 서버 재시작 건너뜀 | 아니오 | - |
6.7 list
머신의 저장소를 나열합니다
rdc repo list [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-m, --machine <name> | 대상 머신 이름 | 예 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
--skip-router-restart | 바이너리 업데이트 후 라우트 서버 재시작 건너뜀 | 아니오 | - |
6.8 create
새 암호화된 저장소를 생성합니다
rdc repo create [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
-m, --machine <name> | 대상 머신 이름 | 예 | - |
--size <size> | 저장소 크기 (예: 10G, 100G, 1T) | 예 | - |
--no-docker | 생성 후 Docker 데몬 시작을 건너뜁니다 | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
--skip-router-restart | 바이너리 업데이트 후 라우트 서버 재시작 건너뜀 | 아니오 | - |
6.9 delete
저장소를 삭제합니다 (컨테이너, 볼륨, 암호화 이미지를 제거합니다). 설정 항목은 유지됩니다. 'config restore-archived'를 통한 복구를 위해 자격증명을 deletedRepositories로 이동하려면 --archive-config를 사용하십시오
rdc repo delete [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
-m, --machine <name> | 대상 머신 이름 | 예 | - |
--archive-config | 설정 항목을 나중에 복구할 수 있도록 deletedRepositories로 이동합니다 | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
--skip-router-restart | 바이너리 업데이트 후 라우트 서버 재시작 건너뜀 | 아니오 | - |
--dry-run | 변경 없이 수행될 작업 표시 | 아니오 | - |
6.10 fork
저장소의 CoW (Copy-on-Write) 포크를 생성합니다. 포크는 저장소 크기에 관계없이 즉시 완료되며 일정한 시간이 소요됩니다. BTRFS reflink이 기반 이미지를 복제하므로 100 GB 저장소와 1 GB 저장소의 포크가 동일한 시간(약 몇 초)이 걸립니다. 포크는 새 GUID, networkId, IP 범위, 자동 경로 도메인 ({service}-fork-{tag}.{repo}.{machine}.{baseDomain})을 갖으며 완전히 독립적인 복사본입니다. 온라인 포크가 지원되므로 상위 저장소는 계속 실행될 수 있습니다. 포크는 상위의 암호화 자격증명을 자동으로 상속합니다. --checkpoint를 사용하면 포크 전에 CRIU 프로세스 상태를 캡처하며, 포크는 첫 번째 'repo up' 시 자동으로 복원됩니다 (메모리 내 상태가 보존됩니다). 다른 머신으로 포크: (1) repo fork --parent <parent> -m <source> --tag <name>, (2) backup push <name> -m <source> --to-machine <target>, (3) repo up <name> -m <target> --mount. 경고: 포크를 위해 'backup push'만 단독으로 사용하지 마십시오. 동일한 GUID를 가진 원시 복사본이 생성됩니다 (독립적인 포크가 아닙니다). 항상 먼저 포크하여 새 식별자를 얻으십시오. 자동 경로는 저장소 이름을 사용하므로 각 포크는 고유한 도메인을 자동으로 얻습니다.
rdc repo fork [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--parent <name> | 리소스 이름 | 예 | - |
-m, --machine <name> | 대상 머신 이름 | 예 | - |
--tag <name> | 포크의 태그 (name:tag 형태로 생성) | 예 | - |
--checkpoint | 포크 전 소스에서 CRIU 체크포인트를 생성합니다 (포크에서 복원을 위해 프로세스 메모리 상태를 캡처합니다) | 아니오 | - |
--up | 포크 후 서비스를 마운트하고 시작합니다 (fork + mount + up을 하나의 명령으로) | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
--skip-router-restart | 바이너리 업데이트 후 라우트 서버 재시작 건너뜀 | 아니오 | - |
6.11 takeover
grand 저장소의 데이터를 포크의 데이터로 교체합니다. grand는 자신의 식별자 (GUID, networkId, 도메인, 자동 시작, 백업 체인)를 유지하지만 포크의 업그레이드된 데이터를 갖게 됩니다. 이전 프로덕션 데이터는 백업 포크로 보존됩니다. 사용 사례: 포크에서 업그레이드 테스트 → 검증 → 프로덕션으로 takeover.
rdc repo takeover [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
-m, --machine <name> | 대상 머신 이름 | 예 | - |
--force | 변경 경고를 건너뜁니다 | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
--skip-router-restart | 바이너리 업데이트 후 라우트 서버 재시작 건너뜀 | 아니오 | - |
6.12 resize
저장소를 오프라인으로 크기를 조정합니다 (확장 및 축소 모두 지원). 저장소를 먼저 마운트 해제해야 합니다 ('repo down --unmount'). 서비스를 중지하지 않고 무중단으로 확장하려면 'repo expand'를 사용하십시오
rdc repo resize [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
-m, --machine <name> | 대상 머신 이름 | 예 | - |
--size <size> | 새 저장소 크기 (예: 10G, 100G, 1T) | 예 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
--skip-router-restart | 바이너리 업데이트 후 라우트 서버 재시작 건너뜀 | 아니오 | - |
6.13 expand
마운트된 저장소를 온라인으로 확장합니다 (무중단, 확장만 가능). 컨테이너가 실행 중인 상태에서 LUKS 컨테이너와 파일 시스템을 확장합니다. 축소는 불가합니다. 축소하려면 'repo resize'를 사용하십시오 (마운트 해제 필요)
rdc repo expand [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
-m, --machine <name> | 대상 머신 이름 | 예 | - |
--size <size> | 새 저장소 크기 (예: 10G, 100G, 1T) | 예 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
--skip-router-restart | 바이너리 업데이트 후 라우트 서버 재시작 건너뜀 | 아니오 | - |
6.14 validate
저장소 무결성을 검사합니다 (LUKS 컨테이너, 파일 시스템 일관성, 설정). 예상치 못한 종료 후 또는 백업 상태를 확인하는 데 사용하십시오
rdc repo validate [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
-m, --machine <name> | 대상 머신 이름 | 예 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
--skip-router-restart | 바이너리 업데이트 후 라우트 서버 재시작 건너뜀 | 아니오 | - |
6.15 autostart
부팅 시 저장소 자동 시작을 관리합니다
enable
저장소의 자동 시작을 활성화합니다 (이름을 생략하면 모두 활성화)
rdc repo autostart enable [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 아니오 | - |
-m, --machine <name> | 대상 머신 이름 | 예 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
--skip-router-restart | 바이너리 업데이트 후 라우트 서버 재시작 건너뜀 | 아니오 | - |
disable
저장소의 자동 시작을 비활성화합니다 (이름을 생략하면 모두 비활성화)
rdc repo autostart disable [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 아니오 | - |
-m, --machine <name> | 대상 머신 이름 | 예 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
--skip-router-restart | 바이너리 업데이트 후 라우트 서버 재시작 건너뜀 | 아니오 | - |
list
자동 시작이 활성화된 저장소를 나열합니다
rdc repo autostart list [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-m, --machine <name> | 대상 머신 이름 | 예 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
--skip-router-restart | 바이너리 업데이트 후 라우트 서버 재시작 건너뜀 | 아니오 | - |
6.16 ownership
마운트된 볼륨에서 저장소 디렉터리 소유권 UID를 변경합니다 (기본값: 7111). 컨테이너가 저장소 파일에 접근하기 위해 특정 UID가 필요한 경우 사용하십시오
rdc repo ownership [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
-m, --machine <name> | 대상 머신 이름 | 예 | - |
--uid <uid> | 소유자 UID (기본값: 7111) | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
--skip-router-restart | 바이너리 업데이트 후 라우트 서버 재시작 건너뜀 | 아니오 | - |
6.17 template
배포 템플릿을 관리하고 적용합니다 (docker-compose.yml, Rediaccfile 및 추가 파일을 작성합니다). Rediaccfile은 'docker compose'가 아닌 'renet compose'를 사용해야 합니다. 재시작 정책은 안전합니다 (renet watchdog에 의해 자동 관리). Renet은 network_mode:host, CRIU 기능, rediacc 레이블을 자동으로 주입합니다. 위험한 설정 (privileged, pid:host)은 --unsafe 없이는 차단됩니다. 사용 가능한 내장 템플릿을 보려면 'list'를, 저장소에 배포하려면 'apply'를 사용하십시오
list
CLI에 내장된 모든 배포 템플릿을 나열합니다
rdc repo template list
apply
저장소에 템플릿을 적용합니다. 내장 템플릿 이름 (예: app-postgres)을 사용하거나 커스텀 JSON 템플릿에는 --file을 사용하십시오. Rediaccfile 수명 주기: up()은 컨테이너를 시작하고 (이미지 풀, 설정 생성은 여기서), down()은 중지합니다. 최소 Rediaccfile: up() { renet compose -- pull; renet compose -- up -d; } down() { renet compose -- down; }. 중요: Rediaccfile은 반드시 'renet compose'를 사용해야 합니다. 'docker compose'는 허용되지 않습니다. 환경 변수는 두 가지 수준: (a) Rediaccfile 셸: ${SVCNAME_IP} (예: APP_IP), ${REDIACC_WORKING_DIR}, ${REDIACC_NETWORK_ID}. (b) 컨테이너 내부: renet이 SERVICE_IP와 REDIACC_NETWORK_ID 환경 변수를 자동으로 주입합니다. eBPF 바인드 재작성이 IP 격리를 투명하게 처리하므로 앱은 0.0.0.0에 바인드하고 커널이 올바른 루프백 IP로 재작성합니다. 상태 확인은 localhost를 사용할 수 있습니다. network_mode:host가 주입되며 ports:는 무시됩니다. 스토리지: ${REDIACC_WORKING_DIR}/... 바인드 마운트와 Docker 명명 볼륨 모두 안전합니다. Docker data-root는 암호화된 LUKS 마운트 내부에 있습니다. 재시작 정책: 재시작 정책은 안전합니다. renet이 CRIU 호환성을 위해 자동으로 제거하며 watchdog이 복구를 처리합니다. Compose: network_mode 또는 rediacc.* 레이블을 추가하지 마십시오 (renet이 주입합니다). 멀티 프로젝트: 각 하위 프로젝트를 자체 Rediaccfile이 있는 별도 하위 디렉터리에 배치하십시오. renet이 자동으로 순서대로 검색하고 실행합니다. HTTPS 라우팅: (A) 자동 경로 (fork 친화적, 권장): traefik.enable을 추가하지 마십시오. Renet이 https://{serviceName}.{repoName}.{machineName}.{baseDomain}을 자동 생성합니다. 80이 아닌 포트에는 rediacc.service_port=<port> 레이블을 추가하십시오. 각 포크는 고유한 도메인을 갖습니다. (B) Traefik 레이블 (커스텀 도메인, fork 비친화적): traefik.enable=true, traefik.http.routers.<n>.rule=Host(`domain`), traefik.http.routers.<n>.entrypoints=websecure,websecure-v6, traefik.http.routers.<n>.tls.certresolver=letsencrypt, traefik.http.services.<n>.loadbalancer.server.port=<port>. TCP/UDP의 경우: rediacc.tcp_ports=3306 / rediacc.udp_ports=53
rdc repo template apply [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
-m, --machine <name> | 대상 머신 이름 | 예 | - |
-r, --repository <name> | 저장소 이름 (저장소 환경에 연결) | 예 | - |
--file <path> | 커스텀 템플릿 JSON 파일 경로 ({"version":"2","files":{"Rediaccfile":"...","docker-compose.yml":"..."}}) -- 내장 템플릿 이름을 대체합니다 | 아니오 | - |
--grand <name> | 상위 자격증명 저장소 (이름을 GUID로 자동 확인). 상위와 시크릿을 공유하는 저장소에만 해당 | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
--skip-router-restart | 바이너리 업데이트 후 라우트 서버 재시작 건너뜀 | 아니오 | - |
6.18 push
저장소를 원격 (머신 또는 스토리지)으로 푸시합니다. 이름을 생략하면 모든 저장소를 푸시합니다. 대상 유형은 설정에서 자동으로 감지됩니다. 머신 간 전송 시 암호화된 저장소 이미지가 동일한 GUID로 복사됩니다. 이는 백업/마이그레이션이며 포크가 아닙니다. 독립적인 포크를 생성하려면 먼저 'repo fork'를 사용한 후 푸시하십시오. 푸시 후 배포하려면 --up을 사용하십시오
rdc repo push [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 아니오 | - |
--to <remote> | 대상 머신 또는 스토리지 이름 (설정에서 자동 감지) | 아니오 | - |
--to-machine <machine> | — | 아니오 | - |
--provision <provider> | 대상이 존재하지 않는 경우 클라우드 공급자를 통해 자동으로 대상 머신을 프로비저닝합니다 | 아니오 | - |
--checkpoint | 백업 전에 CRIU 체크포인트를 생성합니다 (라이브 마이그레이션을 위해 프로세스 메모리 상태를 캡처합니다) | 아니오 | - |
--force | 기존 백업을 강제로 덮어씁니다 | 아니오 | - |
--up | 푸시 후 대상 머신에서 저장소를 마운트하고 배포합니다 | 아니오 | - |
--tag <tag> | 버전 관리를 위한 배포 태그 | 아니오 | - |
-m, --machine <name> | 머신 이름 | 예 | - |
-w, --watch | 변경 사항 감시 | 아니오 | - |
--parallel | 저장소를 동시에 시작합니다 | 아니오 | - |
--concurrency <n> | 최대 동시 저장소 수 (기본값: 3) | 아니오 | 3 |
-y, --yes | 일괄 작업에 대한 확인을 건너뜁니다 | 아니오 | - |
--bwlimit <limit> | rsync 전송의 대역폭 제한 (예: "6M", "10M") | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
--skip-router-restart | 바이너리 업데이트 후 라우트 서버 재시작 건너뜀 | 아니오 | - |
6.19 pull
원격 (머신 또는 스토리지)에서 저장소를 가져옵니다. 이름을 생략하면 모든 저장소를 가져옵니다. 소스 유형은 설정에서 자동으로 감지됩니다. 가져온 후 배포하려면 --up을 사용하십시오
rdc repo pull [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 아니오 | - |
--from <remote> | 소스 머신 또는 스토리지 이름 (설정에서 자동 감지) | 아니오 | - |
--from-machine <machine> | — | 아니오 | - |
--force | 기존 저장소를 강제로 덮어씁니다 | 아니오 | - |
--up | 가져온 후 이 머신에서 저장소를 마운트하고 배포합니다 | 아니오 | - |
-m, --machine <name> | 머신 이름 | 예 | - |
-w, --watch | 변경 사항 감시 | 아니오 | - |
--parallel | 저장소를 동시에 시작합니다 | 아니오 | - |
--concurrency <n> | 최대 동시 저장소 수 (기본값: 3) | 아니오 | 3 |
-y, --yes | 일괄 작업에 대한 확인을 건너뜁니다 | 아니오 | - |
--bwlimit <limit> | rsync 전송의 대역폭 제한 (예: "6M", "10M") | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
--skip-router-restart | 바이너리 업데이트 후 라우트 서버 재시작 건너뜀 | 아니오 | - |
6.20 migrate
최소 다운타임으로 저장소를 한 머신에서 다른 머신으로 라이브 마이그레이션합니다. 두 단계 rsync: 실행 중에 대량 전송 후 델타 동기화를 위해 잠시 중지합니다. 프로세스 메모리 마이그레이션을 위한 CRIU 체크포인트와 대상 머신 자동 프로비저닝을 지원합니다
rdc repo migrate [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
--from <machine> | 소스 머신 이름 | 예 | - |
--to <machine> | 대상 머신 이름 | 예 | - |
--provision <provider> | 클라우드 공급자를 통해 대상을 자동 프로비저닝합니다 (예: hetzner, linode) | 아니오 | - |
--bwlimit <limit> | rsync 전송의 대역폭 제한 (예: 10M) | 아니오 | - |
--checkpoint | CRIU 라이브 마이그레이션: 프로세스 메모리 상태를 캡처하고 복원합니다 | 아니오 | - |
--skip-dns | 마이그레이션 후 DNS 레코드 전환을 건너뜁니다 | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
6.21 backup
저장소 백업을 관리합니다
list
원격 (머신 또는 스토리지)에서 사용 가능한 백업을 나열합니다. --path를 생략하면 hot/ 및 cold/ 하위 폴더가 Mode 열과 함께 하나의 표로 병합됩니다.
rdc repo backup list [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--from <remote> | 소스 머신 또는 스토리지 이름 (설정에서 자동 감지) | 아니오 | - |
--from-machine <machine> | — | 아니오 | - |
-m, --machine <name> | 머신 이름 | 예 | - |
--path <subdir> | 스토리지 루트 내의 하위 디렉터리. 생략 시 hot/ 및 cold/ 모두 나열하고 병합합니다. | 아니오 | - |
-w, --watch | 변경 사항 감시 | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
--skip-router-restart | 바이너리 업데이트 후 라우트 서버 재시작 건너뜀 | 아니오 | - |
6.22 sync
저장소와 파일을 동기화합니다 (일괄 push/pull, 파일 전송)
push
저장소를 클라우드 스토리지로 푸시합니다 (이름을 생략하면 모두 푸시)
rdc repo sync push
pull
클라우드 스토리지에서 저장소를 가져옵니다 (이름을 생략하면 모두 가져옴)
rdc repo sync pull
upload
SSH를 통한 rsync로 저장소에 파일을 업로드합니다 (델타 전송). 원격 추가 파일을 삭제하려면 --mirror, 미리 보기는 --dry-run, 패턴을 건너뛰려면 --exclude를 사용하십시오
rdc repo sync upload [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-t, --team <name> | 팀 이름 | 아니오 | - |
-m, --machine <name> | 머신 이름 | 예 | - |
-r, --repository <name> | 저장소 이름 (저장소 환경에 연결) | 아니오 | - |
--local <paths...> | 하나 이상의 로컬 파일 또는 디렉터리 경로 (기본값: 현재 디렉터리) | 아니오 | - |
--remote <path> | 저장소 내 원격 하위 디렉터리 경로 | 아니오 | - |
--remote-file <path> | 업로드할 단일 원격 파일 경로 (저장소 루트 기준 상대 경로). --remote와 상호 배타적. | 아니오 | - |
--mirror | 미러 모드 -- 로컬에 없는 원격 파일 삭제 | 아니오 | - |
--verify | 동기화 후 체크섬으로 파일 검증 | 아니오 | - |
--confirm | 동기화 전 변경 사항 미리 보기 및 확인 요청 | 아니오 | - |
--exclude <patterns...> | 동기화에서 제외할 패턴 | 아니오 | - |
--dry-run | 변경 없이 수행될 작업 표시 | 아니오 | - |
download
SSH를 통한 rsync로 저장소에서 파일을 다운로드합니다 (델타 전송). 로컬 추가 파일을 삭제하려면 --mirror, 미리 보기는 --dry-run, 패턴을 건너뛰려면 --exclude를 사용하십시오
rdc repo sync download [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-t, --team <name> | 팀 이름 | 아니오 | - |
-m, --machine <name> | 머신 이름 | 예 | - |
-r, --repository <name> | 저장소 이름 (저장소 환경에 연결) | 아니오 | - |
--local <path> | 로컬 디렉터리 경로 (기본값: 현재 디렉터리) | 아니오 | - |
--remote <path> | 저장소 내 원격 하위 디렉터리 경로 | 아니오 | - |
--remote-file <path> | 저장소 내 원격 파일 경로 (단일 파일 전송 시 --remote의 대안) | 아니오 | - |
--mirror | 미러 모드 -- 원격에 없는 로컬 파일 삭제 | 아니오 | - |
--verify | 동기화 후 체크섬으로 파일 검증 | 아니오 | - |
--confirm | 동기화 전 변경 사항 미리 보기 및 확인 요청 | 아니오 | - |
--exclude <patterns...> | 동기화에서 제외할 패턴 | 아니오 | - |
--dry-run | 변경 없이 수행될 작업 표시 | 아니오 | - |
status
로컬과 원격 파일을 드라이런으로 비교합니다 (실제 전송 없이 전송될 내용을 표시합니다)
rdc repo sync status [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-t, --team <name> | 팀 이름 | 아니오 | - |
-m, --machine <name> | 머신 이름 | 예 | - |
-r, --repository <name> | 저장소 이름 (저장소 환경에 연결) | 아니오 | - |
--local <path> | 로컬 디렉터리 경로 (기본값: 현재 디렉터리) | 아니오 | - |
--remote <path> | 저장소 내 원격 하위 디렉터리 경로 | 아니오 | - |
--remote-file <path> | 저장소 내 원격 파일 경로 (단일 파일 전송 시 --remote의 대안) | 아니오 | - |
6.23 snapshot
원격 머신에서 BTRFS 스냅샷을 관리합니다
create
저장소의 특정 시점 BTRFS 스냅샷을 생성합니다 (즉각적, 무중단). 커스텀 이름에는 --snapshot-name을 사용하십시오
rdc repo snapshot create
list
원격 머신에서 이름, 생성 날짜, 크기와 함께 BTRFS 스냅샷을 나열합니다
rdc repo snapshot list
delete
원격 머신에서 스냅샷을 삭제합니다
rdc repo snapshot delete
6.24 tunnel
원격 머신에서 컨테이너 포트로 SSH 포트 포워드 터널을 생성합니다. 모호하지 않은 경우 컨테이너와 포트를 자동으로 감지합니다. Ctrl+C를 누를 때까지 터널이 유지됩니다
rdc repo tunnel [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-m, --machine <name> | 머신 이름 | 아니오 | - |
-r, --repository <name> | 저장소 이름 (저장소 환경에 연결) | 아니오 | - |
-c, --container <name> | 컨테이너 이름 (실행 중인 컨테이너가 하나뿐이면 자동 감지) | 아니오 | - |
--port <port> | 포워드할 원격 컨테이너 포트 | 아니오 | - |
--local <port> | 로컬 포트 (기본값: 원격 포트와 동일) | 아니오 | - |
6.25 secret
배포 시 주입되는 저장소별 시크릿을 관리합니다. 쓰기 전용: get은 다이제스트만 반환합니다 (평문 없음). set/unset은 --current 다이제스트 일치 또는 --rotate-secret이 필요합니다. 두 가지 전달 모드: env (REDIACC_SECRET_<KEY>) 및 file (compose `secrets:`를 통해 /var/run/rediacc/secrets/<networkId>/<KEY>의 tmpfs). 시크릿은 암호화된 LUKS 이미지에 저장되지 않으며, 포크는 시크릿을 상속하지 않습니다.
get
시크릿의 SHA-256 다이제스트를 표시합니다. 평문 값은 설계상 반환되지 않습니다 (쓰기 전용). 이미 알고 있는 값을 확인하려면 후속 set/unset에서 --current를 사용하거나 `set --rotate-secret`으로 교체하십시오.
rdc repo secret get [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <repository> | 저장소 이름 (예: mail, mail:staging). 태그가 없으면 :latest가 기본값입니다. | 예 | - |
--key <KEY> | UPPER_SNAKE_CASE의 시크릿 키 (최대 64자). env 모드에서는 REDIACC_SECRET_<KEY>로, file 모드에서는 컨테이너의 /run/secrets/<key>로 노출됩니다. | 예 | - |
list
시크릿 키와 모드를 나열합니다 (값 및 다이제스트는 표시되지 않습니다).
rdc repo secret list [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <repository> | 저장소 이름 (예: mail, mail:staging). 태그가 없으면 :latest가 기본값입니다. | 예 | - |
set
시크릿을 설정하거나 덮어씁니다. 포크는 상속하지 않으므로 포크에 명시적으로 설정하십시오. 에이전트 컨텍스트에서는 --current 다이제스트 일치가 필요합니다 (passwd 방식).
rdc repo secret set [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <repository> | 저장소 이름 (예: mail, mail:staging). 태그가 없으면 :latest가 기본값입니다. | 예 | - |
--key <KEY> | UPPER_SNAKE_CASE의 시크릿 키 (최대 64자). env 모드에서는 REDIACC_SECRET_<KEY>로, file 모드에서는 컨테이너의 /run/secrets/<key>로 노출됩니다. | 예 | - |
--value <value> | 시크릿 값. 셸 이력 노출을 피하려면 `-`를 전달하여 stdin에서 읽으십시오. | 예 | - |
--mode <mode> | 전달 모드: 'env' (컨테이너 env 및 docker inspect에서 표시) 또는 'file' (tmpfs 파일, env에 없음). 기본값: file. | 아니오 | file |
--current <value> | 이전 평문 값 (passwd 방식 사전 조건). 덮어쓰기/삭제 시 필요하며 --rotate-secret과 함께 사용할 수 없습니다. | 아니오 | - |
--rotate-secret | 교체를 인정합니다. --current 사전 조건을 건너뜁니다 (교체로 감사 기록). 이전 값을 확인하지 않고 의도적으로 교체할 때 사용하십시오. | 아니오 | - |
unset
시크릿을 삭제합니다. 에이전트 컨텍스트에서는 --current 다이제스트 일치가 필요합니다.
rdc repo secret unset [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <repository> | 저장소 이름 (예: mail, mail:staging). 태그가 없으면 :latest가 기본값입니다. | 예 | - |
--key <KEY> | UPPER_SNAKE_CASE의 시크릿 키 (최대 64자). env 모드에서는 REDIACC_SECRET_<KEY>로, file 모드에서는 컨테이너의 /run/secrets/<key>로 노출됩니다. | 예 | - |
--current <value> | 이전 평문 값 (passwd 방식 사전 조건). 덮어쓰기/삭제 시 필요하며 --rotate-secret과 함께 사용할 수 없습니다. | 아니오 | - |
--rotate-secret | 교체를 인정합니다. --current 사전 조건을 건너뜁니다 (교체로 감사 기록). 이전 값을 확인하지 않고 의도적으로 교체할 때 사용하십시오. | 아니오 | - |
7. 스토리지 관리
원격 백업 스토리지 제공자 관리 (S3, rclone 호환). CRUD 작업 (목록, 생성, 이름 변경, 삭제), 볼트 설정, 원격 파일 탐색, 고아 백업 정리.
7.1 list
스토리지 제공자 목록을 나열합니다
rdc storage list [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-t, --team <name> | 팀 이름 | 아니오 | - |
--search <text> | {{field}}에서 검색 | 아니오 | - |
--sort <field> | 필드로 정렬 | 아니오 | - |
--desc | 내림차순 정렬 | 아니오 | - |
7.2 create
새 스토리지 제공자를 생성합니다
rdc storage create [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
-t, --team <name> | 팀 이름 | 아니오 | - |
7.3 rename
스토리지 제공자 이름을 변경합니다
rdc storage rename [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--current-name <name> | 현재 리소스 이름 | 예 | - |
--new-name <name> | 새 리소스 이름 | 예 | - |
-t, --team <name> | 팀 이름 | 아니오 | - |
7.4 delete
스토리지 제공자를 삭제합니다
rdc storage delete [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
-t, --team <name> | 팀 이름 | 아니오 | - |
-f, --force | 확인 프롬프트 건너뜀 | 아니오 | - |
--dry-run | 변경 없이 수행될 작업 표시 | 아니오 | - |
7.5 vault
스토리지 볼트 관리 (클라우드 어댑터 전용)
rdc storage vault
7.6 browse
스토리지 시스템의 파일을 탐색합니다
rdc storage browse [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
--path <subpath> | 나열할 하위 디렉터리 경로 | 아니오 | “ |
7.7 prune
더 이상 어떤 설정에도 없는 스토리지의 고아 백업을 삭제합니다. 유예 기간 보호가 있는 다중 설정 안전. rclone 호출은 --machine (실행자)에서 실행되며, 노트북에서 실행되지 않으므로 클라이언트에 rclone을 로컬에 설치할 필요가 없습니다; --machine은 소스가 아닌 실행자입니다.
rdc storage prune [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
-m, --machine <name> | 실행자 머신 - 스토리지에 대해 rclone 목록/삭제 호출을 실행합니다. 클라이언트에 rclone이 로컬에 설치되어 있지 않아도 되므로 필수입니다; 스토리지 자격 증명은 여전히 로컬 설정에서 가져옵니다. | 예 | - |
--dry-run | 변경 없이 수행될 작업 표시 | 아니오 | - |
--force | 확인 프롬프트 건너뜀 | 아니오 | - |
--force-delete-mounted | 마운트 안전 확인을 재정의하고 소스 GUID가 현재 마운트되어 있거나 실행자 머신에서 실행 중인 컨테이너가 있는 경우에도 클라우드 백업을 삭제합니다. --force(아카이브 저장소의 유예 기간만 재정의)와는 별개입니다. | 아니오 | - |
--grace-days <days> | 최근 보관된 저장소의 유예 기간 (일 단위, 기본값: 7) | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
--skip-router-restart | 바이너리 업데이트 후 라우트 서버 재시작 건너뜀 | 아니오 | - |
7.8 pull
클라우드 스토리지에서 머신으로 백업을 가져옵니다
rdc storage pull
8. VS Code 통합
샌드박스 처리된 저장소별 환경을 사용하여 머신 또는 저장소에 VS Code Remote SSH를 엽니다. `term`과 동일한 SSH 연결을 사용하지만 VS Code를 실행합니다. 주요 하위 명령어: connect (또는 위치 축약어), list (설정된 연결 표시), cleanup (SSH 설정 항목 제거), check (VS Code 설치 확인).
8.1 connect
VS Code에서 머신 또는 저장소에 연결합니다
rdc vscode connect [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-t, --team <name> | 팀 이름 | 아니오 | - |
-m, --machine <name> | 머신 이름 | 아니오 | - |
-r, --repository <name> | 저장소 이름 (저장소 환경에 연결) | 아니오 | - |
-f, --folder <path> | 열 원격 폴더 경로 | 아니오 | - |
--url-only | 실행 대신 VS Code URI 출력 | 아니오 | - |
-n, --new-window | 새 VS Code 창에서 열기 | 아니오 | - |
--skip-env-setup | 원격 환경 설정 건너뜀 | 아니오 | - |
--insiders | VS Code Insiders 설정 사용 | 아니오 | - |
8.2 list
설정된 VS Code SSH 연결을 나열합니다
rdc vscode list
8.3 cleanup
VS Code SSH 설정을 제거합니다
rdc vscode cleanup [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--all | 모든 rediacc SSH 구성 제거 | 아니오 | - |
-c, --connection <name> | 특정 연결 제거 | 아니오 | - |
8.4 check
VS Code 설치 및 설정을 확인합니다
rdc vscode check [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--insiders | VS Code Insiders 설정 사용 | 아니오 | - |
9. SSH 터미널 접속
머신 또는 저장소 컨텍스트에 SSH 터미널을 엽니다. DOCKER_HOST, 작업 디렉터리, 환경을 자동으로 설정합니다. --container를 통해 컨테이너 작업 지원: logs, exec, stats, terminal. 단일 명령어를 비대화형으로 실행하려면 `-c`를 사용하세요. VS Code의 경우 `vscode`를 사용하세요.
9.1 connect
SSH를 통해 머신 또는 저장소에 연결합니다
rdc term connect [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-t, --team <name> | 팀 이름 | 아니오 | - |
-m, --machine <name> | 머신 이름 | 아니오 | - |
-r, --repository <name> | 저장소 이름 (저장소 환경에 연결) | 아니오 | - |
-c, --command <cmd> | 대화형 셸 대신 명령 실행 | 아니오 | - |
--container <id> | 특정 Docker 컨테이너에 연결 | 아니오 | - |
--container-action <action> | 컨테이너 작업: terminal, logs, stats, exec | 아니오 | - |
--log-lines <lines> | 표시할 로그 줄 수 (기본값: 50) | 아니오 | - |
--follow | 로그 출력 팔로우 | 아니오 | - |
--external | 외부 터미널 창에서 강제 실행 | 아니오 | - |
--reset-home | 새로 시작을 위해 저장소별 홈 오버레이 초기화 | 아니오 | - |
10. 프로토콜 핸들러
{{scheme}}:// 프로토콜 URL을 등록하고 처리합니다
10.1 register
시스템에 프로토콜 핸들러를 등록합니다
rdc protocol register [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--system | 시스템 전체에 등록 (관리자 권한 필요) | 아니오 | - |
--force | 이미 등록된 경우에도 강제 재등록 | 아니오 | - |
10.2 unregister
시스템에서 프로토콜 핸들러를 등록 취소합니다
rdc protocol unregister [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--system | 시스템 전체 등록 해제 (관리자 권한 필요) | 아니오 | - |
10.3 status
프로토콜 핸들러 등록 상태를 표시합니다
rdc protocol status
10.4 open
{{scheme}}:// URL을 열고 작업을 실행합니다
rdc protocol open <url>
10.5 build
컴포넌트로부터 {{scheme}}:// URL을 생성합니다
rdc protocol build [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--token <token> | 인증 토큰 | 예 | - |
-t, --team <name> | 팀 이름 | 예 | - |
-m, --machine <name> | 머신 이름 | 예 | - |
-r, --repository <name> | 저장소 이름 (저장소 환경에 연결) | 아니오 | - |
-a, --action <action> | 작업 ({{actions}}) | 아니오 | desktop |
-p, --params <key=value...> | 추가 매개변수 | 아니오 | - |
10.6 parse
{{scheme}}:// URL을 파싱하고 컴포넌트를 표시합니다
rdc protocol parse <url>
11. 빠른 명령 (단축키)
11.1 run
경고: 디버깅 및 실험 전용 저수준 명령어입니다. 프로덕션 환경에서는 사용하지 마세요. 더 높은 수준의 명령어(repo up, repo down 등)를 사용하세요. 머신에서 원시 브릿지 함수를 실행합니다.
rdc run
11.2 trace
작업 추적 (단축키: queue trace)
rdc trace
11.3 cancel
작업 취소 (단축키: queue cancel)
rdc cancel
11.4 retry
실패한 작업 재시도 (단축키: queue retry)
rdc retry
12. 구독 관리
라이선스 및 구독 토큰을 관리합니다. 주요 하위 명령어: login (구독 포털로 인증), status (현재 라이선스 상태 표시), activation (머신 슬롯 상태), repo (저장소별 라이선스 관리).
12.1 login
브라우저 또는 API 토큰으로 인증합니다
rdc subscription login [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-t, --token <token> | API 토큰 (rdt_...) | 아니오 | - |
--server <url> | 계정 서버 URL | 아니오 | - |
12.2 logout
저장된 구독 토큰을 지웁니다
rdc subscription logout
12.3 status
구독, 머신 슬롯, 저장소 라이선스 상태를 표시합니다
rdc subscription status
12.4 activation
머신 슬롯 관리
status
하나의 머신에 대한 머신 슬롯 상태를 표시합니다
rdc subscription activation status [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-m, --machine <name> | 머신 이름 | 예 | - |
12.5 repo
저장소 라이선스 관리
status
머신에 설치된 저장소 라이선스를 표시합니다
rdc subscription repo status [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-m, --machine <name> | 머신 이름 | 예 | - |
12.6 refresh
원격 머신의 저장소 라이선스를 갱신합니다
activation
원격 머신의 저장소 라이선스를 갱신합니다
rdc subscription refresh activation [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-m, --machine <name> | 머신 이름 | 예 | - |
repos
원격 머신의 저장소 라이선스를 일괄 갱신합니다
rdc subscription refresh repos [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
-m, --machine <name> | 머신 이름 | 예 | - |
repo
특정 저장소의 저장소 라이선스를 갱신합니다
rdc subscription refresh repo [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--name <name> | 리소스 이름 | 예 | - |
-m, --machine <name> | 머신 이름 | 예 | - |
13. CLI 업데이트
새 CLI 버전을 확인하고 업데이트를 적용합니다. 설치 없이 확인만 하려면 --check-only를, 이미 최신 버전이어도 업데이트하려면 --force를 사용합니다.
rdc update [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--force | 이미 최신 버전이어도 강제 업데이트 | 아니오 | - |
--check-only | 다운로드 없이 업데이트만 확인 | 아니오 | - |
--rollback | 이전 버전으로 롤백 | 아니오 | - |
--status | 자동 업데이트 상태 및 진단 정보 표시 | 아니오 | - |
--channel <channel> | 릴리즈 채널 설정 (stable 또는 edge) | 아니오 | - |
14. 시스템 진단
CLI 환경에 대한 진단 검사를 실행합니다: Node.js 버전, renet 바이너리 가용성, 설정 파일 유효성, SSH 키 상태, 네트워크 연결. 통과/실패 지표와 함께 구조화된 상태 보고서를 출력합니다.
rdc doctor
15. 실험적 VM 작업
KVM/QEMU/Hyper-V를 사용한 로컬 VM 프로비저닝 및 관리 (플랫폼 자동 감지). 원격 머신용이 아닙니다. 원격 머신에는 `machine`을 사용하세요. 주요 하위 명령어: up (VM 시작), down (중지), status (실행 중인 VM 나열), ssh (VM에 연결), setup (필수 조건 설치), check (호스트 준비 상태 확인).
15.1 up
로컬에서 VM 클러스터를 프로비저닝합니다
rdc ops up [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--force | 모든 VM 강제 재시작 | 아니오 | - |
--parallel | VM 병렬 생성 | 아니오 | - |
--basic | 최소 클러스터 (브리지 + 워커 1개) | 아니오 | - |
--lite | VM 프로비저닝 건너뜀 (상태 확인만) | 아니오 | - |
--skip-orchestration | 클러스터 오케스트레이션 건너뜀 | 아니오 | - |
--backend <backend> | 가상화 백엔드 (kvm|qemu, 자동 감지) | 아니오 | - |
--os <name> | VM 운영 체제 (예: ubuntu-24.04, debian-13) | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
15.2 down
VM 클러스터를 삭제합니다
rdc ops down [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--backend <backend> | 가상화 백엔드 (kvm|qemu, 자동 감지) | 아니오 | - |
--debug | 디버그 출력 활성화 | 아니오 | - |
15.3 status
VM 클러스터 상태를 표시합니다
rdc ops status [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--backend <backend> | 가상화 백엔드 (kvm|qemu, 자동 감지) | 아니오 | - |
15.4 ssh
VM에 SSH로 접속합니다
rdc ops ssh [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--vm-id <id> | 가상 머신 ID | 예 | - |
-c, --command <cmd> | 대화형 셸 대신 명령 실행 | 아니오 | - |
--backend <backend> | 가상화 백엔드 (kvm|qemu, 자동 감지) | 아니오 | - |
--user <user> | VM 연결을 위한 SSH 사용자 이름 | 아니오 | - |
15.5 setup
가상화 필수 조건을 설치합니다
rdc ops setup [options]
| 플래그 | 설명 | 필수 | 기본값 |
|---|---|---|---|
--debug | 디버그 출력 활성화 | 아니오 | - |
15.6 check
가상화 필수 조건을 확인합니다
rdc ops check
일반적인 오류 메시지
문제가 발생하면 CLI가 명확한 오류 메시지를 제공합니다:
| 오류 | 의미 |
|---|---|
| 인증이 필요합니다. 실행: rdc auth login | 먼저 로그인해야 합니다 |
| 활성 설정이 없습니다. 다음 명령으로 생성하세요: rdc config init --name <name> | 활성 구성이 없습니다 -- `rdc config init`으로 생성하세요 |
| 권한이 거부되었습니다 | 계정에 필요한 권한이 없습니다 |
| 머신 이름이 필요합니다. --machine <name>을 사용하세요 | `--machine`으로 머신을 지정하거나 구성 기본값을 설정하세요 |
| 팀 이름이 필요합니다. --team을 사용하거나 다음 명령으로 기본값을 설정하세요: rdc config set --key team --value <name> | `--team`으로 팀을 지정하거나 구성 기본값을 설정하세요 |
| 리전 이름이 필요합니다. --region을 사용하거나 다음 명령으로 기본값을 설정하세요: rdc config set --key region --value <name> | `--region`으로 리전을 지정하거나 구성 기본값을 설정하세요 |
출력 형식
모든 목록/조회 명령은 `--output`을 통해 다양한 출력 형식을 지원합니다:
rdc machine list --output json
rdc machine list --output yaml
rdc machine list --output csv
rdc machine list --output table # default
이를 통해 Rediacc CLI를 스크립트, CI/CD 파이프라인, 자동화 워크플로에 쉽게 통합할 수 있습니다.