backup-script-cli
v1.0.2
Published
Script di backup per archiviare file in formato zip con cifratura
Readme
Backup Script CLI
English version | Versione Italiana
Backup Script CLI (English)
A TypeScript command-line utility (CLI) to quickly create ZIP backup archives of your project, allowing granular selection of files and folders.
🚀 Features
- Interactive Selection: Choose which files and folders from the root to include in the archive.
- Automatic Encryption: Generates a secure 14-character password to protect the ZIP archive.
- Smart Exclusions: Automatically excludes heavy or unnecessary folders like
node_modules,dist,.git, and other existing backup files. - Optimized Compression: Uses
archiverwith compression level 9 (Zlib). - Customizable Naming: Suggests a name based on today's date (
backup_YYYY-MM-DD.zip), but allows customization. - Overwrite Protection: Asks for confirmation before overwriting an existing file.
- Real-time Feedback: Displays progress percentage and the size of processed data.
- Code Quality: Linting with ESLint and formatting with Prettier.
- Automated Testing: Test suite with Jest to ensure logic correctness.
- Continuous Integration: GitHub Actions configured for automatic lint, build, and test on every push.
🛠️ Requirements
- Node.js (recommended version: 22 or higher)
- pnpm (recommended), npm, or yarn
📦 Installation
As a local package
Clone the repository:
git clone <repository-url> cd backup-scriptInstall dependencies:
pnpm install
As a global CLI
You can install the tool globally to use it in any project:
npm install -g backup-script-cliAfter installation, you can use the command:
backup-cli🎮 Usage
Development
To run the script directly from TypeScript sources:
npm run devBuild and Production
To compile the script into an optimized bundle (using esbuild):
npm run buildAfter the build, you can run the standard version:
npm startOr the minified version:
npm run start:minifyQuality and Testing
To lint the code:
npm run lintTo automatically format the code:
npm run formatTo run the test suite with Jest:
npm test🏗️ Project Structure
src/main.ts: Main entry point of the script.src/utils/utils.ts: Utility functions extracted for testability.tests/: Automated test suite.dist/: Contains bundles generated after the build.package.json: Project configuration and npm scripts..github/workflows/: Configuration for GitHub Actions.eslint.config.js&.prettierrc: Configurations for code quality.
🧰 Main Dependencies
- archiver: ZIP archive generation.
- archiver-zip-encryptable: Password encryption support.
- inquirer: Interactive CLI interface.
- glob: Pattern matching for files.
- esbuild: Ultra-fast bundler for compilation.
- Jest: Testing framework.
- ESLint: Linting tool.
- Prettier: Code formatter.
👨💻 Author
Maurizio Tolomeo
- Website: https://www.mauriziotolomeo.it
- Email: [email protected]
Created to simplify local backup management during development.
Backup Script CLI (Italiano)
Un'utilità a riga di comando (CLI) in TypeScript per creare rapidamente archivi ZIP di backup del progetto, permettendo la selezione granulare dei file e delle cartelle.
🚀 Caratteristiche
- Selezione Interattiva: Scegli quali file e cartelle della root includere nell'archivio.
- Cifratura Automatica: Genera una password sicura a 14 caratteri per proteggere l'archivio ZIP.
- Esclusioni Intelligenti: Esclude automaticamente cartelle pesanti o inutili come
node_modules,dist,.gite altri file di backup esistenti. - Compressione Ottimizzata: Utilizza
archivercon livello di compressione 9 (Zlib). - Naming Personalizzabile: Suggerisce un nome basato sulla data odierna (
backup_YYYY-MM-DD.zip), ma permette la personalizzazione. - Protezione Sovrascrittura: Chiede conferma prima di sovrascrivere un file esistente.
- Feedback in Tempo Reale: Mostra la percentuale di avanzamento e la dimensione dei dati processati.
- Qualità del Codice: Linting con ESLint e formattazione con Prettier.
- Test Automatizzati: Suite di test con Jest per garantire la correttezza della logica.
- Continuous Integration: GitHub Actions configurate per lint, build e test automatici ad ogni push.
🛠️ Requisiti
- Node.js (versione consigliata: 22 o superiore)
- pnpm (consigliato), npm o yarn
📦 Installazione
Come pacchetto locale
Clona la repository:
git clone <repository-url> cd backup-scriptInstalla le dipendenze:
pnpm install
Come CLI globale
Puoi installare lo strumento globalmente per usarlo in qualsiasi progetto:
npm install -g backup-script-cliDopo l'installazione, potrai usare il comando:
backup-cli🎮 Utilizzo
Sviluppo
Per eseguire lo script direttamente dai sorgenti TypeScript:
npm run devBuild e Produzione
Per compilare lo script in un bundle ottimizzato (utilizzando esbuild):
npm run buildDopo la build, puoi eseguire la versione standard:
npm startOppure la versione minificata:
npm run start:minifyQualità e Test
Per eseguire il linting del codice:
npm run lintPer formattare automaticamente il codice:
npm run formatPer eseguire la suite di test con Jest:
npm test🏗️ Struttura del Progetto
src/main.ts: Punto di ingresso principale dello script.src/utils/utils.ts: Funzioni di utilità estratte per testabilità.tests/: Suite di test automatizzati.dist/: Contiene i bundle generati dopo la build.package.json: Configurazione del progetto e script npm..github/workflows/: Configurazione per GitHub Actions.eslint.config.js&.prettierrc: Configurazioni per la qualità del codice.
🧰 Dipendenze Principali
- archiver: Generazione di archivi ZIP.
- archiver-zip-encryptable: Supporto alla cifratura con password.
- inquirer: Interfaccia interattiva CLI.
- glob: Corrispondenza di pattern per i file.
- esbuild: Bundler ultra-veloce per la compilazione.
- Jest: Framework di testing.
- ESLint: Strumento di linting.
- Prettier: Formattatore di codice.
👨💻 Autore
Maurizio Tolomeo
- Website: https://www.mauriziotolomeo.it
- Email: [email protected]
Creato per semplificare la gestione dei backup locali durante lo sviluppo.
