Files

29 KiB

Sbackup

Python License PyPI Tests Platform

Ferramenta leve e eficiente para backup de pastas via linha de comando, ajudando você a gerenciar facilmente suas estratégias de backup.

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


Introducao

Sbackup e uma ferramenta leve de backup de pastas que permite adicionar, remover e visualizar estrategias de backup via linha de comando. Ela utiliza a data de ultima modificacao da pasta para decidir se o backup precisa ser realizado, garantindo que seus dados estejam sempre atualizados.

Recursos

  • Backup incremental: faz backup apenas das pastas que foram alteradas, economizando tempo e espaco de armazenamento
  • Suporte a multiplos formatos: suporta ZIP, tar, tar.gz, tar.bz2, tar.xz, tar.zst e 7z, com configuracao global e por entrada
  • Backup remoto via SFTP: baseado na biblioteca paramiko, suporta autenticacao por senha/chave SSH com deteccao automatica de chave padrao
  • Backup remoto via WebDAV: baseado na biblioteca padrao urllib, zero dependencias extras, compativel com JianguoCloud/NextCloud/Synology
  • Armazenamento em nuvem S3: baseado na biblioteca minio, suporta todos os armazenamentos compativeis com S3 (AWS/MinIO/Alibaba Cloud OSS, etc.)
  • Backup paralelo para multiplos destinos: faz backup simultaneamente para local + multiplos destinos remotos, sem interferencia entre eles
  • Restauracao de backup: suporta descompactacao e restauracao de arquivos de backup para um diretorio especificado, com restauracao seletiva
  • Limpeza de backups: remove backups antigos automaticamente, com politicas de retencao por quantidade/tempo/diaria
  • Backup criptografado: suporta criptografia por senha no formato 7z + criptografia PBKDF2 para todos os formatos
  • Backup agendado: execucao automatica em intervalos definidos, com monitoramento de arquivos em tempo real (watchdog)
  • Historico de backups: registra o tempo, tamanho e checksum SHA256 de cada backup para rastreabilidade
  • Log de auditoria: registra eventos de auditoria de todas as operacoes de backup/restauracao
  • Pre/Post Hook: executa comandos personalizados antes e depois do backup
  • Perfis de configuracao: suporta salvamento, alternancia, importacao e exportacao de multiplos perfis de configuracao
  • Busca entre arquivos: busca nomes de arquivos correspondentes em multiplos arquivos de backup
  • Integridade dos dados: geracao e verificacao de checksum SHA256, codigos de correcao de erros Reed-Solomon
  • Validacao de configuracao: validacao automatica dos parametros de configuracao, deteccao de adulteracao
  • Fila de tarefas: gerencia a fila de tarefas de backup, com suporte a adicao, execucao e cancelamento
  • Benchmark de compressao: compara o desempenho de compressao entre diferentes formatos/niveis
  • Estimativa de espaco em disco: estima o tamanho do backup por tipo de arquivo e verifica o espaco no destino
  • Internacionalizacao: suporta chines, ingles, frances, espanhol, russo, alemao, japones, portugues e coreano
  • Autocompletar no shell: suporta autocompletar em bash/zsh/fish/powershell
  • Leve e eficiente: tamanho pequeno, inicializacao rapida, baixo consumo de recursos
  • Suporte multiplataforma: suporta Windows, macOS e Linux

Inicio Rapido

Instalacao

Instalando via pip

pip install sbackup-cli

Apos a instalacao, use o comando sbackup (nome do pacote PyPI e sbackup-cli, comando CLI e sbackup).

Instalando a partir do codigo-fonte

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

Como Usar

Sintaxe basica

uv run python main.py <comando> [opcoes]

Comandos disponiveis

