hardlinks

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
aki
Beiträge: 83
Registriert: 02.02.2018 11:48:58

hardlinks

Beitrag von aki » 24.03.2022 09:20:56

Hallo zusammen,

wusste nicht so recht wohin mit meiner Frage. Daher bei Bedarf gerne verschieben.

Ich habe ein Verhalten beobachten können welches ich nicht nachvollziehen kann. Ich habe einen Hardlink erstellt und geprüft.

Code: Alles auswählen

> testfile
sowie

Code: Alles auswählen

/usr/bin/ln testfile hardlink_testfile
Wie folgt überprüft:

Code: Alles auswählen

/usr/bin/stat testfile
Ausgabe:

Code: Alles auswählen

 Datei: testfile
 Größe: 0         	Blöcke: 0          EA Block: 4096   reguläre leere Datei
 Gerät: fe04h/65028d	Inode: 40118328    Verknüpfungen: 2
Zugriff: (0644/-rw-r--r--)  Uid: ( 1000/cpaasche)   Gid: ( 1000/cpaasche)
Zugriff: 2022-03-24 09:07:50.830807760 +0100
Modifiziert: 2022-03-24 09:07:50.830807760 +0100
Geändert: 2022-03-24 09:08:08.107374531 +0100
Geburt: 2022-03-24 09:07:50.830807760 +0100
Und der Hardlink selbst:
Wie folgt überprüft:

Code: Alles auswählen

/usr/bin/stat hardlink_testfile
Ausgabe:

Code: Alles auswählen

 Datei: hardlink_testfile
 Größe: 0         	Blöcke: 0          EA Block: 4096   reguläre leere Datei
 Gerät: fe04h/65028d	Inode: 40118328    Verknüpfungen: 2
Zugriff: (0644/-rw-r--r--)  Uid: ( 1000/cpaasche)   Gid: ( 1000/cpaasche)
Zugriff: 2022-03-24 09:07:50.830807760 +0100
Modifiziert: 2022-03-24 09:07:50.830807760 +0100
Geändert: 2022-03-24 09:08:08.107374531 +0100
Geburt: 2022-03-24 09:07:50.830807760 +0100
Soweit so gut. Zwei Verknüpfungen eine zur Datenbank des Dateisystems welche ja sowieso vorhanden sein muss und die Zweite zum Hardlink. Lösche ich den Hardlink würde ich erwarten da es der letzte bestehende Hardlink ist das auch die betreffende Datei gelöscht wird. Dies ist hier aber nicht der Fall. Just for fun auch anders herum getestet hier blieb der Hardlink bestehen. Ich habe im zweiten Fall die eben gelöschte Datei (testfile) erneut angelegt und geprüft.

Das Ergebnis war dieses hier:

Code: Alles auswählen

Datei: testfile
Größe: 0         	Blöcke: 0          EA Block: 4096   reguläre leere Datei
 Gerät: fe04h/65028d	Inode: 40118339    Verknüpfungen: 1
Zugriff: (0644/-rw-r--r--)  Uid: ( 1000/cpaasche)   Gid: ( 1000/cpaasche)
Zugriff: 2022-03-24 09:18:06.086969759 +0100
Modifiziert: 2022-03-24 09:18:06.086969759 +0100
Geändert: 2022-03-24 09:18:06.086969759 +0100
Geburt: 2022-03-24 09:18:06.086969759 +0100

Code: Alles auswählen

Datei: hardlink_testfile
 Größe: 0         	Blöcke: 0          EA Block: 4096   reguläre leere Datei
 Gerät: fe04h/65028d	Inode: 40118328    Verknüpfungen: 1
Zugriff: (0644/-rw-r--r--)  Uid: ( 1000/cpaasche)   Gid: ( 1000/cpaasche)
Zugriff: 2022-03-24 09:07:50.830807760 +0100
Modifiziert: 2022-03-24 09:07:50.830807760 +0100
Geändert: 2022-03-24 09:18:03.714892110 +0100
Geburt: 2022-03-24 09:07:50.830807760 +0100
Also zwei verschiedene Inodes und jeweils nur eine Verknüpfung.

