Problem: VPS mit rootless Podman Container die (völlig überraschend) Daten erzeugen die man (auch völlig überraschend) sichern will – aber nicht beim Hoster wegen Kosten und 3-2-1 Regel (wenn wir uns mal das 3 und 2 wegdenken).
Subproblem: Wegen UID Mapping haben die Daten die Container erzeugt einen Owner mit einer gemappten UID und somit kann der (unberechtigte) User der die Podman Container betreibt nicht auf die Daten zugreifen.
Lösung: Daten mit root und rclone als TAR (wegen Erhalt UIDs) nach OneDrive sichern und mit rclone alte Files löschen lassen.
rcloneinstallierenrclone config- als Name „onedrive“ angeben
- type of storage „Microsoft OneDrive“ auswählen (bei mir 31)
- client_id, client_secret überspringen
- Region „Microsoft Cloud Global“
- Advanced config: no
- Auto Config: no
- Auf Rechner mit Browser
rclone authorize "onedrive" --onedrive-auth-url https://login.microsoftonline.com/<tenant-guid>/oauth2/v2.0/authorize --onedrive-token-url https://login.microsoftonline.com/<tenant-guid>/oauth2/v2.0/token - Output in config_token reinpasten
- config_type=OneDrive Personal or Business (1 bei mir)
- drive_id=das mit „Documents“ oder „Dokumente“ (1 bei mir)
- Drive OK bestätigen
~/.config/rclone/rclone.confauf/root/.config/rclone/rclone.confkopieren- Backupscript erstellen (s.u.) ggf.
--min-ageanpassen wenn man Backups länger als 3 Monate aufheben will.
Script geht davon aus dass User mit dem Container laufenpodmanheißt (-M podman@im systemctl Call) und der Container mycontainer als Servicepodman-mycontainerim Ordner/path/to/mycontainerparent läuft und auf/targetfolder/on/onedrivegesichert werden soll. - Aufruf in System crontab einfügen (muss als root laufen weil die Dateien die im Container erzeugt werden ja UID-mapped sind und für normale User nicht zugreifbar sind).
#!/bin/bash FN="mycontainer_"$(date +"%Y%m%d%H%M")".tar.gz" rm backup_mycontainer.log &>/dev/null echo $(date +"%Y-%m-%d %H:%M:%S") stopping service &>>backup_mycontainer.log systemctl --user -M podman@ stop podman-mycontainer &>>backup_mycontainer.log echo $(date +"%Y-%m-%d %H:%M:%S") create $FN &>>backup_mycontainer.log tar cfz $FN -C /path/to/mycontainerparent mycontainer &>>backup_mycontainer.log echo $(date +"%Y-%m-%d %H:%M:%S") rclone $FN &>>backup_mycontainer.log rclone copy $FN onedrive:/targetfolder/on/onedrive &>>backup_mycontainer.log echo $(date +"%Y-%m-%d %H:%M:%S") remove $FN &>>backup_mycontainer.log rm $FN &>>backup_mycontainer.log echo $(date +"%Y-%m-%d %H:%M:%S") starting service &>>backup_mycontainer.log systemctl --user -M podman@ start podman-mycontainer &>>backup_mycontainer.log echo $(date +"%Y-%m-%d %H:%M:%S") delete backups older than 3 months &>>backup_mycontainer.log rclone delete onedrive:/targetfolder/on/onedrive --min-age 3M --verbose &>>backup_mycontainer.log cat backup_mycontainer.log|s-nail -Sv15-compat -Smta=smtp://…user…:…passwort…@smtpserver.com:587 \ -Ssmtp-use-starttls \ -Ssmtp-auth=login \ -a backup_mycontainer.log \ -s "[mycontainer backup] Completed" \ -r backup-mycontainer@meinedomain.com \ meinuser@meinedomain.com