Files
sbackup/docs/readme/README_ko.md
T
xiatianxuan 8f2bcdf8fa v2.0.0: 多目标备份 + S3云存储 + 完整性校验 + 9语言国际化
feat: v2.0.0 — 多目标备份 + S3云存储 + 审计日志 + 9语言国际化
2026-06-20 14:01:43 +08:00

27 KiB

Sbackup

Python License PyPI Tests Platform

가볍고 효율적인 폴더 백업 도구로, CLI를 통해 백업 전략을 손쉽게 관리할 수 있습니다.

English | Deutsch | Espanol | Francais | Portugues | Pycckuu | 日本語 | 한국어 | 中文


소개

Sbackup는 CLI를 통해 백업 전략을 추가, 삭제, 조회할 수 있는 가벼운 폴더 백업 도구입니다. 폴더의 최종 수정 시간을 기준으로 백업이 필요한지 판단하여 데이터를 항상 최신 상태로 유지합니다.

주요 기능

  • 증분 백업: 변경된 폴더만 백업하여 시간과 저장 공간을 절약
  • 다중 포맷 지원: ZIP, tar, tar.gz, tar.bz2, tar.xz, tar.zst, 7z 등 7가지 압축 포맷을 전략별 및 전역 수준에서 독립 지정 가능
  • SFTP 원격 백업: paramiko 기반, 비밀번호/SSH 개인키 인증 및 기본 개인키 자동 감지 지원
  • WebDAV 원격 백업: 표준 라이브러리 urllib 기반, 추가 의존성 없이 견과云/NextCloud/시놀로지 지원
  • S3 클라우드 저장소: minio 기반, 모든 S3 호환 저장소(AWS/MinIO/Alibaba Cloud OSS 등) 지원
  • 다중 대상 병렬 백업: 로컬 + 여러 원격 대상에 동시에 백업, 상호 간섭 없음
  • 백업 복원: 백업 파일에서 지정 디렉토리로 압축 해제 및 복원, 선택적 복원 지원
  • 백업 정리: 오래된 백업 자동 삭제, 수량/시간/일별 보존 전략 지원
  • 암호화 백업: 7z 포맷 비밀번호 암호화 + 전체 포맷 PBKDF2 암호화
  • 예약 백업: 간격 기반 자동 실행, 실시간 파일 감시(watchdog) 지원
  • 백업 이력: 각 백업의 시간, 크기, SHA256 체크섬 기록으로 추적 용이
  • 감사 로그: 모든 백업/복원 작업의 감사 이벤트 기록
  • Pre/Post Hook: 백업 전후 사용자 정의 명령 실행
  • 설정 Profile: 다중 설정 프로필의 저장, 전환, 가져오기/내보내기 지원
  • 크로스 아카이브 검색: 여러 백업 파일에서 일치하는 파일명 검색
  • 데이터 무결성: SHA256 체크섬 생성 및 검증, Reed-Solomon 오류 정정 코드
  • 설정 검증: 설정 매개변수 유효성 자동 검증, 변조 감지
  • 작업 큐: 백업 작업 큐 관리, 추가/실행/취소 지원
  • 압축 벤치마크: 다양한 포맷/레벨의 압축 성능 비교
  • 디스크 공간 예측: 파일 유형별 백업 크기 추정, 대상 공간 확인
  • 국제화: 한국어, 영어, 중국어, 프랑스어, 스페인어, 러시아어, 독일어, 일본어, 포르투갈어 9개 언어 지원
  • Shell 자동 완성: bash/zsh/fish/powershell 자동 완성 지원
  • 가볍고 효율적: 작은 용량, 빠른 시작 속도, 낮은 리소스 사용량
  • 크로스 플랫폼 지원: Windows, macOS, Linux 지원

빠른 시작

설치

pip으로 설치

pip install sbackup-cli

설치 후 sbackup 명령을 사용합니다 (PyPI 패키지명: sbackup-cli, CLI 명령: sbackup).

소스에서 설치

git clone https://github.com/xiatianxuan/sbackup.git
cd sbackup
uv sync

사용 방법

기본 구문