Comando Descricao
add Adiciona uma estrategia de backup
rm / remove Remove uma estrategia de backup
edit Edita uma estrategia de backup existente
all Exibe todas as estrategias de backup
save Executa o backup
watch Executa backups agendados
restore Restaura a partir de um arquivo de backup
info Exibe detalhes do arquivo de backup
diff Compara diferencas entre o diretorio de origem e o backup
verify Verifica a integridade do arquivo de backup
search Busca arquivos no backup
xsearch Busca entre multiplos arquivos de backup
versions Exibe o historico de versoes do backup
sftp Gerenciamento de backup remoto via SFTP
webdav Gerenciamento de backup remoto via WebDAV
remote Gerenciamento de arquivos remotos (list/rm)
task Gerenciamento da fila de tarefas de backup
audit Consulta de logs de auditoria
hooks Executa Pre/Post Hook manualmente
profile Gerenciamento de perfis de configuracao
rotate Limpeza por rotacao de backups
clean Limpa backups antigos
diskcheck Estimativa de espaco em disco
benchmark Benchmark de formatos de compressao
integrity Verificacao de integridade do diretorio de backup
dry-run Visualizacao previa da selecao de arquivos de backup
export / import Exporta/importa estrategias de backup
ignore Gera arquivo .sbackupignore
schedule Exporta configuracao de agendamento
webhook Configura predefinicoes de Webhook
config Configuracao de criptografia/validacao
report Gera relatorio de backup
completion Gera scripts de autocompletar para shells
wizard Assistente de configuracao interativo
status Painel de status do backup
version Exibe informacoes de versao
help Exibe ajuda

Parametros globais

Parametro Descricao
--lang zh_CN / en_US / fr_FR / es_ES / ru_RU / de_DE / ja_JP / pt_BR / ko_KR Define o idioma da interface (persistido no config.json)
--format zip / tar / tar.gz / tar.bz2 / tar.xz / tar.zst / 7z Define o formato de empacotamento (persistido no config.json)
--debug Ativa logs de depuracao

Adicionando uma estrategia de backup

uv run python main.py add <origem> <destino> [-i padroes_ignorados]

Parametros:

  • origem: caminho da pasta de origem para backup
  • destino: caminho onde os arquivos de backup serao armazenados
  • -i, --ignore: nomes de arquivos ou pastas a serem ignorados, separados por virgula (padrao: .git,__pycache__)
  • --format: formato de empacotamento por entrada (apenas para esta estrategia de backup, usa o padrao global se nao especificado): zip / tar / tar.gz / tar.bz2 / tar.xz / tar.zst / 7z

Exemplos:

# Adiciona estrategia usando o formato padrao global
uv run python main.py add F:/minha_pasta F:/backup -i node_modules,.git

# Define formato tar.gz para esta estrategia (cada backup desta pasta usara tar.gz)
uv run python main.py add F:/minha_pasta F:/backup --format tar.gz

# Define formato 7z (apenas para esta pasta)
uv run python main.py add F:/minha_pasta F:/backup --format 7z

Removendo uma estrategia de backup

uv run python main.py rm <caminho>

Parametros:

  • caminho: caminho da pasta de origem da estrategia de backup a ser removida

Exemplo:

uv run python main.py rm F:/minha_pasta

Visualizando todas as estrategias de backup

uv run python main.py all

Exibe todas as estrategias de backup configuradas atualmente.

Executando o backup

# Usa o formato padrao (ZIP)
uv run python main.py save

# Usa formato tar.gz
uv run python main.py --format tar.gz save

# Mantem os 5 backups mais recentes, limpa automaticamente os antigos
uv run python main.py save --keep 5

# Usa formato 7z com criptografia
uv run python main.py --format 7z save --password mysecret

# Interface em ingles + formato tar.xz
uv run python main.py --lang en_US --format tar.xz save

Parametros do comando save:

Parametro Padrao Descricao
--keep N 0 Mantem os N backups mais recentes, 0 significa sem limpeza
--password SENHA "" Senha de criptografia (apenas formato 7z)
--sftp false Envia para servidor SFTP apos o backup
--webdav false Envia para servidor WebDAV apos o backup

