Nou dat mijn NC al een tijd draait onder Docker had ik nog steeds geen Backup draaien. Ik heb het via Rsync ingesteld naar mijn NAS.
Eerst heb ik een mount gemaakt naar mijn NAS
Mount Info NC <> NAS mount.cifs //x.x.x.x/NCBackup /mnt/share/nc/ -o user={USER},pass={PASSWORD}
Vervolgens een Rsync Command Line die verwijst naar de juiste volume in mijn Docker omgeving:
rsync -av /var/lib/docker/volumes/{NAAM_VOLUME}/_data/data /mnt/share/nc
Ook bij deze back-up heb ik voor nu alleen gekozen voor de data en nog niet de gehele NC omgeving. Met een periodieke database dump van users/rechten etc. kom ik nu al een heel eind.
Om de Backup automatisch te laten draaien op bepaald tijdsinterval heb ik een crontab job aangemaakt.
#crontab -e
gekozen voor optie 1 om de file te maken met nano met de volgende inhoud
Cronjob : (elke maandag om 04:00)
* * * * 1 rysnc -av /var/lib/docker/volumes/{NAAM_VOLUME}/_data/data /mnt/share/nc
Na controle bleek dit nog niet automatisch te gaan
error:
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1338) [sender=3.2.7]
Even onderzoeken !
✅ Overview of What You Need to Do:
- Ensure NAS mount is persistent.
- Create a script to rsync the data.
- Set up a cron job to run it every day at 12:00 AM.
🔧 Step-by-Step Setup
1. Mount the NAS Share Persistently
You’ve already used:
mount.cifs //{YOUR HOST}/NCBackup /mnt/share/nc/ -o user={YOURUSER},pass=[YOUR PASS}
To make this persistent across reboots, add an entry to /etc/fstab:
//{YOUR HOST}/NCBackup /mnt/share/nc cifs username={YOUR USER},password={YOUR PASS},iocharset=utf8,vers=3.0 0 0
🔐 Security tip: Put your credentials in /etc/samba/credentials:
sudo nano /etc/samba/credentials
Contents:
username={YOUR USER}
password={YOUR PASS}
Then update /etc/fstab:
//{YOUR HOST}/NCBackup /mnt/share/nc cifs credentials=/etc/samba/credentials,iocharset=utf8,vers=3.0 0 0
Ensure permissions:
sudo chmod 600 /etc/samba/credentials
Then mount it:
sudo mount -a
2. Create the rsync Backup Script
Create a script called /usr/local/bin/backup_nextcloud.sh:
sudo nano /usr/local/bin/backup_nextcloud.sh
Paste this:
#!/bin/bash
# Paths
SRC="/var/lib/docker/volumes/{YOUR VOLUME}/_data/data/"
DEST="/mnt/share/nc/data-backup-$(date +%F)/"
# Create destination directory
mkdir -p "$DEST"
# Run rsync
/usr/bin/rsync -av --no-perms --no-owner --no-group --exclude='*.sock' "$SRC" "$DEST"
# Optional: Clean up old backups (e.g. older than 7 days)
# find /mnt/share/nc/ -maxdepth 1 -type d -name 'data-backup-*' -mtime +7 -exec rm -rf {} \;
Make it executable:
sudo chmod +x /usr/local/bin/backup_nextcloud.sh
3. Schedule the Cron Job
Edit root’s crontab:
sudo crontab -e
Add this line:
0 0 * * * /usr/local/bin/backup_nextcloud.sh >> /var/log/nextcloud_backup.log 2>&1
This runs daily at 12:00 AM, logging to /var/log/nextcloud_backup.log.
✅ Done!
The script will:
- Backup Nextcloud’s data/ folder from the Docker volume.
- Store it in a date-stamped folder on the NAS.
- Run automatically every day at midnight.
🔄 (Optional Enhancements)
- Stop Nextcloud container during backup (for data consistency):
- docker stop nextcloud
- rsync ...
- docker start nextcloud
- Backup entire volume instead of just data/ if needed:
Change SRC path to: - /var/lib/docker/volumes/{YOUR VOLUME}/_data
Ik heb het nu via deze HOW TO draaien eens kijken of dat beter gaat.
Wanneer je NAS NFS ondersteunt, kan dat een betere optie zijn voor rsync. Kan ook passwordloos op basis van source IP (van de PI dus).
Rsync is een synchronisatie van data, dus een tweede locatie, maar niet een backup als historisch archief. Vanuit Linux kun je daar ook tar voor gebruiken (werkt ook invrementeel).
wanneer je van je NAS een backup draait kan een rsync uiteraard wel prima voldoen. 🙂
Na een paar dagen - draait dit script als een trein.
Ik heb wel deze line
find /mnt/share/nc/ -maxdepth 1 -type d -name 'data-backup-*' -mtime +7 -exec rm -rf {} \;
Aangezet zodat er 7 dagen backup wordt bewaard.