wie ist eine Datei aufgebaut?

6 Antworten

Dateien sind erst einmal ein "langer Faden" von Bytes oder auch Bits. Auf einem Magnetband sind die anders angeordnet als auf einer CD oder auf einer Festplatte.

Zu einer Datei gehören je nach Betriebssystem noch Daten, sogenannte Metadaten, die Informationen über die Datei enthalten. Je höher ein Betriebssystem entwickelt, um so mehr solcher "Zusatzdaten" sind notwendig.

Unix, VMS, Linux .. benötigen neben den Informationen über Erstellungsdatum, Änderungsdatum auch Einträge über den Besitzer, eine Gruppe, die Zugriffsrechte ...

Einfache Betriebssysteme, wie DOS und Windows, die über keine Userdaten verfügen müssen, benötigen weniger Metadaten.

Die Dateien selbst verfügen je nach Typ über Header, die den Programmen, mit denen sie verarbeitet (geöffnet) werden sollen, spezielle Informationen.

Unix/Linux kann daran den Typ erkennen und benötigt daher keine Dateinamen-Erweiterungen wie .doc oder .pdf ....

Woher ich das weiß:Berufserfahrung

MupfSpace 
Beitragsersteller
 31.01.2020, 07:49

Wie kann ich diese Metaten auslesen und gegebenenfalls auch verändern(z.B. wenn ich selbst ein Programm schreibe welches Metadaten benötigt)?

0
guenterhalt  31.01.2020, 08:43
@MupfSpace

Seit ca. 30 Jahren benutze ich fast nur noch tcl als Programmiersprache.

Mit der Standard-Funktion file komme ich an die meisten Daten heran. Mit stat an den Rest.

In anderen Sprachen wird es ähnliche Funktionen/Proceduren geben.

0
MupfSpace 
Beitragsersteller
 31.01.2020, 19:35
@guenterhalt

Wie genau würde das aussehen?

Ich habe mir mit:

sudo apt-get install tcl tk

tcl installiert und es mit:

tclsh

gestartet.

Wenn ich aber z.B.:

% file stat test.png f
% puts $f

Mache. Bekomme ich folgenden Fehler:

can't read "file": variable is array

Ich kenne mich mit tcl leider nicht wirklich aus und weiß deshalb nicht wie ich dieses array ausgeben kann.

Kannst du mir helfen?

0
guenterhalt  31.01.2020, 20:00
@MupfSpace

So aus dem Hut kann ich das nicht sagen. Bin noch 2 Wochen im Urlaub und komme nicht an meinen PC

Mit tcl wurden aber auch die manuals installiert

man file

Und dann lesen.

Die Daten werden in ein Array geschrieben, die dann über einen Namen ausgelesen werden können.

Helfen kann ich so in 2 Wochen.

0
MupfSpace 
Beitragsersteller
 31.01.2020, 20:03
@guenterhalt

Okay.

Ich wünsche dir noch einen schönen Urlaub.

0
MupfSpace 
Beitragsersteller
 31.01.2020, 21:13
@guenterhalt

So wie es aussieht hat $f keinen inhalt:

can't read "f(owner)": no such element in array
0
MupfSpace 
Beitragsersteller
 01.02.2020, 10:00
@guenterhalt

Da kommt der gleicher Fehler.

So wie ich das verstanden habe ist das Arry leer.

mit $f(owner) oder $f(OWNER) sollte ich normaler weise den Owner also den Besitzer der Datei aus dem array auslesen können.

also ist die Klammer dazu da ein Element aus dem array zu laden...

Korrigiere mich bitte wenn ich Falsch liege.

0
guenterhalt  01.02.2020, 11:54
@MupfSpace

Genau so ist es . Tcl kennt nur String als Datentyp. Damit wird auch in Arrays eine Zeichenkette zur Kennzeichnung eines Elements benutzt. Die kann auch 0 sein, ist aber doch "0" und kein int-Wert.

Es ist damit auch nicht möglich auf z.B. auf ein Element mit Index 1 zuzugreifen. Man muss den Namen kennen. Auch wenn ich das schon oft benutzt habe, ich will es mit einfach nicht merken. Merke mir aber wo es steht und das ist in

man n file

( n ist für tcl/tk als Sektor vorgesehen)

0
guenterhalt  01.02.2020, 12:10
@guenterhalt

Hab im Netz ein Manual gefunden,

Owner gehört in keiner Schreibweise dazu. Aber z.B mtime

puts [file attributes -owner <filename>]

sollte den Besitzer anzeigen.

Warum man da einige Parameter anders behandelt? Keine Ahnung.

0

Wahrscheinlich meinst du sowas, wie den Aufbau eines TCP-Pakets, nur eben bei Dateien, oder? Da gibt es nichts. In der FAT steht drin, bei welchem Cluster die Datei anfängt und wieviele Byte sie lang ist. Die Festplatte wird dann einfach angewiesen, die Bytes, die in dem Bereich stehen, in den Lesepuffer zu schreiben.

Eine Textdatei besteht also z.B. einfach nur aus dem Text, der in der Datei steht. Andere Dateitypen, wie z.B. Bilder oder Dokumente haben in der Regel zusätzlich zur Dateiendung noch am Anfang der Datei eine "magic number", die dem jeweiligen Programm dazu dient, die Datei eindeutig zu identifizieren.

Ansonsten ist aber jede Datei anders aufgebaut.

Eine Datei hat keine Struktur in dem Sinne.

Es gibt einen Dateieintrag im Dateisystem. Dieser enthält den Namen, Erstelldatum/Zeit, letzten Zugriff oder auch Zugriffsrechte und wo genau auf der Festplatte die Datei liegt. Aber das ist je Dateisystem verschieden und normalerweise auch nicht direkt sichtbar. Das zeigt der Dateibrowser dir eben aufgearbeitet an!

Woher ich das weiß:Studium / Ausbildung – Student der Informatik an der HU Berlin

guenterhalt  31.01.2020, 08:54

Nicht direkt sichtbar?

Was ist dann der Report von ls -lai ?

Es gibt eben mehr als nur Fenster mit Informationen für "Hausfrauen".

0
Lolwis111  31.01.2020, 09:00
@guenterhalt

Das ist mir klar. Aber dort sind die Informationen bereits aufgearbeitet! Du siehst keine Startsektoren, keine Inodes auch die Clusterchain ist versteckt.

0

Genau. Dazu müsste man schon wissen, was für eine Datei, denn unterschiedliche Dateitypen haben unterschiedliche Formate.

Woher ich das weiß:Studium / Ausbildung – Ausbildung, Praxiserfahrung und Eigenstudium.

Kommt auf das Datei-Format an. Einfache Text-Datei, PDF, Video.... In jedem Fall viele 0er und 1er.