"Hardlink X zu Y kann nicht erstellt werden: Operation nicht zulässig" auf ext2-Laufwerk von cygwin cp -al

1383
Kev

/ cygdrive / d / ist eine als ext2 formatierte und mit ext2fsd gemountete USB-Festplatte .

Wenn ich versuche, cp -al /cygdrive/d/X /cygdrive/d/Ywo X eine Datei ist, erhalte ich die Fehlermeldung im Titel.

Dinge, die ich ausprobiert habe

Ich habe es geschafft, chmod -R 777 /cygdrive/daber ich bekomme immer noch das gleiche Ergebnis.

Ich arbeite als lokaler Administrator, der Eigentümer von / cygdrive / d ist.

X ist eine Datei, kein Verzeichnis.

Windows Server 2012 R2 mit aktuellem Stand von cygwin64.

Es ist ext2, weil ich es zum Beispiel kann, touch /cygdrive/d/filename_with_a_colon:in_itund es funktioniert und ich kann es mit sehen ls. Ganz zu schweigen davon, heißt es in ext2fsd und dem Windows Disk Manager.

Ironischerweise funktioniert dieselbe Syntax auf einem NTFS-Laufwerk einwandfrei und erstellt einen NTFS-Hardlink.

Ich habe auch versucht, das Laufwerk als ext3 neu zu formatieren, mit den gleichen Ergebnissen. Ich hatte mir gedacht, dass ext2 eher unterstützt wird, weil es älter ist als ext3 / 4, aber ich denke, dass es keinen Unterschied macht.

Die Frage

Wie kann ich mit cygwin einfache ext2-Hardlinks erstellen?

0
Funktioniert "ln"? DavidPostill vor 9 Jahren 0
@DavidPostill sagt genau dasselbe. Kev vor 9 Jahren 0
Cygwin möchte wahrscheinlich einen NTFS-Hardlink erstellen, ähnlich wie "mklink". Wenn keines dieser Programme funktioniert, wird es vom Treiber nicht unterstützt. Daniel B vor 9 Jahren 1
@DanielB Ich vermute, ich habe das Gefühl, es könnte Ext fses unterstützen, die auf der Tatsache basieren, dass sie über mke2fs aus dem e2fsprogs cygwin-Paket formatiert werden könnten. Du hast vielleicht recht. Kev vor 9 Jahren 0
@Kev Cygwin verwendet Windows-Funktionen (z. B. Dateisystemtreiber), um auf Dateien zuzugreifen. Tools im e2fsprogs-Paket werden auf rohen Festplatten ausgeführt. Daniel B vor 9 Jahren 1
@DanielB, IOW ext2fsd müsste die Erstellung von Hardlinks unterstützen, aber cygwin müsste das auch erkennen und nutzen? Kev vor 9 Jahren 0
Wenn cygwin unter Windows '`mklink` verwendet, denke ich, dass es hoffnungslos ist:` W: \> mklink / H testlink test' gibt 'lokale NTFS-Volumes für den Abschluss der Operation vor.', So dass ext2fsd dies nicht durch Überschreiben unterstützt . Kev vor 9 Jahren 0

1 Antwort auf die Frage

2
Daniel B

Windows unterstützt in der Tat feste Links. Die Dokumentation CreateHardLinksagt jedoch alles aus:

Diese Funktion wird nur im NTFS-Dateisystem unterstützt

Diese Einschränkung ist wahrscheinlich hart codiert. Da ext2fsd eindeutig nicht NTFS ist, weigert sich Windows, feste Links darauf zu erstellen.

Cygwin bietet POSIX-API-Kompatibilität (wie auch immer) zusätzlich zu Windows-APIs. Das bedeutet, dass es letztendlich auch aufruft CreateHardLinkund denselben Einschränkungen unterliegt wie mklinkandere Windows-Software.

Viele Werkzeuge des e2fsprogs Pakets (wie mke2fs, e2fsck, resize2fs, ...) arbeiten direkt auf der Festplatte, ohne auf Dateisystem - Treiber angewiesen zu sein . Aus diesem Grund muss das Dateisystem deaktiviert werden, bevor es zum Ändern von Daten verwendet wird. Aus diesem Grund können sie auch funktionieren, ohne dass Windows (nativ) überhaupt auf ext2 / 3/4 zugreifen kann.

Letztendlich bedeutet das, ein ext2-Laufwerk in eine Windows-Box zu stecken, wenn Sie harte Links (z. B. für rsnapshot) verwenden möchten, ist es erfolglos, es sei denn, Sie möchten cygwin vermeiden und es an eine VM weiterleiten, eine andere Dose Würmer . Kev vor 9 Jahren 0
@Kev Ja, das stimmt. Das Lesen vorhandener Hardlinks sollte jedoch problemlos möglich sein. Daniel B vor 9 Jahren 0