proton-backup/README.md

1.6 KiB

proton-backup

Backup tool for syncing local directories to Proton Drive with rate limiting and resume support.

Installation

go build
cp proton-backup ~/bin/

Usage

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:

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.

# 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.