uv run python main.py <command> [options]

사용 가능한 명령

명령 설명
add 백업 전략 추가
rm / remove 백업 전략 삭제
edit 기존 백업 전략 편집
all 모든 백업 전략 조회
save 백업 실행
watch 예약 백업 실행
restore 백업 파일에서 복원
info 백업 파일 상세 정보 조회
diff 원본 디렉토리와 백업 간 차이 비교
verify 백업 파일 무결성 검증
search 백업 내 파일 검색
xsearch 여러 백업 아카이브에서 검색
versions 백업 버전 이력 조회
sftp SFTP 원격 백업 관리
webdav WebDAV 원격 백업 관리
remote 원격 파일 관리 (list/rm)
task 백업 작업 큐 관리
audit 감사 로그 조회
hooks Pre/Post Hook 수동 실행
profile 설정 Profile 관리
rotate 백업 로테이션 정리
clean 오래된 백업 정리
diskcheck 디스크 공간 예측
benchmark 압축 포맷 벤치마크
integrity 백업 디렉토리 무결성 검증
dry-run 백업 파일 선택 미리보기
export / import 백업 전략 내보내기/가져오기
ignore .sbackupignore 파일 생성
schedule 예약 스케줄 설정 내보내기
webhook Webhook 프리셋 설정
config 암호화/검증 설정
report 백업 보고서 생성
completion Shell 자동 완성 스크립트 생성
wizard 대화형 설정 마법사
status 백업 상태 대시보드
version 버전 정보 조회
help 도움말 조회

전역 매개변수

매개변수 설명
--lang zh_CN / en_US / fr_FR / es_ES / ru_RU / de_DE / ja_JP / pt_BR / ko_KR 인터페이스 언어 설정 (config.json에 영구 저장)
--format zip / tar / tar.gz / tar.bz2 / tar.xz / tar.zst / 7z 압축 포맷 설정 (config.json에 영구 저장)
--debug 디버그 로그 활성화

백업 전략 추가

uv run python main.py add <source> <dest> [-i ignore_patterns]

매개변수 설명:

  • source: 백업할 원본 폴더 경로
  • dest: 백업 파일 저장 대상 경로
  • -i, --ignore: 무시할 파일 또는 폴더 이름, 쉼표로 구분 (기본값: .git,__pycache__)
  • --format: 항목별 압축 포맷 (해당 백업 전략에만 적용, 미지정 시 전역 기본값 사용): zip / tar / tar.gz / tar.bz2 / tar.xz / tar.zst / 7z

예시:

# 전역 기본 포맷으로 전략 추가
uv run python main.py add F:/my_folder F:/backup -i node_modules,.git

# 해당 전략에 tar.gz 포맷 지정 (이 폴더 백업 시 항상 tar.gz 사용)
uv run python main.py add F:/my_folder F:/backup --format tar.gz

# 7z 포맷 지정 (해당 폴더만)
uv run python main.py add F:/my_folder F:/backup --format 7z

백업 전략 삭제

uv run python main.py rm <path>

매개변수 설명:

  • path: 백업 전략을 삭제할 원본 폴더 경로

예시:

uv run python main.py rm F:/my_folder

모든 백업 전략 조회

uv run python main.py all

현재 설정된 모든 백업 전략을 표시합니다.

백업 실행

# 기본 포맷(ZIP) 사용
uv run python main.py save

# tar.gz 포맷 사용
uv run python main.py --format tar.gz save

# 최근 5개 백업 파일 유지, 오래된 파일 자동 정리
uv run python main.py save --keep 5

# 7z 포맷으로 암호화
uv run python main.py --format 7z save --password mysecret

# 영어 인터페이스 + tar.xz 포맷
uv run python main.py --lang en_US --format tar.xz save

save 명령 매개변수:

매개변수 기본값 설명
--keep N 0 최근 N개 백업 파일 유지, 0이면 정리 안 함
--password PASSWORD "" 암호화 비밀번호 (7z 포맷만 지원)
--sftp false 백업 완료 후 SFTP 서버에 업로드
--webdav false 백업 완료 후 WebDAV 서버에 업로드