De acordo com a estrategia de backup, faz backup automaticamente das pastas que foram alteradas.

Backup agendado

# Executa backup a cada 60 minutos
uv run python main.py watch --interval 60

# Backup a cada 2 horas, mantem os 10 arquivos mais recentes
uv run python main.py watch --interval 120 --keep 10

# Backup agendado + criptografia 7z
uv run python main.py --format 7z watch --interval 60 --password mysecret

Parametros do comando watch:

Parametro Padrao Descricao
--interval MINUTOS 60 Intervalo entre backups (em minutos)
--keep N 0 Mantem os N backups mais recentes
--password SENHA "" Senha de criptografia (apenas formato 7z)
--sftp false Envia para servidor SFTP apos cada backup
--webdav false Envia para servidor WebDAV apos cada backup

Pressione Ctrl+C para parar o backup agendado.

Restaurando backup

uv run python main.py restore <arquivo_backup> <diretorio_destino>

Parametros:

  • arquivo_backup: caminho do arquivo de backup (suporta .zip / .tar / .tar.gz / .tar.bz2 / .tar.xz / .tar.zst / .7z)
  • diretorio_destino: diretorio de destino para restauracao

Exemplos:

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

Backup remoto via SFTP

# ============ Inicio rapido (recomendado) ============
# 1. Configura SFTP (deteccao automatica de chave SSH, sem necessidade de especificar manualmente)
sbackup sftp config --host 192.168.1.100 --user admin --remote-path /backups

# 2. Testa a conexao
sbackup sftp test

# 3. Executa backup e envia
sbackup save --sftp

# ============ Metodos de autenticacao ============

# Metodo 1: Deteccao automatica de chave privada (recomendado)
# O sistema tenta automaticamente ~/.ssh/id_ed25519 -> id_rsa -> id_ecdsa
sbackup sftp config --host 192.168.1.100 --user admin

# Metodo 2: Autenticacao por senha
sbackup sftp config --host 192.168.1.100 --user admin --password secret

# Metodo 3: Especificar chave privada
sbackup sftp config --host 192.168.1.100 --user admin --key-file ~/.ssh/id_rsa

# Metodo 4: Chave privada + frase secreta (entrada interativa)
sbackup sftp config --host 192.168.1.100 --user admin --key-file ~/.ssh/id_rsa

# Metodo 5: Chave privada + frase secreta (especificada na linha de comando)
sbackup sftp config --host 192.168.1.100 --user admin --key-file ~/.ssh/id_rsa --key-passphrase mykeypass

# ============ Cenarios de uso ============

# Cenario 1: Backup unico e envio
sbackup save --sftp

# Cenario 2: Backup agendado com envio automatico (a cada 60 minutos)
sbackup watch --interval 60 --sftp

# Cenario 3: Backup com formato especifico + envio
sbackup --format tar.gz save --sftp

# Cenario 4: Backup criptografado + envio
sbackup --format 7z save --password mysecret --sftp

# Cenario 5: Manter os 5 backups mais recentes + envio
sbackup save --keep 5 --sftp

# ============ Uso avancado ============

# Configuracao interativa (insere todos os parametros passo a passo)
sbackup sftp config

# Configuracao nao interativa (todos os parametros na linha de comando)
sbackup sftp config --host 192.168.1.100 --port 22 --user admin --password secret --remote-path /backups

# Testa conexao e exibe log detalhado
sbackup --debug sftp test

Subcomandos sftp:

Subcomando Descricao Exemplo
sftp config Configura parametros de conexao SFTP (host/port/user/password/key_file/key_passphrase/remote_path) sbackup sftp config --host 192.168.1.100 --user admin
sftp test Testa se a conexao SFTP esta disponivel sbackup sftp test

Metodos de autenticacao:

Metodo Parametros Descricao Exemplo
Deteccao automatica Sem parametros de autenticacao Tenta automaticamente ~/.ssh/id_ed25519 -> id_rsa -> id_ecdsa (recomendado) sbackup sftp config --host ... --user ...
Senha --password Login direto com senha sbackup sftp config --host ... --user ... --password secret
Chave privada --key-file Login com chave SSH especifica sbackup sftp config --host ... --user ... --key-file ~/.ssh/id_rsa
Chave privada+frase --key-file + --key-passphrase Usado quando a chave privada possui frase secreta sbackup sftp config --host ... --user ... --key-file ~/.ssh/id_rsa --key-passphrase mypass

Formatos de chave privada suportados: RSA, Ed25519, ECDSA.

Suporte a caminhos multiplataforma:

Plataforma Exemplo de caminho da chave privada Descricao
Linux/macOS ~/.ssh/id_rsa Expande automaticamente para /home/usuario/.ssh/id_rsa
Windows ~/.ssh/id_rsa Expande automaticamente para C:\Users\usuario\.ssh\id_rsa
Todas Caminho absoluto Usa o caminho completo diretamente

A configuracao SFTP e salva no campo sftp do config.json, suportando parametros via linha de comando ou entrada interativa.

Visualizando informacoes de versao

sbackup version

Arquivo de Configuracao

Sbackup suporta configuracao personalizada atraves do arquivo config.json. O arquivo de configuracao deve ser colocado no diretorio raiz do projeto.

Descricao das configuracoes

{
  "compression_format": "ZIP",
  "compression": {
    "algorithm": "ZIP_DEFLATED",
    "level": 6
  },
  "skip_patterns": [".git", "__pycache__"],
  "data_file": "sbackup.json",
  "lang": "pt_BR",
  "password": "",
  "sftp": {
    "host": "",
    "port": 22,
    "user": "",
    "password": "",
    "key_file": "",
    "key_passphrase": "",
    "remote_path": "/",
    "enabled": false
  }
}
Configuracao Tipo Padrao Descricao
compression_format string "ZIP" Formato de empacotamento, valores validos: ZIP, TAR, TAR_GZ, TAR_BZ2, TAR_XZ, TAR_ZST, 7Z
compression.algorithm string "ZIP_DEFLATED" Algoritmo de compressao ZIP, valores validos: ZIP_DEFLATED, ZIP_STORED, ZIP_BZIP2, ZIP_LZMA
compression.level int 6 Nivel de compressao, intervalo 0-9 (0 = sem compressao, 9 = compressao maxima)
skip_patterns list [".git", "__pycache__"] Padroes de arquivos ou pastas a serem ignorados (suporta curingas fnmatch e correspondencia de caminhos)
data_file string Caminho padrao da plataforma Caminho do arquivo de dados das estrategias de backup
lang string "pt_BR" Idioma da interface, valores validos: zh_CN, en_US, fr_FR, es_ES, ru_RU, de_DE, ja_JP, pt_BR, ko_KR
password string "" Senha de criptografia 7z
sftp.host string "" Endereco do servidor SFTP
sftp.port int 22 Porta SFTP
sftp.user string "" Nome de usuario SFTP
sftp.password string "" Senha SFTP (usada na autenticacao por senha)
sftp.key_file string "" Caminho do arquivo de chave SSH privada (usado na autenticacao por chave, recomendado)
sftp.key_passphrase string "" Frase secreta da chave privada (se houver)
sftp.remote_path string "/" Caminho do destino remoto
sftp.enabled bool false Habilita ou desabilita SFTP

Exemplo de configuracao

Usando formato tar.bz2 para backup com alta taxa de compressao:

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

Comparacao de formatos de empacotamento

