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 $i
curl -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.