백업 전략에 따라 변경된 폴더를 자동 백업합니다.

예약 백업

# 60분마다 백업 실행
uv run python main.py watch --interval 60

# 2시간마다 백업, 최근 10개 파일 유지
uv run python main.py watch --interval 120 --keep 10

# 예약 백업 + 7z 암호화
uv run python main.py --format 7z watch --interval 60 --password mysecret

watch 명령 매개변수:

매개변수 기본값 설명
--interval MINUTES 60 백업 간격 (분)
--keep N 0 최근 N개 백업 파일 유지
--password PASSWORD "" 암호화 비밀번호 (7z 포맷만 지원)
--sftp false 매 백업 후 SFTP 서버에 업로드
--webdav false 매 백업 후 WebDAV 서버에 업로드

Ctrl+C를 눌러 예약 백업을 중지합니다.

백업 복원

uv run python main.py restore <backup_file> <target_dir>

매개변수 설명:

  • backup_file: 백업 파일 경로 (.zip / .tar / .tar.gz / .tar.bz2 / .tar.xz / .tar.zst / .7z 지원)
  • target_dir: 복원 대상 디렉토리

예시:

uv run python main.py restore F:/backup/my_folder.tar.gz F:/restored
uv run python main.py restore F:/backup/my_folder.7z F:/restored
uv run python main.py restore F:/backup/my_folder.tar.zst F:/restored

SFTP 원격 백업

# ============ 빠른 시작 (권장) ============
# 1. SFTP 설정 (SSH 개인키 자동 감지, 수동 지정 불필요)
sbackup sftp config --host 192.168.1.100 --user admin --remote-path /backups

# 2. 연결 테스트
sbackup sftp test

# 3. 백업 실행 및 업로드
sbackup save --sftp

# ============ 인증 방식 ============

# 방식 1: 개인키 자동 감지 (권장)
# 시스템이 자동으로 ~/.ssh/id_ed25519 -> id_rsa -> id_ecdsa 순서로 시도
sbackup sftp config --host 192.168.1.100 --user admin

# 방식 2: 비밀번호 인증
sbackup sftp config --host 192.168.1.100 --user admin --password secret

# 방식 3: 개인키 지정
sbackup sftp config --host 192.168.1.100 --user admin --key-file ~/.ssh/id_rsa

# 방식 4: 개인키 + 패스프레이즈 (대화형 입력)
sbackup sftp config --host 192.168.1.100 --user admin --key-file ~/.ssh/id_rsa

# 방식 5: 개인키 + 패스프레이즈 (명령줄 지정)
sbackup sftp config --host 192.168.1.100 --user admin --key-file ~/.ssh/id_rsa --key-passphrase mykeypass

# ============ 사용 시나리오 ============

# 시나리오 1: 일회성 백업 및 업로드
sbackup save --sftp

# 시나리오 2: 예약 백업 및 자동 업로드 (60분마다)
sbackup watch --interval 60 --sftp

# 시나리오 3: 특정 포맷 백업 + 업로드
sbackup --format tar.gz save --sftp

# 시나리오 4: 암호화 백업 + 업로드
sbackup --format 7z save --password mysecret --sftp

# 시나리오 5: 최근 5개 백업 유지 + 업로드
sbackup save --keep 5 --sftp

# ============ 고급 사용법 ============

# 대화형 설정 (단계별로 모든 매개변수 입력)
sbackup sftp config

# 비대화형 설정 (모든 매개변수를 명령줄에서 지정)
sbackup sftp config --host 192.168.1.100 --port 22 --user admin --password secret --remote-path /backups

# 연결 테스트 및 상세 로그 확인
sbackup --debug sftp test

sftp 하위 명령:

하위 명령 설명 예시
sftp config SFTP 연결 매개변수 설정 (host/port/user/password/key_file/key_passphrase/remote_path) sbackup sftp config --host 192.168.1.100 --user admin
sftp test SFTP 연결 가능 여부 테스트 sbackup sftp test

인증 방식:

방식 매개변수 설명 예시
자동 감지 인증 매개변수 미지정 ~/.ssh/id_ed25519 -> id_rsa -> id_ecdsa 순서로 자동 시도 (권장) sbackup sftp config --host ... --user ...
비밀번호 인증 --password 비밀번호로 직접 로그인 sbackup sftp config --host ... --user ... --password secret
개인키 인증 --key-file 지정된 SSH 개인키로 로그인 sbackup sftp config --host ... --user ... --key-file ~/.ssh/id_rsa
개인키+패스프레이즈 --key-file + --key-passphrase 개인키에 패스프레이즈가 있는 경우 사용 sbackup sftp config --host ... --user ... --key-file ~/.ssh/id_rsa --key-passphrase mypass

지원되는 개인키 형식: RSA, Ed25519, ECDSA.

크로스 플랫폼 경로 지원:

플랫폼 개인키 경로 예시 설명
Linux/macOS ~/.ssh/id_rsa /home/user/.ssh/id_rsa로 자동 확장
Windows ~/.ssh/id_rsa C:\Users\username\.ssh\id_rsa로 자동 확장
전 플랫폼 절대 경로 전체 경로를 직접 사용

SFTP 설정은 config.json의 sftp 필드에 저장되며, 명령줄 매개변수 또는 대화형 입력으로 설정할 수 있습니다.

버전 정보 조회

sbackup version

설정 파일

Sbackup는 config.json 파일을 통해 사용자 정의 설정을 지원합니다. 설정 파일은 프로젝트 루트 디렉토리에 배치해야 합니다.

설정 항목 설명

{
  "compression_format": "ZIP",
  "compression": {
    "algorithm": "ZIP_DEFLATED",
    "level": 6
  },
  "skip_patterns": [".git", "__pycache__"],
  "data_file": "sbackup.json",
  "lang": "zh_CN",
  "password": "",
  "sftp": {
    "host": "",
    "port": 22,
    "user": "",
    "password": "",
    "key_file": "",
    "key_passphrase": "",
    "remote_path": "/",
    "enabled": false
  }
}
설정 항목 타입 기본값 설명
compression_format string "ZIP" 압축 포맷, 가능한 값: ZIP, TAR, TAR_GZ, TAR_BZ2, TAR_XZ, TAR_ZST, 7Z
compression.algorithm string "ZIP_DEFLATED" ZIP 압축 알고리즘, 가능한 값: ZIP_DEFLATED, ZIP_STORED, ZIP_BZIP2, ZIP_LZMA
compression.level int 6 압축 레벨, 범위 0-9 (0: 압축 없음, 9: 최대 압축)
skip_patterns list [".git", "__pycache__"] 무시할 파일 또는 폴더 패턴 (fnmatch 와일드카드 및 경로 매칭 지원)
data_file string 플랫폼 기본 경로 백업 전략 데이터 파일 저장 경로
lang string "zh_CN" 인터페이스 언어, 가능한 값: zh_CN, en_US, fr_FR, es_ES, ru_RU, de_DE, ja_JP, pt_BR, ko_KR
password string "" 7z 암호화 비밀번호
sftp.host string "" SFTP 서버 주소
sftp.port int 22 SFTP 포트
sftp.user string "" SFTP 사용자 이름
sftp.password string "" SFTP 비밀번호 (비밀번호 인증 시 사용)
sftp.key_file string "" SSH 개인키 파일 경로 (개인키 인증 시 사용, 권장)
sftp.key_passphrase string "" 개인키 패스프레이즈 (있는 경우)
sftp.remote_path string "/" 원격 대상 경로
sftp.enabled bool false SFTP 활성화 여부

설정 예시

tar.bz2 포맷으로 고압축률 백업:

{
  "compression_format": "TAR_BZ2",
  "compression_level": 9,
  "skip_patterns": [".git", "__pycache__", "node_modules", "*.log"],
  "data_file": "backup_strategies.json",
  "lang": "zh_CN"
}

압축 포맷 비교