Formato Extensao Taxa de compressao Velocidade Dependencia Cenario de uso
ZIP .zip Media Rapida Biblioteca padrao Uso geral, melhor compatibilidade com Windows
tar .tar Nenhuma Muito rapida Biblioteca padrao Apenas arquivamento, combina com compressao externa
tar.gz .tar.gz Media Rapida Biblioteca padrao Uso geral em Linux/macOS
tar.bz2 .tar.bz2 Alta Media Biblioteca padrao Arquivamento com alta taxa de compressao
tar.xz .tar.xz Muito alta Lenta Biblioteca padrao Arquivamento de longo prazo, sensivel a espaco
tar.zst .tar.zst Media-alta Muito rapida zstandard Cenarios modernos, equilibrio entre velocidade e compressao
7z .7z Extremamente alta Lenta py7zr Maior taxa de compressao, suporta criptografia

Backup remoto via WebDAV

WebDAV e um protocolo de arquivos baseado em HTTP, compativel com JianguoCloud, NextCloud, Synology e outros servicos de armazenamento em nuvem. Usa a biblioteca padrao urllib do Python, zero dependencias extras.

# ============ Inicio rapido ============
# 1. Configura WebDAV
sbackup webdav config --url https://dav.jianguoyun.com/dav/ --user usuario@exemplo.com --password secret

# 2. Testa a conexao
sbackup webdav test

# 3. Executa backup e envia
sbackup save --webdav

# ============ Cenarios de uso ============

# Cenario 1: Backup unico e envio
sbackup save --webdav

# Cenario 2: Backup agendado com envio automatico (a cada 60 minutos)
sbackup watch --interval 60 --webdav

# Cenario 3: Especificar subdiretorio remoto
sbackup webdav config --url https://dav.jianguoyun.com/dav/ --user usuario@exemplo.com --remote-path /backups/sbackup

# Cenario 4: Enviar simultaneamente para SFTP e WebDAV
sbackup save --sftp --webdav

# ============ Enderecos comuns de servicos WebDAV ============
# JianguoCloud: https://dav.jianguoyun.com/dav/
# NextCloud: https://seu-servidor/remote.php/dav/files/usuario/
# Synology: https://seu-synology:5006/webdav/

Subcomandos webdav:

