Pro-Linux.de

Pro-Linux

Pro-Linux Diskussions- und Hilfeforum
Aktuelle Zeit: 19. Nov 2018 12:14

Alle Zeiten sind UTC+01:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Hardlinks aufspüren
BeitragVerfasst: 02. Dez 2007 10:03 
Hallo,

gibt es eine Möglichkeit, festzustellen, vieviele Hardlinks auf einer Partition bestehen?
Genauer, die Dateinamen aufzulisten, die auf die gleiche Datei verweisen (aber eben keine symbolischen Links)


Nach oben
   
 Betreff des Beitrags: hardlink
BeitragVerfasst: 02. Dez 2007 11:21 
Moin,

Ein Hardlink ist ein neuer Verzeichniseintrag auf eine schon bestehende Inode dh.
es sich nur um Namenseinträge, die auf die selbe Inode zeigen.

Das geht (u.a.) mit dem ls-Befehl nach inodes:

Beispiel:
Code:
[joern@erde ~]$ touch linktest.text
[joern@erde ~]$ ls -li linktest.text
203893957 -rw-r--r-- 1 joern joern 0 Dez  2 11:09 linktest.text

[joern@erde ~]$ ln linktest.text linktest2.text 
Code:
[joern@erde ~]$ ls -ilR  | grep "^ *203893957"
203893957 -rw-r--r--  2 joern joern        0 Dez  2 11:09 linktest2.text
203893957 -rw-r--r--  2 joern joern        0 Dez  2 11:09 linktest.text
Gruß
sumsi


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 03. Dez 2007 9:49 
Danke, aber das funktioniert bei Dir nur, weil Du den Namen und das Verzeichnis kennst. Ich dachte eher an etwas wie:

Finde alle hardlinks unterhalb von /usr. Also alle Namen, die auf die auf die jeweils gleiche Datei (Inode) verweisen. Anders ausgedrück: Finde alle Doppel (oder mehrfach)einträge

Quasi ein "find /usr -type l", nur halt nicht für symbolische Links.


Nach oben
   
 Betreff des Beitrags: link
BeitragVerfasst: 03. Dez 2007 10:41 
Moin,

da fällt mir jetzt keine fertige Lösung ein.

Mit
Code:
 ls -ilR 

bekommt amn alles der Reihenfolge gelistet, es fällt da schon auf, wenn 2 Inode-Bezeichner gleich sind.

Mit
Code:
 find -links N 
, für N eine Zahl, kann man nach voerhandenen mehrfachgelinkten Dateine suchen, man muss aber die Linkanzahl angeben.

Es bleibt dann also, um das zu automatisieren wahrscheinlich nur übrig, ein Script zu basteln.
Entweder ein Script, wo die Linkanzahl durchprobiert wird, oder
eines wo man sich eine Inode-Nr. nimmt und dann vergleicht, ob diese ein zweites Mal existiert und dann die nächste Nummer ...

Grüße
sumsi


Nach oben
   
 Betreff des Beitrags: Nachtrag
BeitragVerfasst: 03. Dez 2007 10:51 
Nachtrag

Beim find-Befehl fehlt natürlich noch dei Ursprungspunkt ;-)

Hinterher kann man immer sagen: Man solllte den Istzustand des Rechners
(Dateien-anzahl, Anzahl S.-Bits, Rechte, usw..) mit Bordmitteln oder mit div. Tools Inventurisieren um im Schadensfall schnell eine Übersicht zu bekommen.

Wenn ich Hardlinks im Unix-Source-Verzeichnis feststellen würde, ich glaube dann die Kiste würde ich neu aufsetzen. Ohne Püfsummenvergleich ist man nich 100% sicher, ob noch irgenwo ein rootkit oder andere Hintertür drinn' steckt ....

sumsi


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 03. Dez 2007 14:41 
Offline
prolinux-forum-admin
Benutzeravatar

Registriert: 14. Jan 2000 15:37
Beiträge: 699
Wohnort: Jülich
Die man-Page zu find ist nicht allumfassend, die info-Page aber genauer:
Code:
find . -links +1 ! -type d -print
liefert alle Dateien beliebigen Typs außer Verzeichnissen, die mehr als einen Hardlink haben. Ein Hardlink selbst ist ja die Mindestanzahl und entspricht den zuerst vergebenen Dateinamen.

Verzeichnisse werden ausgeklammert, da man sowieso auf Directories keine Hardlinks setzen darf. Der Linkcounter steht dort auch immer auf mind. 2 (Verweis aus dem übergeordneten Verzeichnis plus "." im Verzeichnis selbst) plus Anzahl enthaltener Subdirectories (Verweis ".." pro Subdirectory). Da kann man - denke ich - nix Verwertbares draus machen.

Wenn man jetzt wissen möchte, welche von diesen Dateien zueinander gehören, müsste man das find-Kommando ein wenig aufbohren:
Code:
find . -links +1 ! -type d -print0 | xargs -0 ls -i | sort -n
Zum Mitschreiben: find funktioniert wie vorher, trennt aber die Dateinamen in der Ausgabe mittels '\0' - Nullbyte bzw. ASCII-NUL. Das erwartet xargs auch wg Option -0 und bastelt daraufhin ein ls-Kommando für alle gefundenen Dateien zusammen. (-print0/-0 verhindert, das Leerzeichen im Dateinamen zum Problem werden.) Wegen Option -i packt ls vor die Dateinamen die Inodenummer, anhand derer sort zum Schluss nummerisch sortiert.

Ich hoffe, das hilft weiter.

Jochen

_________________
Die grösste Lüge der EDV? "Mal eben..."


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 03. Dez 2007 14:48 
Offline
prolinux-forum-admin
Benutzeravatar

Registriert: 14. Jan 2000 15:37
Beiträge: 699
Wohnort: Jülich
@sumsi:
Code:
$ find /usr/bin ! -type d -links +1 -print | wc -l
42
$
Und nein, ich werde die Maschine nicht neu aufsetzen :). Eine Datei unter mehreren unterschiedlichen Namen verfügbar zu machen und die Namen als eine Art implizite Aufrufoption zu verwenden ist althergebrachte UNIX-Technik. Beispielsweise sind "compress" und "uncompress" ein und dasselbe Binary, aber rufe ich es unter dem zweiten Namen auf, wirkt es, als hätte ich "compress -d" gestartet.

Jochen

_________________
Die grösste Lüge der EDV? "Mal eben..."


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 03. Dez 2007 15:05 
Offline
Benutzeravatar

Registriert: 11. Feb 2006 19:10
Beiträge: 3569
42! Wie war nochmal die Frage?

Janka

_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 22. Okt 2008 5:35 
Hey!
Ich kann das Programm Clone Remover vorsagen Finde doppelte Bilder!
Ich empfehle, es auszunutzen! :wink:


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 9 Beiträge ] 

Alle Zeiten sind UTC+01:00


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de