hansfenner
Goto Top

Kann Verzeichnis nicht löschen, wenn ein broken symlink drin ist

Hallo,

Ich kann unter Windows ein Samba-Verzeichnis nicht löschen, wenn darin ein verwaister (broken) Linux-Symlink drin ist.

Test:

1. Auf einem Samba-Share unter Windows oder Linux ein Verzeichnis erstellen und darin eine leere Datei.
2. Auf dem Linux Rechner eine Verknüpfung (Symlink) zu der obigen Datei erstellen.
3. Die Original Datei (mit Win oder Linux) löschen.

Ab jetzt wird auf dem Windows Rechner in dem Verzeichnis gar keine Datei mehr angezeigt. Die Original Datei haben wir ja gelöscht, aber der Symlink ist noch vorhanden.

In diesem Zustand ist es auf dem Windows Rechner nicht mehr möglich, das Verzeichnis zu löschen. Es erscheint auch keine Fehlermeldung. Es wird einfach nicht gelöscht.

Wie kann man dieses Problem lösen?

Hier hab ich einen uralten Link gefunden, der das Problem auch vorträgt. Aber eine funktionierende Lösung war nicht dabei:
http://samba.2283325.n4.nabble.com/Reporting-broken-symlinks-to-clients ...
"One of the simpler use cases is removal of a directory recursively. If
there's a symlink in the directory the windows client can't find. It can't
remove it, and then it can't remove the directory. "

Content-Key: 665923

Url: https://administrator.de/contentid/665923

Printed on: February 24, 2024 at 04:02 o'clock

Member: Lochkartenstanzer
Lochkartenstanzer Apr 20, 2021 updated at 11:40:59 (UTC)
Goto Top
Moin,

mach auf dem Samba-Server eine skript, daß nach broken links sucht und diese dann löscht (oder in einem extra Verzeichnis sammelt).

Ich weiß, daß das nur ein Workaroud ist, aber besser als nichts.

lks
Member: HansFenner
HansFenner Apr 20, 2021 at 12:35:17 (UTC)
Goto Top
Selbst wenn man das so machen würde, löst es das Problem nicht recht, weil nun immer noch die leeren Verzeichnisse stehen bleiben. In der Praxis sind das ja dann oft umfangreiche Verzeichnisbäume.

Konkret ist mir die Problematik aufgefallen, als ich mit npm/yarn (auf dem Linux-Rechner) Packages in das nodes-modules Verzeichnis reingezogen habe. Das sind ja teilweise grosse Mengen an Dateien und Verzeichnissen, die da entstehen.

Da das ganz nur ein Übungsprojekt war, hab ich auf dem Windows-Rechner den ganzen Nodes Folder mit Delete gelöscht. Übrig geblieben sind etliche Verzeichnisse und in jedem war ein broken symlink.

Ich denke es passiert folgendes: Wenn ich auf Windows eine ganze Verzeichnishierarchie lösche, werden die Dateien und Verzeichnisse von Windows rekursiv auf dem Samba Share gelöscht. Wenn nun dabei zuerst eine Original-Datei gelöscht wird, entsteht automatisch ein verwaister Symlink. Der kann nicht mehr gelöscht werden und somit auch das Verzeichnis nicht.

Und ich denke, die selbe Problematik habe ich auch, wenn ich mit Git Extensions auf einem Samba Share ein Repository aktualisiere. Noch nicht genau getestet, ab da hab ich auch regelmässig Fehlermeldungen in der Art: "Can't unlink folder XY".