31 Stimmen

Gibt es so etwas wie alternative Datenströme auf jedem Linux-Dateisystem?

Unter Windows NTFS gibt es eine nette, aber meist ungenutzte Funktion namens "Alternate Data Streams" (ADS), die ich kürzlich in einem Hobby-Entwicklungsprojekt verwendet habe.

Auf Mac HFS+ gibt es auch eine ähnlich nette, aber meist ungenutzte Funktion namens "named forks".

Ich denke daran, dieses Projekt auf Linux zu portieren, aber ich weiß nicht, ob irgendein Dateisystem auf Linux eine solche Funktion hat?

21voto

Chris Smith Punkte 5054

Es gibt sowohl unter Windows als auch unter Linux (und anderen Betriebssystemen) Dateisysteme, die erweiterte Attribute (EAs) unterstützen. Die Windows-Unterstützung wurde für die OS/2-Kompatibilität hinzugefügt und hat keine dokumentierte Schnittstelle, mit Ausnahme einer umständlichen Methode über die Backup-API (das ist, was Cygwin tut). EAs sind nur zum Speichern kleiner Werte gedacht. Unter Windows hat jeder EA einen ASCII-Namen (während fast alle anderen Namen Unicode sind) und die Gesamtgröße aller EAs in einer Datei darf nicht größer als 64k sein. EAs sind keine Dateien: Sie können kein Dateihandle auf eine EA öffnen und sie wie eine normale Datei lesen.

Alternative Datenströme sind eine separate Funktion von NTFS, die es Ihnen ermöglicht, alternative Unterdateien innerhalb einer Datei bereitzustellen. Jede Datei hat einen unbenannten Standard-Datenstrom, der automatisch geöffnet wird, wenn Sie keinen alternativen Datenstrom angeben. Sie können einen Handle auf einen ADS öffnen und ihn wie eine normale Datei lesen (und sogar ausführen), mit einem einzigen (Unicode-)Dateinamen. Ein ADS kann so groß wie eine beliebige Plattendatei sein.

Soweit ich weiß, gibt es kein genaues Analogon zu ADSes unter Linux, aber Sie können möglicherweise stattdessen EAs auf dem Linux-Port verwenden, wenn die Datenwerte klein sind.

16voto

hova Punkte 2731

Das Problem mit ADS ist, dass Windows diese ADS-Streams in der Sekunde "verliert", in der es auf ein Nicht-NTFS-Dateisystem wechselt. Es hält diese Datenströme nicht für wichtig, so dass sie oft nicht beibehalten werden. Sie werden feststellen, dass sie nicht zugänglich sind oder verschwinden, wenn sie über eine Netzwerkfreigabe, auf eine CD gebrannt, auf ein USB-Laufwerk gelegt werden, usw..

Lange Rede, kurzer Sinn: Wenn Sie nicht einen sehr engen Fokus für Ihre Anwendung haben (immer auf NTFS), würde ich ADS-Streams ganz vermeiden.

9voto

Javier Punkte 58737

Erweiterte Attribute werden von einigen Dateisystemen, insbesondere XFS und (ich glaube) JFS, unterstützt, sind aber in ihrer Größe begrenzt (64k in XFS). Reiser4 unterstützt Forks beliebiger Größe; aber es wird von keiner mir bekannten Distribution unterstützt. Eine weitere Option ist ZFS, ebenfalls nicht sehr brauchbar.

Letztendlich ist es wahrscheinlich klüger, einfach ein Verzeichnis zu verwenden.

3voto

Peter Shinners Punkte 3586

Die meisten Linux-Dateisysteme haben extended attributes . Ich kenne mich mit NTFS-Streams nicht aus, kann die beiden also nicht vergleichen. Die meisten Dateisysteme müssen mit Flags gemountet werden, um die erweiterten Attribute zu aktivieren, so dass dies möglicherweise nicht bei jedem System funktioniert. Sie werden normalerweise abgekürzt als xattr o xattrs .

0voto

André Punkte 12587

Das Einzige, was ich kenne, was ein wenig in diese Richtung geht, sind erweiterte Attribute aber nach dem, was ich über ADS gelesen habe, ist das definitiv nicht dasselbe. Wofür genau verwenden Sie das?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X