포맷 확장자 압축률 속도 의존성 적합한 시나리오
ZIP .zip 중간 빠름 표준 라이브러리 범용, Windows 호환성 최고
tar .tar 없음 매우 빠름 표준 라이브러리 순수 아카이브, 외부 압축과 결합
tar.gz .tar.gz 중간 빠름 표준 라이브러리 Linux/macOS 범용
tar.bz2 .tar.bz2 높음 중간 표준 라이브러리 고압축률 아카이브
tar.xz .tar.xz 최고 느림 표준 라이브러리 장기 아카이브, 공간 민감
tar.zst .tar.zst 중상 매우 빠름 zstandard 현대 시나리오, 속도와 압축률 균형
7z .7z 매우 높음 느림 py7zr 최대 압축률, 암호화 지원

WebDAV 원격 백업

WebDAV는 HTTP 기반 파일 프로토콜로, 견과云, NextCloud, 시놀로지 등 주요 클라우드 스토리지를 지원합니다. Python 표준 라이브러리 urllib을 사용하여 추가 의존성이 없습니다.

# ============ 빠른 시작 ============
# 1. WebDAV 설정
sbackup webdav config --url https://dav.jianguoyun.com/dav/ --user user@example.com --password secret

# 2. 연결 테스트
sbackup webdav test

# 3. 백업 실행 및 업로드
sbackup save --webdav

# ============ 사용 시나리오 ============

# 시나리오 1: 일회성 백업 및 업로드
sbackup save --webdav

# 시나리오 2: 예약 백업 및 자동 업로드 (60분마다)
sbackup watch --interval 60 --webdav

# 시나리오 3: 원격 하위 디렉토리 지정
sbackup webdav config --url https://dav.jianguoyun.com/dav/ --user user@example.com --remote-path /backups/sbackup

# 시나리오 4: SFTP와 WebDAV에 동시 업로드
sbackup save --sftp --webdav

# ============ 일반 WebDAV 서비스 주소 ============
# 견과云: https://dav.jianguoyun.com/dav/
# NextCloud: https://your-server/remote.php/dav/files/username/
# 시놀로지: https://your-synology:5006/webdav/

webdav 하위 명령:

