• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Verständnisfrage zu Hardlink

gima84

Newbie
Hallo,
ich habe schon das Wiki zu Hardlink gelesen. Trotzdem ist mir etwas nicht ganz klar:
Z.B. Ich habe 2 Hardlinks. Wenn ich den 1. Hardlink bearbeite (und speichere) werden die Änderungen im 2. Hardlink übernommen (sind damit die 2 Hardlinks nach Bearbeitung wieder identisch)?
Und benötigt jeder Hardlink genau so viel Speicherplatz wie die Orginaldatei?
Danke für eure Antworten.
MfG Martin
 

dukenuker

Newbie
gima84 schrieb:
Hallo,
ich habe schon das Wiki zu Hardlink gelesen. Trotzdem ist mir etwas nicht ganz klar:
Z.B. Ich habe 2 Hardlinks. Wenn ich den 1. Hardlink bearbeite (und speichere) werden die Änderungen im 2. Hardlink übernommen (sind damit die 2 Hardlinks nach Bearbeitung wieder identisch)?
Ganz genau, egal welche Datei Du bearbeitest, die andere wird danach genauso aussehen.
gima84 schrieb:
Und benötigt jeder Hardlink genau so viel Speicherplatz wie die Orginaldatei?
Ja, hättest du mit Ausprobieren selber rausbekommen:
Code:
$ echo "Das ist ein Test" > datei1

$ ln datei1 datei2

$ ll datei*
-rw-rw----  2 ste fhg 17 2007-06-25 15:16 datei1
-rw-rw----  2 ste fhg 17 2007-06-25 15:16 datei2

ste@fhg040:~  -  ntx(ntx:1)  -  notrace


Grüße,
Simon
 

regexer

Advanced Hacker
gima84 schrieb:
Und benötigt jeder Hardlink genau so viel Speicherplatz wie die Orginaldatei?
Der Trick ist: Beim Hardlink wird nur ein zusätzlicher Verweis (=Link) auf denselben Speicherbereich angelegt. Datenmäßig existiert der Dateiinhalt also nur ein einziges mal. Der einzige zusätzliche Speicherplatz ist der Verweis selbst, und der dürfte verschwindend gering sein.

Siehe auch http://de.wikipedia.org/wiki/Hardlink
 

dukenuker

Newbie
notoxp schrieb:
gima84 schrieb:
Und benötigt jeder Hardlink genau so viel Speicherplatz wie die Orginaldatei?
Der Trick ist: Beim Hardlink wird nur ein zusätzlicher Verweis (=Link) auf denselben Speicherbereich angelegt. Datenmäßig existiert der Dateiinhalt also nur ein einziges mal. Der einzige zusätzliche Speicherplatz ist der Verweis selbst, und der dürfte verschwindend gering sein.

Siehe auch http://de.wikipedia.org/wiki/Hardlink

Oups, und wieder was gelernt... :p
 

dukenuker

Newbie
notoxp schrieb:
dukenuker schrieb:
Oups, und wieder was gelernt... :p
Gut! Dann weißt du jetzt auch, was beim ls -l diese komische Zahl vor dem Benutzernamen soll... :wink:
Das wusste ich schon vorher, ansonsten könnte man die beiden Links gar nicht zueinander zuordnen. Aber dass (logischerweise) nur ein mal Speicherplatz verbraucht wird, ist mir noch gar nicht eingefallen! Es lebe Linux... :wink:
 

regexer

Advanced Hacker
dukenuker schrieb:
Das wusste ich schon vorher, ansonsten könnte man die beiden Links gar nicht zueinander zuordnen.
Sorry für meine Besserwisserei. Eigentlich kann man die Dateien nicht über diese Zahl zuordnen. Beispiel:
Code:
$ echo x > a
$ cp a b
$ ln a d
$ ln b c
$ touch a b
$ ls -l a b c d
-rw-rw----   2 user     group          2 Jun 25 16:52 a
-rw-rw----   2 user     group          2 Jun 25 16:52 b
-rw-rw----   2 user     group          2 Jun 25 16:52 c
-rw-rw----   2 user     group          2 Jun 25 16:52 d
 

dukenuker

Newbie
Doch - aber mit ls -i:
Code:
$ echo x > a
$ cp a b
$ ln a d
$ ln b c
$ ll -i
4423783 -rw-rw----  2 ste fhg       2 2007-06-25 17:10 a
4423784 -rw-rw----  2 ste fhg       2 2007-06-25 17:10 b
4423784 -rw-rw----  2 ste fhg       2 2007-06-25 17:10 c
4423783 -rw-rw----  2 ste fhg       2 2007-06-25 17:10 d
 

regexer

Advanced Hacker
dukenuker schrieb:
Doch - aber mit ls -i:
Bingo! So sieht man sehr schön, dass die Einträge b und c wirklich physisch auf denselben Speicherbereich auf dem entsprechenden device zeigen.

Alternativ ginge übrigens auch
Code:
stat --format "%i %n" a b c d

Wenn die hardlinks in verschienden Verzeichnissen liegen wird es schwierig. Da wüsste ich auch keine schlaue Lösung wie man von dem einen Verzeichniseintrag auf den anderen kommt...
 

dukenuker

Newbie
notoxp schrieb:
Wenn die hardlinks in verschienden Verzeichnissen liegen wird es schwierig. Da wüsste ich auch keine schlaue Lösung wie man von dem einen Verzeichniseintrag auf den anderen kommt...

Geht mit:

find -samefile datei

Code:
$ echo test > c
$ ln c Documents/b
$ ll -i c Documents/b
4423784 -rw-rw----  2 ste fhg 5 2007-06-25 17:49 c
4423784 -rw-rw----  2 ste fhg 5 2007-06-25 17:49 Documents/b
$ find -samefile c
./c
./Documents/b

oder mit

find -inum n

Code:
$ echo test > c
$ ln c Documents/b
$ ll -i c
4423784 -rw-rw----  2 ste fhg 5 2007-06-25 17:52 c
$ find -inum 4423784
./c
./Documents/b
 

regexer

Advanced Hacker
dukenuker schrieb:
Geht mit:

find -samefile datei

oder mit

find -inum n
Wieder was dazugelernt :wink:

Wobei ich ehrlich gesagt im täglichen Leben bis auf die Einträge . und .. kaum Begegnungen mit hardlinks hatte. Die sind wahrscheinlich seit der Einführung der symbolic links etwas aus der Mode gekommen.
 
A

Anonymous

Gast
notoxp schrieb:
Wobei ich ehrlich gesagt im täglichen Leben bis auf die Einträge . und .. kaum Begegnungen mit hardlinks hatte. Die sind wahrscheinlich seit der Einführung der symbolic links etwas aus der Mode gekommen.

keine Ahnung was du für ein System hast :wink:
Code:
Pingu:/ # find / -type f -links +1 -ls 2>/dev/null | wc -l 
3783
meist merkst du es gar nicht, lass mal das wc hinten weg und schau mal was da alles an bekannten Dateien dabei ist.

robi
 
Oben