Dateien lassen sich nicht löschen

Ich bin in NEXTCLOUD und möchte ein komplettes Verzeichnis mit Unterordnern, das ich mit meinem Computer synchronisiert hatte, löschen. Die Syncronisierung mit dem Nextcloud Client ist entfernt. Nun bleiben in der Cloud einige Verzeichnisse und Dateien stehen, die sich nicht löschen lassen.

Was mache ich falsch?

Hier die Fehlermeldung:
Fatal webdav Exception: {“Message”:“HTTP/1.1 423 “02 16 Rundschreiben/Info zu 02 16 Rundschreiben/Michael/FKS” is locked”,“Exception”:“OCA\DAV\Connector\Sabre\Exception\FileLocked”,“Code”:0,“Trace”:"#0 /mnt/webu/b2/10/56783510/htdocs/download/3rdparty/sabre/dav/lib/DAV/Tree.php(179): OCA\DAV\Connector\Sabre\Directory->delete()\n#1 /mnt/webu/b2/10/56783510/htdocs/download/3rdparty/sabre/dav/lib/DAV/CorePlugin.php(285): Sabre\DAV\Tree->delete(‘02 16 Rundschre…’)\n#2 [internal function]: Sabre\DAV\CorePlugin->httpDelete(Object(Sabre\HTTP\Request), Object(Sabre\HTTP\Response))\n#3 /mnt/webu/b2/10/56783510/htdocs/download/3rdparty/sabre/event/lib/EventEmitterTrait.php(105): call_user_func_array(Array, Array)\n#4 /mnt/webu/b2/10/56783510/htdocs/download/3rdparty/sabre/dav/lib/DAV/Server.php(459): Sabre\Event\EventEmitter->emit(‘method:DELETE’, Array)\n#5 /mnt/webu/b2/10/56783510/htdocs/download/3rdparty/sabre/dav/lib/DAV/Server.php(248): Sabre\DAV\Server->invokeMethod(Object(Sabre\HTTP\Request), Object(Sabre\HTTP\Response))\n#6 /mnt/webu/b2/10/56783510/htdocs/download/apps/dav/appinfo/v1/webdav.php(60): Sabre\DAV\Server->exec()\n#7 /mnt/webu/b2/10/56783510/htdocs/download/remote.php(165): require_once(’/mnt/webu/b2/10…’)\n#8 {main}",“File”:"/mnt/webu/b2/10/56783510/htdocs/download/apps/dav/lib/Connector/Sabre/Directory.php",“Line”:284,“User”:“peter”}

Hier steht was von “is locked”. Ist das bereits die Erklärung?

In so einem Fall kann man versuchen den “locked” Status aus der Datenbank für die Datei zu entfernen. NC “merkt” sich welche Datei(en) gerade bearbeitet werden (bzw auf welche zugegriffen wird) und sperrt sie für kurze Zeit für anderweitige Dateioperationen. So werden beispielsweise Dateien nicht verschoben, die gerade synchronisiert werden, oder ähnliches.

Den “locked” Status kann man entfernen, indem man:
DELETE FROM oc_file_locks WHERE 1
in der Datenbank ausführt. Danach würde ich wieder versuchen die betreffenden Dateien/Ordner zu löschen.

Entschuldige, bevor du die locker entfernst, solltest du dein Dateisystem erst noch einmal von Nextcloud selbst überprüfen lassen:

sudo -u www-data php occ files:scan --all

im Ordner der NC Installation ausführen, lässt NC das Dateisystem neu Einscannen. Vielleicht sind die Ordner gar nicht mehr “physisch” vorhanden, sondern nur noch als Dateileichen in der Datenbank aufgelistet. Sollte dies der Fall sein, löst das neu scannen der Bibliothek dein Problem.

2 Likes

mmh, an diesem statement habe ich auch herumgebastelt.

Hintergrund: meine Datenbank: mariadb
Die Beschreibung ist etwas arg cryptisch!

In meinem Fall musste ich folgende statements auf dem NC-Server absetzen:

dbuser, dbname, dbpassword findest Du in /var/www/nextcloud/config/config.php

mysql -u dbuser -p
dbpassword
use dbname;

zunächst mal schauen ob es überhaupt locks gibt:

select * from oc_file_locks where oc_file_locks.lock != 0;

Danach kann der lock dann mit

