Skip to main content

Uma ferramenta de linha de comando simples e rápida para fazer backups temporários de arquivos e diretórios.

Project description

Bak

Bak é uma ferramenta de linha de comando simples e rápida para fazer backups temporários de arquivos e diretórios, com opção de compressão, recuperação e listagem. Ideal para quem trabalha com código ou arquivos importantes e quer uma forma rápida e prática de fazer backups localmente.

Funcionalidades

  • Backup de arquivos e diretórios
  • Compressão automática de diretórios (via shutil ou 7z)
  • Recuperação de arquivos por nome ou busca parcial (fd)
  • Listagem de arquivos salvos
  • Limpeza total da pasta de backups
  • Abertura do diretório no explorador de arquivos

Instalação

Clone este repositório para um diretório do seu sistema.

git clone https://github.com/Dimitri-Miranda/bak
cd bak
python -m bak --help

Opcional: se você instalou via clone, adicione um alias para o comando.

Windows alias:

Crie um arquivo .bat , por exemplo bak.bat, em algum diretório que esteja no seu PATH.

Conteúdo do bak.bat:

@echo off
setlocal

set BAK_PATH=%USERPROFILE%\diretorio_onde_voce_clonou\bak
set PYTHONPATH=%BAK_PATH%

python -m bak %*

endlocal

Configuração

Ao executar pela primeira vez, ou usar a flag --init, o script criará um arquivo de configuração em:

~\.config\bak\bak_config.ini

Esse arquivo define:

  • Diretório onde os backups serão salvos
  • Comando para abrir o explorador (explorer, xdg-open, etc.)
  • Mecanismo de compactação (shutil, 7z, etc.)

o script também criará uma diretório para os backups em:

~\.bak_temp

Este diretório conterá os backups que você fará (é possível alterar no arquivo de configuração bak_config.ini).

Como usar

Modos por diferentes tipo de instalação

Você pode usar a ferramenta de duas formas:

  • Clonando o repositório e executando via python -m bak
  • Instalando via pip (local ou PyPI) e usando o comando bak

Flags

Flag Descrição
-b, --backup Faz o backup de arquivos ou diretórios
-r, --rescue Recupera arquivos a partir do nome ou busca
-l, --list Lista os arquivos no diretório de backups
--clean Limpa todos os arquivos de backup
-o, --open Abre o diretório de backups no explorador
-f, --file Um ou mais arquivos/diretórios para usar
-s, --search Termo(s) para buscar arquivos (fd)
--init Cria/reseta configurações
--version Mostra a versão

Obs: As flags -b, -r, -l, --clean, -o, --init, --version são mutuamente exclusivas.

Exemplos

Fazer backup de um arquivo:

bak -b -f meuArquivo.txt

Fazer backup de um diretório (compactada):

bak -b -f meuDiretório

Recuperar arquivo por nome:

bak -r -f meuArquivo_2024-05-18_20-32-10.txt.bak

Recuperar arquivo por índice:

bak -r -f 0

Recuperar arquivo por busca (usa fd):

bak -r -s meuArquivo

Listar arquivos de backup:

bak -l

Limpar todos os backups:

bak --clean

Abrir o diretório de backups:

bak -o

Criar ou resetar o arquivo de configurações:

bak --init

Mostrar a versão:

bak --version

Exemplos com múltiplos arquivos

Fazer backup de vários arquivos e diretórios:

bak -b -f arquivo1.txt arquivo2.txt diretório1

Recuperar múltiplos arquivos por nome completo:

bak -r -f backup1_2024-05-18_20-32-10.txt.bak backup2_2024-05-18_2

Recuperar múltiplos arquivos por busca parcial:

bak -r -s backup1 backup2

Estrutura do Projeto

bak/
├── .gitignore        # Ignora arquivos temporários e de build
├── LICENSE           # Licença MIT do projeto
├── README.md         # Documentação principal do projeto
├── pyproject.toml    # Metadados e instruções de build (PEP 621)
└── bak/              # Pacote principal da ferramenta
    ├── __init__.py     # Define que a pasta é um pacote Python
    ├── __main__.py     # Permite execução com `python -m bak`
    ├── backup.py       # Lógica de backup de arquivos e diretórios
    ├── config.py       # Leitura e criação do arquivo de configuração
    ├── helpers.py      # Funções auxiliares e utilitárias
    ├── logger.py      # Funções de logging
    ├── main.py         # Ponto de entrada (define e processa os argumentos CLI)
    └── rescue.py       # Lógica de recuperação de backups

Requisitos

  • Python 3.8+
  • (opcional) fd para busca mais rápida
  • (opcional) 7z se quiser compressão avançada

Roadmap

  • Suporte para diferentes compressores
  • Testes automatizados com pytest

Licença

Este projeto é licenciado sob a licença MIT - veja o arquivo LICENSE para mais detalhes

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dim_bak-25.5.1.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dim_bak-25.5.1-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

Details for the file dim_bak-25.5.1.tar.gz.

File metadata

  • Download URL: dim_bak-25.5.1.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for dim_bak-25.5.1.tar.gz
Algorithm Hash digest
SHA256 91cc1e4ce9077028c601e5d9fc25fc61c063e964653ba32870fbcfabc17becf5
MD5 eb3260901dbea2f4804cc3fd43990053
BLAKE2b-256 55d2c6ae11a87aff51ffbd541dcb8e02a0d931ca17b00eedbdb343939b1b87bd

See more details on using hashes here.

File details

Details for the file dim_bak-25.5.1-py3-none-any.whl.

File metadata

  • Download URL: dim_bak-25.5.1-py3-none-any.whl
  • Upload date:
  • Size: 9.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for dim_bak-25.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 731c9a9619edce636ea1e45a4aad52d20aebe77053765946b7a1c4e413555c1a
MD5 d4f19c3e032a7324e2f9f22420056e01
BLAKE2b-256 11ad5afa9d33ad521e1d4ba52968de899727225884568fb4fe755b9639df56d0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page