k3s-infra/unused/grsync.cronjob.yaml
2023-10-05 14:34:37 +02:00

55 lines
1.6 KiB
YAML

---
apiVersion: batch/v1
kind: CronJob
metadata:
name: gcloud-backup
namespace: backup
spec:
schedule: "0 2 15 * *"
# at 2:00, the 1. and 15. of every month
successfulJobsHistoryLimit: 2
failedJobsHistoryLimit: 2
jobTemplate:
spec:
template:
spec:
restartPolicy: Never
containers:
- name: gcloud-backup
image: shirakiya/gcloud-sdk:latest
command: ["/bin/bash", "-c", "--"]
args:
- |
ln -s /config/.boto /root/.boto &&
gsutil -m rsync -x "^(jellyfin|config|webtop|other root folder)/.*$" -U -r -e -d /data gs://kluster-backup
# command:
# -m multithreaded
# -U skip unsupported objects
# -e don't follow symlinks
# -r recursively follow folder structure
# -d deletes files from dst if they are not in src anymore
# -n dry runs
# This command runs with the knowledge the gs-bucket is set up with versioning. Rsync therefore serves as an incremental backup whose individual stages can be recovered
volumeMounts:
- mountPath: /data
name: backup-nfs-access
- mountPath: /config
name: gcloud-credentials
# entry .boto in the secret is mounted as /root/.boto
volumes:
- name: backup-nfs-access
persistentVolumeClaim:
claimName: backup-nfs-access
- name: gcloud-credentials
secret:
secretName: gcloud-credentials
optional: false