66 lines
1.6 KiB
Markdown
66 lines
1.6 KiB
Markdown
# proton-backup
|
|
|
|
Backup tool for syncing local directories to Proton Drive with rate limiting and resume support.
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
go build
|
|
cp proton-backup ~/bin/
|
|
```
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
proton-backup -source /path/to/backup -remote /proton/drive/path
|
|
```
|
|
|
|
### Options
|
|
|
|
- `-source` - Local directory to backup (required)
|
|
- `-remote` - Remote path on Proton Drive (required)
|
|
- `-exclude` - Comma-separated patterns to exclude (default: "thumbs,encoded-video")
|
|
- `-rate-limit` - Milliseconds between uploads (default: 2000)
|
|
- `-retries` - Number of retries on failure (default: 5)
|
|
- `-retry-delay` - Milliseconds to wait before retry (default: 30000)
|
|
- `-dry-run` - Show what would be uploaded without uploading
|
|
- `-verbose` - Verbose output
|
|
|
|
## First Run
|
|
|
|
On first run, you'll be prompted for Proton credentials:
|
|
|
|
```bash
|
|
proton-backup -source /tank/immich/library -remote /backups/immich
|
|
```
|
|
|
|
Credentials are cached in `~/.config/proton-backup/credentials.json`
|
|
|
|
## Immich Backup
|
|
|
|
Configured to run daily at 04:00 via systemd timer.
|
|
|
|
```bash
|
|
# Check timer status
|
|
systemctl --user status backup-immich-proton.timer
|
|
|
|
# Start timer
|
|
systemctl --user start backup-immich-proton.timer
|
|
|
|
# Run manually
|
|
systemctl --user start backup-immich-proton.service
|
|
|
|
# View logs
|
|
tail -f ~/logs/backup-immich-proton.log
|
|
```
|
|
|
|
## State Tracking
|
|
|
|
Upload state is tracked in `~/.config/proton-backup/state.db` (SQLite).
|
|
Files are identified by path + size + mtime. Only changed files are re-uploaded.
|
|
|
|
## Rate Limiting
|
|
|
|
Default: 2 second delay between uploads to avoid Proton's anti-abuse limits.
|
|
Exponential backoff on 422/429 errors.
|