Allow creation of machine specific configs.

This commit is contained in:
Craig
2025-04-24 16:54:51 +01:00
parent 3540d48df9
commit 677e846b24
4 changed files with 32 additions and 3 deletions

4
.gitignore vendored
View File

@@ -1 +1,5 @@
.env
# Configuration files except example
configs/*
!configs/example-config.json

View File

@@ -32,7 +32,20 @@ After installation, you can run the `backup` command from any directory.
## Configuration
Create new backup jobs by adding JSON configuration files to the `configs/` directory. Each configuration file should include:
The `configs/` directory contains JSON configuration files for your backup jobs. The repository includes an example config file (`example-config.json`) that you can use as a template.
> **Important:** All config files except `example-config.json` are ignored by git. This allows you to have different configurations on different machines without affecting other installations.
To get started, copy the example file to create your own configuration:
```bash
# Copy example to create your own config
cp configs/example-config.json configs/my-backup.json
# Edit your new config file with your favorite editor
nano configs/my-backup.json
```
Each configuration file should include:
| Field | Description |
|-------|-------------|
@@ -74,6 +87,8 @@ backup
./backup.py
```
When executed, the script will process all JSON files in the `configs/` directory (except the example file), creating backups as specified in each configuration. If no valid config files are found, it will provide instructions for creating one.
### Scheduled Execution (Linux)
Add a cron job to run backups automatically, for example weekly on Saturday at 1:05 AM:

View File

@@ -146,9 +146,19 @@ def local_backup(output_dir: Path, backup_name: str, inputs: list, ignore_patter
def backup_all():
config_dir = Path(__file__).parent / "configs"
config_files = sorted(config_dir.glob("*"))
print(config_files)
# Get all JSON files except the example config
config_files = sorted([f for f in config_dir.glob("*.json") if f.name != "example-config.json"])
if not config_files:
print("No configuration files found. Please create a config file in the 'configs' directory.")
print("You can copy the example-config.json to create your own configuration:")
print("cp configs/example-config.json configs/my-backup.json")
return
print(f"Found {len(config_files)} config files: {[f.name for f in config_files]}")
for file in config_files:
print(f"\nProcessing backup configuration: {file.name}")
text = file.read_text()
config = json.loads(text)
output_dir = Path(config["outputDir"]).expanduser().resolve()