Subcomando Descricao Exemplo
webdav config Configura parametros de conexao WebDAV (url/user/password/remote_path) sbackup webdav config --url ... --user ...
webdav test Testa se a conexao WebDAV esta disponivel sbackup webdav test
Parametro Padrao Descricao
--url URL "" Endereco do servidor WebDAV (ex: https://dav.jianguoyun.com/dav/)
--user USUARIO "" Nome de usuario WebDAV (geralmente o e-mail)
--password SENHA "" Senha WebDAV (JianguoCloud requer geracao de senha de aplicativo nas configuracoes)
--remote-path CAMINHO / Caminho do destino remoto

Como Funciona

Sbackup implementa as funcionalidades de backup da seguinte forma:

  1. Armazenamento de estrategias: as estrategias de backup sao armazenadas em um arquivo JSON, contendo caminhos de pastas, data de ultima modificacao, caminhos de destino, padroes de ignorancia e formato de empacotamento por entrada.
  2. Backup incremental: comparando a data de ultima modificacao das pastas, faz backup apenas das pastas que foram alteradas.
  3. Compressao multi-formato: usa os modulos zipfile e tarfile integrados do Python, alem das bibliotecas zstandard e py7zr, suportando 7 formatos de empacotamento.
  4. Formato por entrada: cada estrategia de backup pode ter seu proprio formato de empacotamento (add --format), com prioridade sobre a configuracao global --format; quando nao especificado, usa o padrao global.
  5. Limpeza de backups: apos o backup ser bem-sucedido, escaneia automaticamente o diretorio de destino, ordena por data de modificacao e remove arquivos antigos que excedem a quantidade de retencao.
  6. Backup criptografado: o formato 7z suporta criptografia LZMA2, atraves do parametro --password ou configuracao no config.json.
  7. Backup agendado: o comando watch executa backups em loop com intervalos especificados, Ctrl+C para saida segura.
  8. Historico de backups: apos cada backup, registra timestamp, tamanho do arquivo e contagem de arquivos, mantendo os ultimos 100 registros.
  9. Backup remoto via SFTP: implementa o cliente SFTP baseado na biblioteca paramiko, com suporte a teste de conexao, criacao automatica de diretorios remotos e upload de arquivos com barra de progresso.

Formato do arquivo de dados

{
  "/caminho/para/pasta/de/origem": [
    1719235200.0,
    "/caminho/para/pasta/de/destino",
    [".git", "__pycache__"],
    ""
  ],
  "/caminho/para/outra/pasta": [
    1719235200.0,
    "/caminho/para/outro/destino",
    [".git"],
    "TAR_GZ"
  ],
  "_history": [
    {
      "time": "2026-05-01T12:00:00",
      "source": "/caminho/para/pasta/de/origem",
      "size_mb": 12.5,
      "files_count": 150
    }
  ]
}

Cada entrada de estrategia de backup e uma lista de 4 elementos: [mtime, destino, padroes_ignorados, formato_compressao]

Campo Descricao
mtime Data de ultima modificacao da pasta de origem (usada para decisao de backup incremental)
destino Caminho de destino onde os arquivos de backup serao armazenados
padroes_ignorados Lista de padroes de arquivos/pastas a serem ignorados
formato_compressao Formato de empacotamento por entrada (string vazia significa usar o padrao global)

Guia de Desenvolvimento

Executando testes

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

Estrutura do codigo

sbackup/
├── main.py              # Ponto de entrada do programa
├── sbackup/
│   ├── __init__.py      # Exporta funcoes principais
│   ├── __main__.py      # Ponto de entrada python -m sbackup
│   ├── cli.py           # Analise de argumentos CLI e distribuicao de comandos (30+ comandos)
│   ├── config.py        # Carregamento de configuracao, criptografia, configuracao Webhook/SMTP
│   ├── auto_save.py     # Motor principal BackupManager
│   ├── compression.py   # Motor de compressao/descompressao para 7 formatos
│   ├── i18n.py          # Internacionalizacao (9 idiomas)
│   ├── sftp.py          # Cliente SFTP de backup remoto (paramiko)
│   ├── webdav.py        # Cliente WebDAV de backup remoto (zero dependencias)
│   ├── cloud_storage.py # Cliente S3 de armazenamento em nuvem (minio)
│   ├── multi_dest.py    # Backup paralelo para multiplos destinos
│   ├── handlers.py      # Manipuladores de comandos SFTP/WebDAV/Remote/Schedule
│   ├── hooks.py         # Execucao de Pre/Post Hook
│   ├── audit.py         # Sistema de log de auditoria
│   ├── profile.py       # Gerenciamento de perfis de configuracao
│   ├── selective.py     # Restauracao seletiva
│   ├── cross_search.py  # Busca entre arquivos
│   ├── integrity.py     # Checksum SHA256
│   ├── rotation.py      # Estrategia de rotacao de backups
│   ├── dryrun.py        # Visualizacao previa de dry-run
│   ├── diskcheck.py     # Estimativa de espaco em disco
│   ├── task_queue.py    # Sistema de fila de tarefas
│   ├── schema.py        # Validador de configuracao
│   ├── benchmark.py     # Benchmark de compressao
│   ├── chunked_backup.py# Backup incremental por blocos
│   ├── dedup.py         # Deduplicacao por SHA256 no nivel de arquivo
│   ├── export.py        # Exportacao de metadados (CSV/JSON)
│   ├── monitor.py       # Monitoramento de sistema de arquivos com watchdog
│   ├── lock.py          # Bloqueio de processo multiplataforma
│   ├── retry.py         | Retry com backoff exponencial
│   ├── ratelimiter.py   # Limitador de taxa por balde de tokens
│   ├── keychain.py      # Integracao com chaveiro do sistema
│   ├── parity.py        # Codigos de correcao de erros Reed-Solomon
│   ├── completion.py    # Autocompletar para shells
│   ├── wizard.py        # Assistente de configuracao interativo
│   └── locales/         # Arquivos de traducao para 9 idiomas
└── tests/
    └── sbackup/
        └── test_*.py    # 30 arquivos de teste cobrindo todos os modulos

Adicionando novas funcionalidades

  1. Crie um novo arquivo de modulo no diretorio sbackup/
  2. Importe as funcoes da nova funcionalidade em sbackup/__init__.py
  3. Adicione a logica de manipulacao do novo comando na funcao run()
  4. Adicione o arquivo de teste correspondente no diretorio tests/

Perguntas Frequentes

P: E se o arquivo de estrategias de backup for deletado acidentalmente?

R: As estrategias de backup sao armazenadas no arquivo de dados. Se forem deletadas acidentalmente, voce pode reexecutar o comando add para adicionar as estrategias novamente.

P: Como modificar uma estrategia de backup ja adicionada?

R: Use o comando sbackup edit: sbackup edit <origem> --dest <novo_destino> --ignore <padroes> --format <fmt>.

P: Suporta backup remoto?

R: Sim! Sao fornecidos tres metodos de backup remoto:

  • SFTP: sbackup sftp config para configurar, sbackup save --sftp para enviar
  • WebDAV: sbackup webdav config para configurar, sbackup save --webdav para enviar (compativel com JianguoCloud/NextCloud/Synology)
  • Armazenamento em nuvem S3: configure o campo cloud no config.json, sbackup save --cloud para enviar
  • Pode usar varios simultaneamente: sbackup save --sftp --webdav --cloud

P: Qual a diferenca entre tar.gz e ZIP?

R: tar.gz e mais usado em Linux/macOS, com taxa de compressao ligeiramente superior; ZIP e mais universal em Windows, com melhor compatibilidade. tar.bz2 e tar.xz oferecem maior taxa de compressao, mas sao mais lentos. tar.zst e um algoritmo moderno, muito rapido com boa taxa de compressao. 7z tem a maior taxa de compressao e suporta criptografia.

P: Como criptografar o backup?

R: Use o formato 7z e defina uma senha: uv run python main.py --format 7z save --password suasenha. A senha tambem pode ser gravada no campo password do config.json.

P: Como limpar backups antigos automaticamente?

R: Use o parametro --keep: uv run python main.py save --keep 5 mantem apenas os 5 backups mais recentes. O backup agendado tambem suporta: uv run python main.py watch --interval 60 --keep 10.

P: Como configurar backup agendado?

R: Use o comando watch: uv run python main.py watch --interval 60 executa backup a cada 60 minutos. Pressione Ctrl+C para parar.

P: O armazenamento de senhas e seguro?

R: As senhas SFTP e de criptografia 7z no config.json sao armazenadas em texto plano. Certifique-se de que as permissoes de acesso ao arquivo config.json sejam restritas a usuarios confiaveis (por exemplo, chmod 600 config.json). Nao envie o config.json com senhas para o sistema de controle de versao.

Guia de Contribuicao

Contribuicoes com Issues e Pull Requests sao bem-vindas!

  1. Fork este repositorio
  2. Crie sua branch de funcionalidade (git checkout -b feature/SuaFuncionalidade)
  3. Faca seus commits (git commit -m 'Adiciona SuaFuncionalidade')
  4. Envie para a branch (git push origin feature/SuaFuncionalidade)
  5. Abra um Pull Request

Estilo de codigo

Este projeto segue o PEP 8 e o Google Python Style Guide. Certifique-se de que seu codigo:

  • Use anotacoes de tipo
  • Siga docstrings no estilo Google
  • Passe em todos os testes unitarios

Licenca

Este projeto esta licenciado sob a GNU GPL v3.0. Consulte o arquivo LICENSE para mais detalhes.

Autor

xiatianxuan (CodeSeed)

Agradecimentos especiais

Contato

Se tiver duvidas ou sugestoes, envie um e-mail para: xiatianxuan2025@163.com


Ultima atualizacao: 19 de junho de 2026