Nextcloud – manuell eingefügte Dateien einlesen

Als Ablage für diverse Daten benutze ich Nextcloud. Manchmal ist es sinnvoll Dateien wie Fotos, MP3s o.ä. manuell in den Verzeichnisbaum von Nextcloud einzufügen. Die Datenverzeichnisse findet man normalerweise unter:

/var/www/<Pfad_zur_Nextcloud-Installation>/data/<Benutzer>/files/

Der Besitzer bzw. die Gruppe ist die des Webservers und in der Regel www-data:www-data auf einem Debian-System mit Apache2. Wenn man nun Dateien per Shell, SCP oder (S)FTP in diese Verzeichnisse kopiert und die Rechte korrekt setzt dann erkennt Nextcloud die Dateien noch nicht da sie nicht in der Datenbank enthalten sind und daher für Nextcloud unsichtbar sind. Im Folgenden sind zwei Lösungen vorgestellt.

Die Shell-Lösung

Man kann Nextcloud allerdings dazu bringen diese Dateien manuell einzulesen. Mit:

sudo -u <Webserver-Benutzer> php /var/www/<Pfad_zur_Nextcloud-Installation>/console.php files:scan --all

wird Nextcloud dazu gebracht.

Die php-Lösung

Ein Problem hat man allerdings wenn man keinen Shellzugriff mit Rootrechten hat. Rootrechte braucht man um mit sudo den Befehl mit den Rechten des Webservers auszuführen. Das kann man jetzt mit Hilfe eines php-Scriptes lösen. Da das Script vom Webserver aufgerufen wird stimmen die Rechte zum Ausführen der Konsole von Nextcloud. Das Script mit dem Inhalt:

<?php exec("php /var/www/Pfad_zur_Nextcloud-Installation/console.php files:scan --all 2>&1", $out, $result); echo "Returncode: " .$result ."<br>"; echo "Ausgabe des Scripts: " ."<br>"; echo "<pre>"; print_r($out); ?>

wird mit einem Editor angelegt und als file-scan.php per SCP oder (S) FTP auf dem Server in ein Verzeichnis kopiert welches für den Webserver erreichbar ist. Im einfachsten Fall im Document-Root des Webservers welches sich meist in:

 /var/www/Pfad_zur_Nextcloud-Installation/

befindet. Durch den Aufruf von https://nextclouddomain/file-scan.php mit einem beliebigen Browser wird das Script ausgeführt.

Ich glaube nicht, dass es eine gute Idee ist das php-Script dauerhaft für die Öffentlichkeit zugänglich zu behalten und ich würde empfehlen dies zu löschen oder in ein Verzeichnis zu verschieben welches nicht für den Webserver erreichbar ist. Wo, das ist natürlich von den speziellen Gegebenheiten abhängig.

kais-universum.de