☁️

Nextcloud Upload Script (rclone)

Uploader seneste WWW-backup ugentligt til Nextcloud og rydder op i gamle filer

📊 Flowdiagram

Nextcloud Upload (rclone) — Flowdiagram 🚀 Start 🔍 Tjek: er rclone installeret? ❌ FEJL Log install-hjælp exit 1 nej 📂 find + sort → seneste www_backup_*.tar.gz ❌ FEJL Ingen filer fundet exit 1 nej 📝 Log filnavn + størrelse ☁️ rclone copy → nextcloud:Backups ❌ FEJL exit 1 nej 🧪 rclone delete --dry-run (log hvad der ville slettes) 🗑️ rclone delete --min-age 28d (faktisk sletning) 📝 Log: === Upload færdig === ✅ exit 0 Kun til logning — sletter ikke noget Legende Upload / kontrol Oprydning cloud Fejl / exit 1 Dry-run (sikkerhed)

📋 Trin-for-trin forklaring

1

Opsætning

Definerer rclone remote (nextcloud:Backups), backup-mappe og logfil. Remote-navnet skal svare til det der er konfigureret med rclone config.

2

Tjek rclone er installeret

command -v rclone verificerer at binæren er tilgængelig. Mangler den, logges installationsvejledning og scriptet afslutter med exit 1.

3

Find seneste backup

find returnerer alle www_backup_*.tar.gz med timestamp-sortering via -printf '%T@' + sort -rn. Første resultat er den nyeste fil. Ingen fil → exit 1.

4

Upload med rclone copy

Kopierer kun den fundne fil til Nextcloud-mappen. --progress logges via tee. PIPESTATUS[0] sikrer at rclones faktiske exit-kode tjekkes, ikke tee's.

5

Dry-run (sikkerhedslog)

Kører rclone delete --dry-run først — dette sletter ingenting, men logger præcis hvilke filer der ville blive slettet. God til debugging.

6

Faktisk oprydning

Sletter alle www_backup_*.tar.gz-filer på Nextcloud der er ældre end 28 dage. Svarer til at beholde de 4 seneste ugentlige uploads.

⚙️ Konfiguration

VariableBeskrivelse
RCLONE_REMOTErclone destination (nextcloud:Backups)
BACKUP_DIRLokal mappe med backup-filer
LOG_FILESti til logfil
--min-age 28dSlet filer ældre end 28 dage på cloud

☁️ Cloud retention – 4 uger

Ugentlige uploads, 28 dages grænse → max 4 filer bevares:

📦
Uge -1
beholdes
📦
Uge -2
beholdes
📦
Uge -3
beholdes
📦
Uge -4
beholdes
🗑️
Uge -5+
slettes

🔧 Opsætning af rclone

# 1. Installer rclone
curl https://rclone.org/install.sh | sudo bash

# 2. Konfigurer Nextcloud-remote
rclone config
# → Vælg WebDAV, indtast Nextcloud URL + credentials

# 3. Test forbindelsen
rclone lsd nextcloud:Backups

⚠️ OBS: dry-run er aktiv

Scriptet kører --dry-run lige inden den faktiske sletning. Dry-run sletter ingenting — den logger kun hvad der ville ske. Tjek logfilen for at bekræfte adfærd efter første kørsel.

📝 Terminal-output eksempel

[2025-02-22 02:00:01] === Start Nextcloud upload (rclone) ===
[2025-02-22 02:00:01] Fundet seneste backup: www_backup_20250222_020001.tar.gz (142M)
[2025-02-22 02:00:01] Uploader til Nextcloud...
Transferring:
  www_backup_20250222_020001.tar.gz: 100% / 142M, 2.1 MB/s, 67s
[2025-02-22 02:01:08] ✓ Upload lykkedes!
[2025-02-22 02:01:08] Fil uploadet: www_backup_20250222_020001.tar.gz
[2025-02-22 02:01:08] Rydder op i gamle backups på Nextcloud...
[DRY RUN] Would delete: www_backup_20250125_020001.tar.gz
[2025-02-22 02:01:10] Slettet: www_backup_20250125_020001.tar.gz
[2025-02-22 02:01:10] === Upload færdig ===

💡 Anbefalet cron-opsætning

# Kør ugentligt – søndag kl. 02:00
0 2 * * 0 /home/kao/scripts/nextcloud_upload_rclone.sh

# Koordiner med www-backup (lørdagnat)
# så backup eksisterer inden upload starter
0 1 * * 6 /home/kao/scripts/www-backup.sh
0 2 * * 0 /home/kao/scripts/nextcloud_upload_rclone.sh

🔗 Sammenhæng med andre scripts

Input Bruger filer oprettet af www-backup.sh
Cloud Uploader til samme Nextcloud som MariaDB-backup
Log Separat logfil: nextcloud_upload.log