하위 명령 설명 예시
webdav config WebDAV 연결 매개변수 설정 (url/user/password/remote_path) sbackup webdav config --url ... --user ...
webdav test WebDAV 연결 가능 여부 테스트 sbackup webdav test
매개변수 기본값 설명
--url URL "" WebDAV 서버 주소 (예: https://dav.jianguoyun.com/dav/)
--user USER "" WebDAV 사용자 이름 (일반적으로 이메일)
--password PASS "" WebDAV 비밀번호 (견과云은 설정에서 앱 비밀번호를 생성해야 함)
--remote-path PATH / 원격 대상 경로

구현 원리

Sbackup는 다음과 같은 방식으로 백업 기능을 구현합니다:

  1. 백업 전략 저장: 백업 전략은 JSON 파일에 저장되며, 폴더 경로, 최종 수정 시간, 대상 경로, 무시 패턴, 항목별 압축 포맷을 포함합니다.
  2. 증분 백업: 폴더의 최종 수정 시간을 비교하여 변경된 폴더만 백업합니다.
  3. 다중 포맷 압축: Python 내장 zipfile 및 tarfile 모듈과 zstandard, py7zr 서드파티 라이브러리를 사용하여 7가지 압축 포맷을 지원합니다.
  4. 항목별 포맷: 각 백업 전략은 독립적인 압축 포맷을 지정할 수 있습니다 (add --format). 전역 --format 설정보다 우선하며, 미지정 시 전역 기본값을 사용합니다.
  5. 백업 정리: 백업 성공 후 대상 디렉토리를 자동 스캔하여 수정 시간순으로 정렬하고, 보존 수량을 초과하는 오래된 파일을 삭제합니다.
  6. 암호화 백업: 7z 포맷은 LZMA2 암호화를 지원하며, --password 매개변수 또는 config.json 설정을 통해 구성합니다.
  7. 예약 백업: watch 명령은 지정된 간격으로 루프에서 백업을 실행하며, Ctrl+C로 안전하게 종료합니다.
  8. 백업 이력: 매 백업 후 타임스탬프, 파일 크기, 파일 수를 기록하며, 최근 100개 기록을 유지합니다.
  9. SFTP 원격 백업: paramiko 라이브러리 기반 SFTP 클라이언트를 구현하며, 연결 테스트, 원격 디렉토리 자동 생성, 진행 표시줄이 포함된 파일 업로드를 지원합니다.

데이터 파일 형식

{
  "/path/to/source/folder": [
    1719235200.0,
    "/path/to/target/folder",
    [".git", "__pycache__"],
    ""
  ],
  "/path/to/another/folder": [
    1719235200.0,
    "/path/to/another/target",
    [".git"],
    "TAR_GZ"
  ],
  "_history": [
    {
      "time": "2026-05-01T12:00:00",
      "source": "/path/to/source/folder",
      "size_mb": 12.5,
      "files_count": 150
    }
  ]
}

각 백업 전략 항목은 4요소 리스트입니다: [mtime, target, skip_patterns, compression_format]

필드 설명
mtime 원본 폴더의 최종 수정 시간 (증분 백업 판단에 사용)
target 백업 파일 저장 대상 경로
skip_patterns 무시할 파일/폴더 패턴 목록
compression_format 항목별 압축 포맷 (빈 문자열이면 전역 기본값 사용)

개발 가이드

테스트 실행

uv run coverage run -m unittest discover -s tests -t . && uv run coverage report -m

코드 구조

sbackup/
├── main.py              # 프로그램 진입점
├── sbackup/
│   ├── __init__.py      # 핵심 함수 내보내기
│   ├── __main__.py      # python -m sbackup 진입점
│   ├── cli.py           # CLI 매개변수 파싱 및 명령 분배 (30+ 명령)
│   ├── config.py        # 설정 로드, 암호화, Webhook/SMTP 설정
│   ├── auto_save.py     # BackupManager 핵심 엔진
│   ├── compression.py   # 7가지 포맷 압축/해제 엔진
│   ├── i18n.py          # 국제화 (9개 언어)
│   ├── sftp.py          # SFTP 원격 백업 클라이언트 (paramiko)
│   ├── webdav.py        # WebDAV 원격 백업 클라이언트 (무의존성)
│   ├── cloud_storage.py # S3 클라우드 저장소 클라이언트 (minio)
│   ├── multi_dest.py    # 다중 대상 병렬 백업
│   ├── handlers.py      # SFTP/WebDAV/Remote/Schedule 명령 처리
│   ├── hooks.py         # Pre/Post Hook 실행
│   ├── audit.py         # 감사 로그 시스템
│   ├── profile.py       # 설정 Profile 관리
│   ├── selective.py     # 선택적 복원
│   ├── cross_search.py  # 크로스 아카이브 검색
│   ├── integrity.py     # SHA256 체크섬
│   ├── rotation.py      # 백업 로테이션 전략
│   ├── dryrun.py        # Dry-run 미리보기
│   ├── diskcheck.py     # 디스크 공간 예측
│   ├── task_queue.py    # 작업 큐 시스템
│   ├── schema.py        # 설정 검증기
│   ├── benchmark.py     # 압축 벤치마크
│   ├── chunked_backup.py# 블록 단위 증분 백업
│   ├── dedup.py         # 파일 단위 SHA256 중복 제거
│   ├── export.py        # 메타데이터 내보내기 (CSV/JSON)
│   ├── monitor.py       # watchdog 파일 시스템 감시
│   ├── lock.py          # 크로스 플랫폼 프로세스 잠금
│   ├── retry.py         # 지수 백오프 재시도
│   ├── ratelimiter.py   # 토큰 버킷 속도 제한기
│   ├── keychain.py      # 시스템 키체인 통합
│   ├── parity.py        # Reed-Solomon 오류 정정 코드
│   ├── completion.py    # Shell 자동 완성
│   ├── wizard.py        # 대화형 설정 마법사
│   └── locales/         # 9개 언어 번역 파일
└── tests/
    └── sbackup/
        └── test_*.py    # 30개 테스트 파일, 모든 모듈 커버

새 기능 추가

  1. sbackup/ 디렉토리에 새 모듈 파일을 생성합니다
  2. sbackup/__init__.py에 새 기능의 함수를 임포트합니다
  3. run() 함수에 새로운 CLI 명령 처리 로직을 추가합니다
  4. tests/ 디렉토리에 대응하는 테스트 파일을 추가합니다

자주 묻는 질문

Q: 백업 전략 파일을 실수로 삭제하면 어떻게 하나요?

A: 백업 전략은 데이터 파일에 저장됩니다. 실수로 삭제한 경우 add 명령을 다시 실행하여 백업 전략을 다시 추가할 수 있습니다.

Q: 이미 추가한 백업 전략을 어떻게 수정하나요?

A: sbackup edit 명령을 사용합니다: sbackup edit <source> --dest <new_dest> --ignore <patterns> --format <fmt>.

Q: 원격 백업을 지원하나요?

A: 지원합니다! 세 가지 원격 백업 방식을 제공합니다:

  • SFTP: sbackup sftp config로 설정, sbackup save --sftp로 업로드
  • WebDAV: sbackup webdav config로 설정, sbackup save --webdav로 업로드 (견과云/NextCloud/시놀로지 지원)
  • S3 클라우드 저장소: config.json에서 cloud 필드 설정, sbackup save --cloud로 업로드
  • 동시에 여러 방식 사용 가능: sbackup save --sftp --webdav --cloud

Q: tar.gz와 ZIP의 차이는 무엇인가요?

A: tar.gz는 Linux/macOS에서 더 일반적이며 압축률이 약간 높습니다. ZIP은 Windows에서 더 범용적이며 호환성이 가장 좋습니다. tar.bz2와 tar.xz는 더 높은 압축률을 제공하지만 속도가 느립니다. tar.zst는 현대 알고리즘으로 속도가 매우 빠르면서 압축률도 양호합니다. 7z는 압축률이 가장 높고 암호화를 지원합니다.

Q: 백업을 어떻게 암호화하나요?

A: 7z 포맷을 사용하고 비밀번호를 설정합니다: uv run python main.py --format 7z save --password yourpassword. 비밀번호를 config.json의 password 필드에 작성할 수도 있습니다.

Q: 오래된 백업을 어떻게 자동 정리하나요?

A: --keep 매개변수를 사용합니다: uv run python main.py save --keep 5로 최근 5개 백업 파일만 유지합니다. 예약 백업 시에도同样 지원합니다: uv run python main.py watch --interval 60 --keep 10.

Q: 예약 백업을 어떻게 설정하나요?

A: watch 명령을 사용합니다: uv run python main.py watch --interval 60으로 60분마다 백업합니다. Ctrl+C로 중지합니다.

Q: 비밀번호 저장이 안전한가요?

A: config.json에 저장된 SFTP 비밀번호와 7z 암호화 비밀번호는 평문으로 저장됩니다. config.json 파일의 접근 권한을 신뢰할 수 있는 사용자로만 제한하세요 (예: chmod 600 config.json). 비밀번호가 포함된 config.json을 버전控制系统에 커밋하지 마세요.

기여 가이드

Issue와 Pull Request를 환영합니다!

  1. 이 저장소를 Fork합니다
  2. 기능 브랜치를 생성합니다 (git checkout -b feature/AmazingFeature)
  3. 변경사항을 커밋합니다 (git commit -m 'Add some AmazingFeature')
  4. 브랜치에 푸시합니다 (git push origin feature/AmazingFeature)
  5. Pull Request를 제출합니다

코드 스타일

이 프로젝트는 PEP 8 및 Google Python Style Guide를 따릅니다. 다음을 준수하세요:

  • 타입 어노테이션 사용
  • Google 스타일 docstrings 준수
  • 모든 단위 테스트 통과

라이선스

이 프로젝트는 GNU GPL v3.0 라이선스를 따릅니다. 자세한 내용은 LICENSE 파일을 참조하세요.

저자

xiatianxuan (CodeSeed)

특별 감사

문의

질문이나 제안이 있으시면 이메일로 연락해 주세요: xiatianxuan2025@163.com


최종 업데이트: 2026년 6월 19일