Ich möchte euch heute mal zeigen, wie man NC in Bash-Scripte einbinden und verwenden kann.
Warum verwende ich nun NC wenn ich Daten einfach von A nach B kopieren könnte ? Zum einen, weil Daten in der NC versioniert und wieder herstellbar sind und zum anderen weil ich Maschinendaten und Logdateien von jedem beliebigen Browser anschauen kann.
Zunächst teile ich meine Scripte in den spezifischen Teil und in den allgemeinen Teil; d.h. die Zugangsdaten liegen bei mir in einer eigenen Datei:
# Admin-Mail-Adresse
ADMINMAIL="meine@mail.de"
# Cloud-Zugangs-Daten
NUTZER="nutzer"
PASS="geheimespasswort"
URL="http://meine.cloud.de"
SUBURL="/remote.php/webdav"
DATE4=`date +%Y` # 2019
Da $URL und $SUBURL für das Protokoll WebDAV bei NC immer so zusammen gehören, kann man das eigentlich auch zusammen schreiben.
Jetzt kommen wir zum eigentlichen Script. Am Anfang binden wir die Datei mit den Zugansdaten ein:
SOURCE="/pfad/zum/config.script"
source $SOURCE
Weiterhin definiere ich noch die Pfade zum Ablegen der Daten in der NC:
LOGSTOR="/Pfad/Unterpfad/"$DATE"/Logs/"
FILESTOR="/Pfad/Andererpfad/"$DATE"/Weitererpfad/"
PFAD2="/DATA/nutzer/files"$FILESTOR
Nun lege ich das Jahresunterverzeichnis ("2019") an. Ich prüfe gar nicht weiter ob es das schon gibt.
curl -X MKCOL -u $NUTZER:$PASS $URL$SUBURL$LOGSTOR
curl -X MKCOL -u $NUTZER:$PASS $URL$SUBURL$FILESTOR
Im weiteren Verlauf passiert nun viel; in einer Schleife werden viele Dateien bearbeitet. Die Schleifenvariable ist auch hier $icurl -T $i -u $NUTZER:$PASS $URL$SUBURL$FILESTOR && echo `date +%T.%3N` "Verschiebe Originaldatei ..." >> $LOG
Jetzt wird es tricky; ich habe noch keinen gescheiten Weg gefunden, im Verzeichnis der NC zu lesen. Deshalb wechsle ich in das NC-Datenverzeichnis und lese die vorhandenen Daten aus. Dann prüfe ich in einer Schleife das Alter jeder Datei. Wenn die Datei ein gewisses Alter erreicht hat, wird sie gelöscht.
cd $PFAD2
for i in $(find $DATEI -mtime +60)
do
curl -X DELETE -u $NUTZER:$PASS $URL$SUBURL$FILESTOR$i
if [ $? -eq 0 ]
then
echo `date +%T.%3N` "Löschen der abgelaufenen Datei "$i" erfolgreich" >> $LOG
else
echo `date +%T.%3N` "Löschen der abgelaufenen Datei "$i" fehlgeschlagen, bitte pruefen ..." >> $LOG
fi
done
Dann wird noch die Log-Datei in das Log-Datei-Verzeichnis der Cloud verschoben und fertig ist die Arbeit !curl -T $LOG -u $NUTZER:$PASS $URL$SUBURL$LOGSTOR
Natürlich könnte man auch direkt in das NC-Datenverzeichnis schreiben. Nur werden dann die Dateien nicht von der NC erkannt, sie sind zwar im Verzeichnis - sind aber nicht im Browser zu sehen. Um die Dateien zu erfassen muß man in der Konsole den Dateiencheck anstossen (und das kann dauern !).
Dazu im NC-Verzeichnis, Konsole:php occ files:scan Nutzer -v
Deshalb auch das löschen über curl; hierdurch werden die Einträge aus der Datenbank entfernt.
Nextcloud User Forum
Als Antwort auf Nextcloud User Forum • •Natürlich kann man auch viele Dateien mit einem Script hintereinander weg hochladen. Dann macht man einfach eine Schleife nach dem Motto: