Nextcloud – Daten Automatisch löschen
Ich hatte die Anforderung das die Daten in der Nextcloud nach 30 Tagen automatisch gelöscht werden sollen. Dann habe ich mich hingesetzt und ein Bash Skripte geschrieben. Ebenfalls sollten bestimmte User ausgenommen werden. Das habe ich auch mit aufgenommen.
#!/bin/sh
# Script zum löschen der Nextcloud Dateien nach X Tagen
# 0 = 24 Stunden
LOESCHEN_NACH_TAGEN=29
NEXTCLOUD_DATA=/mnt/ncdata
dirs=$(find $NEXTCLOUD_DATA -maxdepth 1 -type d -printf "%f\n" | awk '!match($0,/^(ncdata|Allgemein|appdata_oc65lc0lmz8d|root|files_external|\
Admin|\
8561CAA3-924D-4591-9AB4-2077C4076AD3|\
B8F060D2-A833-4F3D-AD19-4992243E587E|\
F3031267-8C27-4141-8826-6CA337742B67\
)$/)')
echo "\nFolgende Ordner werden gescannt:"
echo $dirs
for d in $dirs; do
if [ -d "$NEXTCLOUD_DATA/$d/files" ]; then
echo "\n\n#############################################################################"
echo "\nPruefe auf Daten im Benutzerordner $NEXTCLOUD_DATA/$d/files - diese Dateien werden gelöscht:"
find $NEXTCLOUD_DATA/$d/files/ -type f -ctime +$LOESCHEN_NACH_TAGEN -delete
find $NEXTCLOUD_DATA/$d/files/ -mindepth 1 -type d -ctime +$LOESCHEN_NACH_TAGEN -delete
echo "\nExplizite Bereinigung und Pruefung des Benutzers $d auf Konsistenz"
sudo -u www-data /usr/bin/php /var/www/nextcloud/occ files:scan --path $d/files
else
echo "\n\n#############################################################################"
echo "\n$d wird uebersprungen, da der Ordner $NEXTCLOUD_DATA/$d/files nicht vorhanden ist"
fi
done
for d in $dirs; do
if [ -d "$NEXTCLOUD_DATA/$d/files_trashbin/files" ]; then
echo "\n\n#############################################################################"
echo "\nPruefe auf Daten im Benutzerordner $NEXTCLOUD_DATA/$d/files - diese Dateien werden gelöscht:"
find $NEXTCLOUD_DATA/$d/files/ -type f -ctime +$LOESCHEN_NACH_TAGEN -delete
find $NEXTCLOUD_DATA/$d/files/ -mindepth 1 -type d -ctime +$LOESCHEN_NACH_TAGEN -delete
echo "\nExplizite Bereinigung und Pruefung des Benutzers $d auf Konsistenz"
sudo -u www-data /usr/bin/php /var/www/nextcloud/occ files:scan --path $d/files
else
echo "\n\n#############################################################################"
echo "\n$d wird uebersprungen, da der Ordner $NEXTCLOUD_DATA/$d/files nicht vorhanden ist"
fi
done
echo "\n\n#############################################################################"
echo "\nFinale Bereinigung und pruefen der Benutzerdaten auf Konsistenz"
sudo -u www-data /usr/bin/php /var/www/nextcloud/occ files:scan --all
sudo -u www-data /usr/bin/php /var/www/nextcloud/occ files:scan-app-data
sudo -u www-data /usr/bin/php /var/www/nextcloud/occ files:cleanup
echo "\nScript abgeschlossen"
Im Anschluss muss noch das Skript ausführbar gemacht werden und in den Crontab eingebunden werden.
sudo chmod +x ./Skriptname.sh
sudo crontab -e
0 0 * * * /root/nextcloud_autodelete.sh > /var/log/nextcloud_autodelete_`date +\%Y-\%m-\%d_\%H:\%M:\%S-cron.log`