BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Dateien mit identischem Inhalt finden

Auf einem System entstehen mit der Zeit viele Dateien mit identischem Inhalt. Diese können mit samefile aufgespürt werden. samefile findet man im FreeBSD Portbaum unter sysutils/samefile:

# cd /usr/ports/sysutils/samefile && make install clean

samefile muss einfach eine Liste von Dateien übergeben werden, welche verglichen werden sollen. Dies kann am einfachsten mit find(1) gemacht werden:

# echo test > datei1
# cp datei1 datei2
# cp datei2 datei3
# echo test2 >> datei2
# ln datei1 datei4
# find . -type f | samefile
5 ./datei1 ./datei3 = 2 1

Die Ausgabe von samefile zeigt in der ersten Spalte die Grösse der Datei in Byte an, dann die Dateinamen der identischen Dateien. Liegen die Dateien auf der gleichen Partition, wird dies durch ein Gleichheitszeichen in der dritten Spalte angezeigt. Die letzten beiden Werte zeigen die Anzahl Hard-Links, die auf die beiden Dateien zeigen.

Mit der -v Option werden nach der Liste mit den identischen Dateien einige Werte zu samefile angezeigt:

# find /home/beat -type f | samefile -v
...
Ganz lange Liste
...
34102 files left after removing sizes that appear only once.
6135 groups of files with same size.
Largest group of one size is 979 files with size 53.
Memory consumption:
Largest equality table used 478731 bytes.
Binary tree built with 15174 nodes of size 24 = 364176 bytes.
Allocated 43141 nodes of size 16 = 690256 bytes for file lists.
You have a total of 819245964 bytes in identical files.

Mehr Informationen zu samefile findet man in der Manpage samefile(1).

 Permalink