Das Speichern unterbricht harte Links unter OS X

372
soldrinero

Ich verwende OS X 10.10.5 und sehe ein seltsames Problem mit fest verknüpften Dateien. Wenn ich eine der verknüpften Dateien aktualisiere und die Änderung speichere, wird die andere verknüpfte Datei leer - eine Null-Byte-Datei. Dies geschieht, wenn eine verknüpfte Datei aktualisiert wird. Bei einer Untersuchung scheint sich der Inode der gespeicherten Datei zu ändern, dh vor dem Speichern haben beide Dateien einen Inode 1777192 und nach dem Speichern der aktualisierten Datei einen Inode 1777268, während die verknüpfte Datei noch 1777192 ist.

Ist das normal für OS X? Was kann ich tun, um den Link beim Aktualisieren der Dateien aufrechtzuerhalten? Ich verwende Hardlinks, um bestimmte Dateien in einem Ordner zu speichern, den ich mit einem externen Server rsync. Daher muss ich in der Lage sein, diese zu aktualisieren und den Link zu pflegen. Symlinks brechen ab, wenn sie überschrieben werden, daher kann ich sie nicht für diesen Zweck verwenden.

Wenn dies relevant ist, verfügt dieser Computer über ein Netzwerkkonto in einem Campus-Netzwerk.

Bearbeiten: Die fragliche Datei ist eine .bib-Datei, und das Verhalten tritt auf, wenn ich sie mit TeXShop bearbeite und speichere. Ich habe mit vim getestet und festgestellt, dass dies den Fehler nicht reproduziert. Der Fehler wird jedoch mit der integrierten TextEdit-App reproduziert.

2
Sie sollten hinzufügen, wie Sie die Datei "speichern". Ich glaube nicht, dass dieses Verhalten in OS X integriert ist. Es hängt also wahrscheinlich mit dem Werkzeug / der Methode zusammen, die Sie verwenden. jimtut vor 7 Jahren 2
Bearbeitet, um Tests mit vim, TeXShop und TextEdit zu zeigen, wobei nur die letzten beiden das Verhalten reproduzieren. soldrinero vor 7 Jahren 0
Einige Editoren "aktualisieren" eine bestimmte Datei, indem sie in eine temporäre Datei schreiben, das Original entfernen (die Verknüpfung aufheben) und die temporäre Datei anschließend zum ursprünglichen Namen verschieben (umbenennen). Vergleichen Sie [diese Frage] (https://emacs.stackexchange.com/q/4237). Dies erklärt, warum Inode-Nummern anders werden, was hier nicht ungewöhnlich ist. Ich verstehe jedoch nicht, warum und wie die Originaldatei vor dem Aufheben der Verknüpfung auf Null gekürzt wird. Wenn Sie die Datei als schreibgeschützt festlegen, sollte verhindert werden, dass diese bestimmte Datei abgeschnitten wird (insbesondere Inode, nicht Name). Die Fähigkeit, eine Datei zu erstellen, zu entfernen oder zu verschieben, hängt von den Verzeichnisberechtigungen ab. Kamil Maciorowski vor 6 Jahren 1

0 Antworten auf die Frage