Landing files (append-only JSON.gz) synced to R2 every 30 min via systemd timer + rclone. Extraction state DB (.state.sqlite) continuously replicated via Litestream (second DB entry). Auto-restore on container startup for both app.db and .state.sqlite. Reuses existing R2 bucket and credentials — no new env vars needed. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
21 lines
674 B
Desktop File
21 lines
674 B
Desktop File
[Unit]
|
|
Description=Padelnomics Landing Zone Backup to R2
|
|
After=network-online.target
|
|
Wants=network-online.target
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
EnvironmentFile=/opt/padelnomics/.env
|
|
Environment=LANDING_DIR=/data/padelnomics/landing
|
|
ExecStart=/usr/bin/rclone sync ${LANDING_DIR} :s3:${LITESTREAM_R2_BUCKET}/padelnomics/landing \
|
|
--s3-provider Cloudflare \
|
|
--s3-access-key-id ${LITESTREAM_R2_ACCESS_KEY_ID} \
|
|
--s3-secret-access-key ${LITESTREAM_R2_SECRET_ACCESS_KEY} \
|
|
--s3-endpoint https://${LITESTREAM_R2_ENDPOINT} \
|
|
--s3-no-check-bucket \
|
|
--exclude ".state.sqlite*"
|
|
|
|
StandardOutput=journal
|
|
StandardError=journal
|
|
SyslogIdentifier=padelnomics-landing-backup
|