백업 및 복원 CLI
Koneksi Secure Digital Storage Solution을 위해 개발된, 실시간 변경 감지 기능을 갖춘 자동 디렉토리 백업을 위한 명령줄 도구입니다.
완전한 사용 방법 가이드
앱 기능
실시간 모니터링: 지정된 디렉터리의 변경 사항을 자동으로 감지합니다.
단일 파일 백업: 필요에 따라 개별 파일을 백업합니다.
디렉토리 압축: 백업 전 전체 디렉터리를 tar.gz 아카이브로 압축합니다.
동시 백업: 여러 파일을 병렬로 효율적으로 백업합니다.
스마트 감지: 체크섬을 사용하여 실제로 변경된 파일만 백업합니다.
압축 지원: 저장 공간을 절약하기 위한 gzip/zlib 압축(선택 사항)
암호화 지원: 암호로 보호되는 안전한 백업을 위한 AES-256-GCM 암호화
대용량 파일 지원: 자동 압축 권장 기능을 통해 최대 2GB의 파일을 처리합니다.]
데이터베이스 추적: SQLite 데이터베이스가 모든 백업 기록 및 메타데이터를 추적합니다.
종합 보고: 각 백업 세션에 대한 상세 JSON 보고서를 생성합니다.
전체 복원 기능: 매니페스트 파일에서 백업된 파일을 복원합니다.
자동 추출: 복원 후 tar.gz 아카이브를 자동으로 추출합니다.
자동 복호화: 복원 후 암호화된 파일을 자동으로 복호화합니다.
구성 가능: 디렉터리, 제외 및 성능에 대한 유연한 구성
전제 조건
Go 1.19 이상 (소스에서 빌드하려는 경우)
회원가입을 위한 유효한 이메일 주소
인터넷 연결
운영 체제: Linux, macOS 또는 Windows
설치
옵션 1: 소스에서 빌드
릴리스 페이지에서 해당 플랫폼에 맞는 최신 릴리스를 다운로드하세요.
# Clone the repository
git clone https://github.com/koneksi-tech/koneksi-backup-cli.git
cd koneksi-backup-cli
# Build the CLI
make build
# Or install globally
make install옵션 2: 사전 빌드된 바이너리 다운로드
1단계: 사용자 등록
먼저, Koneksi에 계정을 만들어야 합니다.
koneksi-backup auth register \
--first-name "John" \
--last-name "Doe" \
--email "john.doe@gmail.com" \
--password "StrongPassword123!"예상 출력:
Registration successful!
User ID: usr_1234567890
Email: john.doe@gmail.com
중요: 귀하의 이메일로 인증 코드가 전송되었습니다.
다음 단계:
1. 이메일에서 인증 코드를 확인하세요.
2. 로그인: koneksi-backup auth login -e john.doe@gmail.com -p <비밀번호>
3. 확인: koneksi-backup auth verify <인증 코드> -t <액세스 토큰>2단계: 계정 확인
이메일에서 6자리 인증 코드를 확인한 후, 다음을 수행하세요.
koneksi-backup auth verify "123456" -t "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."예상 출력:
Account verified successfully!
Email: john.doe@gmail.com
Verified: true
이제 다음을 사용하여 API 키를 생성할 수 있습니다:
koneksi-backup auth create-key "My API Key" -t <your-access-token>3단계: API 키 생성
API 키는 백업 서비스에 대한 프로그래밍 방식 액세스에 사용됩니다.
예상 출력:
API Key 'My Backup Service' created successfully!
Client ID:
id_rTFliuxFqbEpjb3NbMGZKm8yKqbA2gejqatMTNwcfE
클라이언트 시크릿 (저장해 주세요. 다시 표시되지 않습니다):
sk_KRZQQJg17Vp7A53YOIg3iwFuuCqaZ7g7ZbVMqK2U
koneksi-backup에서 이러한 자격 증명을 사용하려면:
export KONEKSI_API_CLIENT_ID=<client-id>
export KONEKSI_API_CLIENT_SECRET=<client-secret>
또는 구성 파일에 추가하세요 (~/.koneksi-backup/config.yaml)중요: 클라이언트 ID와 클라이언트 비밀번호를 즉시 저장하세요. 클라이언트 비밀번호는 나중에 검색할 수 없습니다.
4단계: 구성
4.1 환경 변수 설정(빠른 시작)
export KONEKSI_API_CLIENT_ID="id_rTFliuxFqbEpjb3NbMGZKm8yKqbA2gejqatMTNwcfE"
export KONEKSI_API_CLIENT_SECRET="sk_KRZQQJg17Vp7A53YOIg3iwFuuCqaZ7g7ZbVMqK2U"4.2 구성 파일 생성(권장)
# 구성 시작
koneksi-backup init이렇게 하면 ~/.koneksi-backup/config.yaml이 생성됩니다. 자격 증명을 추가하려면 이 파일을 편집하세요.
api:
base_url: "https://uat.koneksi.co.kr"
client_id: "id_rTFliuxFqbEpjb3NbMGZKm8yKqbA2gejqatMTNwcfE"
client_secret: "sk_KRZQQJg17Vp7A53YOIg3iwFuuCqaZ7g7ZbVMqK2U"
directory_id: "" # Leave empty to auto-create
timeout: 30
retry_count: 3
backup:
directories:
- "/home/john/documents"
- "/home/john/projects"
exclude_patterns:
- "*.tmp"
- "*.log"
- ".git"
- "node_modules"
check_interval: 300
max_file_size: 1073741824
concurrent: 5
compression:
enabled: false
level: 6
format: "gzip"
encryption:
enabled: false
password: "" # Or use KONEKSI_BACKUP_ENCRYPTION_PASSWORD env var5단계: 백업 수행
5.1 단일 파일의 일회성 백업
koneksi-backup backup /path/to/important-file.pdf5.2 디렉토리 백업
koneksi-backup backup /home/john/documents5.3 압축 아카이브로 디렉토리 백업
많은 파일이 있는 디렉토리를 더 빠르게 업로드하려면:
koneksi-backup backup /home/john/projects/my-app --compress-dir5.4 연속 모니터링(데몬 모드)
디렉토리를 지속적으로 모니터링하려면 백업 서비스를 시작하세요.
koneksi-backup run백업에 대한 예상 출력:
Starting backup of: /home/john/documents
Backing up file: report.pdf (size: 2458624 bytes)
Backing up file: presentation.pptx (size: 5242880 bytes)
Queued 15 files for backup
Waiting 20s for backups to complete...
Backup Report Summary
====================
Report ID: backup-20250115-143022
Duration: 18.5s
Total Files: 15
Successful: 15
Failed: 0
Total Size: 24.5 MB6단계: 파일 복원
6.1 복원 매니페스트 만들기
먼저 백업 보고서를 찾으세요:
ls ./reports/보고서에서 매니페스트를 만듭니다:
koneksi-backup manifest ./reports/backup-20250115-143022.json restore-manifest.json6.2 파일 복원
koneksi-backup restore restore-manifest.json /home/john/restored-files6.3 자동 추출로 복원
압축된 디렉토리를 백업한 경우:
koneksi-backup restore restore-manifest.json /home/john/restored-files --auto-extract예상 출력:
Starting restore from manifest: restore-manifest.json
Target directory: /home/john/restored-files
Restoring: report.pdf (2.4 MB)
Restoring: presentation.pptx (5.0 MB)
Progress: 15/15 files
Restore completed:
- Total files: 15
- Restored: 15
- Failed: 0
- Duration: 12s암호화
Koneksi Backup CLI는 클라우드에 업로드하기 전에 파일을 보호하기 위해 AES-256-GCM 암호화를 지원합니다. 이를 통해 민감한 데이터의 보안을 한층 강화할 수 있습니다.
암호화를 통한 백업
5.5 백업 중 파일 암호화
# 명령줄 비밀번호를 사용한 암호화 백업
koneksi-backup backup /path/to/sensitive-data --encrypt --encrypt-password "MySecretPass123"
# 환경 변수를 사용하여 암호화된 백업
export KONEKSI_BACKUP_ENCRYPTION_PASSWORD="MySecretPass123"
koneksi-backup backup /path/to/sensitive-data --encrypt
# 디렉토리에 대한 압축과 암호화 결합
koneksi-backup backup /home/john/confidential --compress-dir --encrypt --encrypt-password "MySecretPass123"예상 출력:
Starting backup of: /home/john/confidential
Compressing directory before backup...
Directory compressed to /tmp/backup-123456.tar.gz (size: 5242880 bytes)
Encryption is enabled for this backup
Encrypting file before backup...
File encrypted (size: 5243904 bytes)
Backup completed successfully복호화로 복원
6.4 파일 복원 및 암호 해독
# 명령줄 암호를 사용하여 복호화하여 복원
koneksi-backup restore restore-manifest.json /home/john/restored-files --decrypt --decrypt-password "MySecretPass123"
# 환경 변수를 사용하여 복호화하여 복원
export KONEKSI_BACKUP_ENCRYPTION_PASSWORD="MySecretPass123"
koneksi-backup restore restore-manifest.json /home/john/restored-files --decrypt
# 복호화와 추출을 결합합니다
koneksi-backup restore restore-manifest.json /home/john/restored-files --decrypt --auto-extract --decrypt-password "MySecretPass123"예상 출력:
Starting restore from manifest: restore-manifest.json
Target directory: /home/john/restored-files
Restoring: confidential-data.tar.gz.enc (5.0 MB)
Progress: 1/1 files
Restore completed:
- Total files: 1
- Restored: 1
- Failed: 0
- Duration: 3s
Checking for encrypted files to decrypt...
Decrypting confidential-data.tar.gz.enc...
Decrypted and removed confidential-data.tar.gz.enc
Decrypted 1 file(s)
Checking for tar.gz files to extract...
Extracting confidential-data.tar.gz...
Extracted and removed confidential-data.tar.gz
Extracted 1 archive(s)구성 기반 암호화
구성 파일에서 기본적으로 암호화를 활성화할 수 있습니다.
backup:
encryption:
enabled: true
password: "MySecretPass123" # Or leave empty and use env var암호화를 위한 보안 모범 사례
강력한 비밀번호: 길고 복잡한 문자가 혼합된 비밀번호를 사용하세요.
비밀번호 저장소: 환경 변수 또는 안전한 비밀번호 관리자에 비밀번호를 저장하세요.
비밀번호 커밋 금지: 버전 관리 시스템에 비밀번호를 커밋하지 마세요.
비밀번호 순환: 보안 강화를 위해 암호화된 비밀번호를 정기적으로 변경하세요.
비밀번호 백업: 암호화된 비밀번호를 안전하게 백업하세요.
예: 민감한 금융 데이터 암호화
# 암호화 비밀번호를 안전하게 설정하세요
export KONEKSI_BACKUP_ENCRYPTION_PASSWORD="$(openssl rand -base64 32)"
echo "Save this password securely: $KONEKSI_BACKUP_ENCRYPTION_PASSWORD"
# 암호화를 통한 재무 기록 백업
koneksi-backup backup ~/financial-records --compress-dir --encrypt
# 나중에 동일한 비밀번호로 복원하세요
koneksi-backup restore financial-manifest.json ~/restored-financials --decrypt --auto-extract고급 기능
디렉토리 관리
모든 백업 디렉토리 나열
koneksi-backup dir list새 디렉토리 생성
koneksi-backup dir create "Project Backups" -d "Backup directory for all projects"대용량 파일 처리
100MB보다 큰 파일의 경우 항상 먼저 압축하세요.
# 대용량 파일 압축
gzip large-database.sql
# 백업압축 파일
koneksi-backup backup large-database.sql.gz완전한 예시 워크플로우
등록에서 복원까지의 전체 예는 다음과 같습니다:
# Koneksi 인증 계정이 이미 있는 경우 1~3단계는 선택 사항입니다.
# 1. 등록하다
koneksi-backup auth register \
--first-name "Jane" \
--last-name "Smith" \
--email "jane.smith@gmail.com" \
--password "SecurePass123!"
# 2. 로그인
koneksi-backup auth login \
--email "jane.smith@gmail.com" \
--password "SecurePass123!"
# 액세스 토큰 복사
# 3. 계정 확인(이메일에서 코드 확인)
koneksi-backup auth verify "654321" -t "access-token-here"
# 4. API 키 생성
koneksi-backup auth create-key "Production Backup" -t "access-token-here"
# 클라이언트 ID와 비밀번호를 저장하세요
# 5. 설정하다
export KONEKSI_API_CLIENT_ID="your-client-id"
export KONEKSI_API_CLIENT_SECRET="your-client-secret"
# 6. 압축 및 암호화를 통해 중요한 파일을 백업하세요
export KONEKSI_BACKUP_ENCRYPTION_PASSWORD="SecureBackupPass456!"
koneksi-backup backup ~/important-docs --compress-dir --encrypt
# 7. 복원 매니페스트 생성
koneksi-backup manifest ./reports/backup-*.json my-restore.json
# 8. 복호화 및 추출을 통해 파일을 새 위치로 복원합니다.
koneksi-backup restore my-restore.json ~/restored-docs --decrypt --auto-extract문제 해결
일반적인 문제 및 솔루션
인증 오류
# 자격 증명 테스트
koneksi-backup dir list실패하면 환경 변수나 구성 파일에 유효한 자격 증명이 포함되어 있는지 확인하세요.
이메일 확인 문제
스팸 폴더에서 인증 이메일을 확인하세요.
유효한 이메일 도메인(gmail.com, outlook.com 등)을 사용하고 있는지 확인하세요.
다시 로그인하여 새 인증 코드를 요청하세요.
대용량 파일 업로드 실패
# 구성에서 시간 초과를 늘리세요
api:
timeout: 300 # 5 minutes
# 또는 먼저 파일을 압축하세요
gzip large-file.bin
koneksi-backup backup large-file.bin.gz권한 거부 오류
백업하는 파일에 대한 읽기 권한이 있는지 확인하세요.
ls -la /path/to/backup/directory디버그 모드
자세한 내용은 디버그 로깅을 실행하세요.
koneksi-backup backup /path/to/file --log-level debug모범 사례
정기 백업: 지속적인 보호를 위해 데몬 모드
(koneksi-backup run)를 사용하세요.대용량 파일 압축: 백업 전 100MB 이상의 파일은 항상 압축하세요.
민감한 데이터 암호화: 기밀 파일(금융, 개인, 비즈니스 데이터)에 암호화를 사용하세요.
디렉토리 구성: 프로젝트별로 별도의 백업 디렉터리를 생성하세요.
테스트 복원: 백업이 제대로 작동하는지 확인하기 위해 정기적으로 파일 복원을 테스트하세요.
보안 자격 증명: API 키나 암호화된 비밀번호를 버전 관리 시스템에 커밋하지 마세요.
모니터링 보고서: 백업 보고서에서 오류가 있는지 정기적으로 확인하세요.
암호 관리: 암호화된 비밀번호에는 암호 관리자 또는 보안 저장소를 사용하세요.
도움 받기
기본 제공 도움말:
koneksi-backup --help명령어 도움말:
koneksi-backup backup --help문제 보고: https://github.com/koneksi-tech/koneksi-backup-cli/issues
문서: 자세한 구성 옵션은 README.md를 참조하세요.
다음 단계
이제 설정이 완료되었습니다:
중요 디렉터리에 대한 자동 백업을 구성합니다.
정기적인 백업 실행을 위한 Cron 작업을 설정합니다.
다양한 유형의 데이터에 대한 백업 정책을 생성합니다.
기존 백업 워크플로와 통합합니다.
추가 리소스
GitHub 저장소: https://github.com/koneksi-tech/backup-restore
이슈 트래커: https://github.com/koneksi-tech/backup-restore/issues
릴리스: https://github.com/koneksi-tech/backup-restore/releases
Last updated