delete from oc_file_locks where oc_file_locks.lock !=0;

gelöscht werden.

Soweit die Details zur Anweisung DELETE FROM oc_file_locks WHERE 1, die meiner Meinung nach nicht korrekt ist, falls es sich um SQL-Syntax handeln sollte.

Auf der anderen Seite blieben mir noch folgende Fragen:

  1. Ich habe auch Dateien mit den lock-Werten 3 und -1 gesehen, die auch entsprechende Fehler im Server Lock erzeugt haben. Was hat es mit den Werten auf sich, wann darf gelöscht werden, wann nicht?
  2. Offentsichtlich gibt es für jede Datei in der Nextcloud einen Eintrag mit Wert 0 in oc_file_locks. Wäre es da nicht korrekt den lock-Wert auf 0 zu setzen statt die Zeile zu löschen?
  3. Der Server sollte in den Maintenance Mode gesetzt oder gestoppt werden bevor man das SQL-Statements ausführt??
3 Likes

Und wie mache ich als ganz unbedarfter User von NEXTCLOUD der nicht weis wo er welche Datenbank mit welchem SQL Statement durchsuchen muss nun weiter? Bei allen Verzeichnissen, die ich löschen möchte bleiben ein oder zwei Dateien stehen, so dass es nun etwas unübersichtlich wird.

Danke für den Post.

Vorher mit =1 probiert hat alles nicht geholfen, Dateien hatten den Wert -1, hat super geklappt!

Ich klinke mich mal ein, ich habe nämlich auch Dateien/Ordner, die sich nicht löschen lassen. Meine NextCloud läuft auf einer virtuellen Maschine im Rahmen eines Hostingpakets eine großen, deutschen Webspaceproviders. Ich habe also nur beschränkt Zugriff. Zum Beispiel konnte ich den Befehl ‘sudo -u www-data php occ files:scan --all’ nur abgewandelt ausführen als php occ files:scan --all. Die darauf folgende Fehlermeldung ist:

X-Powered-By: PHP/4.4.9
Content-type: text/html


Fatal error: main() [function.require]: Failed opening required '__DIR__/console.php' (include_path='.:/usr/lib/php4.4') in /homepages/XXX/htdocs/nextcloud/occ on line 11

Auch die Suche nach den blockierten Dateien/Ordnern ist mir noch nicht ganz klar. Soll ich die Datenbankeinträge mit dem Parameter 0 behandeln oder die mit 1? Die Abfrage mit 0 bringt keine Einträge. Die Abfrage mit 1 bringt 25 Einträge, aber in der Spalte lock ist stehts »0« eingetragen:

He, ich glaube es nicht: Ich konnte jetzt alle Ordner einfah so löschen. Dabei habe ich nichts gemacht, keine Updates, die Befehle (s.o.) meldeten Fehler.

Hallo zusammen,

ich habe das gleiche Problem, kann aber mit den Antworten nichts anfangen, da ich nicht mal weiß wie ich an die Datenbank komme geschweige dort etwas ändern kann. Ich verstehe nur Bahnhof. :slightly_frowning_face:

vg
Marie

Über phpmyadmin bspw… Bist du bei einem Shared Webhoster ist das in der Regel vorinstalliert.
Weitere Infos über deinen Server bzw. Provider wären für uns dann hilfreich

ich bin hier:

Bin mir aber momentan nicht so sicher, ob das eine gute Wahl war.

Ab “Drive Basic” hast du Zugriff auf ein “Admin Panel”. Suche dort mal nach “Datenbank”, “Datenbank verwalten” oder “phpmyadmin”.

Ich kann leider nichts in die Richtung finden :frowning:

Das ist auch nicht das Panel, welches ich meinte.
Evtl. müsstest du einmal den Support dort bemühen.

Sorry, aber das habe ich auch nicht geschafft, ich brauchte einen Datenbank Spezi der mir das gemacht hat. Also ohne Support würde ich sagen geht das nicht.

Erst einmal geht es darum, zu finden, wo sie den Datenbankzugriff erreicht. Ihren Provider kenne ich leider nicht aus eigener Anschauuung.

Das ist mir schon klar, aber auch den habe ich alleine nicht gefunden, besser, ich habe ihn gefunden aber die Datenbank nicht. Deswegen gebe ich dir recht, ohne den Support zu bemühen klappt das unter Umständen nicht.