Wie ist das möglich? Dateisystem ist EXT4.

Grüße

Benutzeravatar
MSfree
Beiträge: 10759
Registriert: 25.09.2007 19:59:30

Re: hardlinks

Beitrag von MSfree » 24.03.2022 09:41:19

aki hat geschrieben: ↑ zum Beitrag ↑
24.03.2022 09:20:56
Zwei Verknüpfungen eine zur Datenbank des Dateisystems welche ja sowieso vorhanden sein muss und die Zweite zum Hardlink.
Da liegt dein Denkfehler.

Dateinamen sind in der Verzeichnisstruktur gespeichert, und von dort wird auf die Daten der Datei verwiesen. Jeder Verzeichniseintrag ist automatisch ein Hardlink. Gewöhnlich gibt es für jeden Dateiinhalt genau einen Hardlink.

Mit ln weist du dem Dateisystem nur an, einen weiteren Hardlink auf bereits vorhandene Daten zu setzen.

Löschst du einen der beiden Hardlinks, egal, ob den originalen oder den zweiten, bleibt immer der jeweils andere Hardlink über.

aki
Beiträge: 83
Registriert: 02.02.2018 11:48:58

Re: hardlinks

Beitrag von aki » 24.03.2022 10:31:34

Ich bin bisher davon ausgegangen das ja das OS zunächst einmal selbst wissen muss wo einen Datei ist daher auch der erste Hardlink. Also quasi nicht relevant für mich als Nutzer. Daher habe ich meinen Hardlink auch als den letzten bestehenden interpretiert. In diesem Lichte mach Deine Ausführung natürlich Sinn. Da stellt sich mir allerdings die Frage nach dem Sinn von Hardlinks im Vergleich zu symbolischen Links mit Ausnahme das ein Hardlink keine Inode verbraucht.

Grüße

mludwig
Beiträge: 794
Registriert: 30.01.2005 19:35:04

Re: hardlinks

Beitrag von mludwig » 24.03.2022 10:41:36

Die Unterschiede sind schon wichtig und je nach Anwendungsfall sehr deutlich: Symlinks funktionieren auch über verschiedene Dateisysteme, wenn du bei einem Symlink das Original löscht, funktioniert der Symlink nicht mehr. Auch Berechtigungen werden bei Symlinks und Hardlinks unterschiedlich gehandhabt.

aki
Beiträge: 83
Registriert: 02.02.2018 11:48:58

Re: hardlinks

Beitrag von aki » 24.03.2022 10:48:05

Hast Du denn für mich ein sinnhaftes Beispiel für Hardlinks? Die Sachen mit Berechtigung und kaputten Softlinks etc. sind mir bewusst. Und genau deshalb würde mich interessieren wann setze ich sinnvoll Hardlinks ein.

Grüße

mludwig
Beiträge: 794
Registriert: 30.01.2005 19:35:04

Re: hardlinks

Beitrag von mludwig » 24.03.2022 11:37:19

Einige Anwendungen mögen keine Symlinks, oder sie werden von den Sicherheitseinstellungen verhindert (Apache zum Beispiel).

Ein weiteres schönes Beispiel für Hardlinks sind Backups, zum Beispiel von rsnapshot welches auf rsync basiert. Das erste Backup ist eine vollständige Kopie aller Dateien (woche0). Im nächsten Backup (woche1) sind alle unveränderten Dateien Hardlinks auf das 1. Backup. Und das Rotieren des Backups ist einfach: das älteste Verzeichnis wird gelöscht (woche0), und dann wird einfach umbenannt (woche1 --> woche0).

aki
Beiträge: 83
Registriert: 02.02.2018 11:48:58

Re: hardlinks

Beitrag von aki » 24.03.2022 11:43:31

Ich danke Dir.

Grüße

Antworten