HARDLINK(1) Dienstprogramme fur Benutzer HARDLINK(1) BEZEICHNUNG hardlink - mehrere Kopien einer Datei verlinken UBERSICHT hardlink [options] directory|file... BESCHREIBUNG hardlink ist ein Werkzeug, das Kopien einer Datei durch harte Links oder Kopieren-beim-Schreiben-Clones (copy-on-write clones) ersetzt und dadurch Platz spart. hardlink erstellt zunachst einen Binarbaum aus Dateigrossen und vergleicht anschliessend den Inhalt von Dateien gleicher Grosse. Es gibt zwei grundlegende Methoden zum Vergleichen der Inhalte. Die memcmp-Methode liest Datenblocke direkt aus den Dateien und vergleicht sie. Die andere Methode basiert auf Checksummen (wie SHA256); in diesem Fall wird fur jeden Datenblock die Checksumme mit Hilfe der Crypto-API des Linux-Kernels errechnet und diese Checksumme im Anwenderbereich gespeichert und fur Dateivergleiche verwendet. Fur jede Datei wird auch ein >>intro<<-Puffer (32 bytes) zwischengespeichert. Dieser Puffer wird unabhangig von der Vergleichsmethode und angeforderten >>cache-size<< und >>io-size<< verwendet. Der >>intro<<-Puffer reduziert Operationen mit Dateninhalten erheblich, da Dateien am Anfang oft sehr unterschiedlich sind. OPTIONEN -c, --content berucksichtigt bei der Bestimmung, ob zwei Dateien gleich sind, nur Dateiinhalte, jedoch keine Attribute. Gleichbedeutend mit -pot. -b, --io-size Grosse gibt die Grosse des read(2)- oder sendfile(2)-Puffers beim Vergleichen von Dateiinhalten an. Dem Argument Grosse kann eines der multiplikativen Suffixe KiB, MiB und so weiter folgen (das >>iB<< ist optional, zum Beispiel ist >>K<< gleichbedeutend mit >>KiB<<). Die Vorgabe ist 8KiB fur die memcmp-Methode und 1MiB fur die anderen Methoden. Die Nur-memcmp-Methode verwendet Prozessspeicher fur den Puffer, wahrend die anderen Methoden ohne Kopiervorgange arbeiten und die E/A-Operationen im Kernel ausgefuhrt werden. Die Grosse kann im laufenden Betrieb geandert werden, um eine Reihe von zwischengespeicherten Inhalts-Checksummen anzupassen. -d, --respect-dir versucht, nur Dateien mit dem gleichen Verzeichnisnamen zu verlinken. Das Verzeichnis der obersten Ebene (wie in der Befehlszeile von hardlink angegeben) wird dabei ignoriert. Beispielsweise verlinkt hardlink --respect-dir /foo /bar /bla/eine/datei mit /blub/eine/datei, aber nicht /blub/andere/datei. Wenn Sie dies mit *--respect-name*kombinieren, werden ganze Pfade (ohne das Verzeichnis der obersten Ebene) verglichen. -f, --respect-name versucht, nur Dateien mit dem gleichen Namen (bzw. Basisnamen) zu verlinken. Es wird ausdrucklich empfohlen, statt -f besser lange Optionen zu verwenden, da dies von anderen hardlink-Implementierungen anders interpretiert wird. -F, --prioritize-trees Keep files found in the earliest specified top-level directory if there are multiple identical files in different trees. For example, hardlink foo/ bar/ will link files in bar/ to equal files in the foo/ directory. -i, --include regularer-Ausdruck gibt einen regularen Ausdruck zur Einbeziehung von Dateien an. Falls die Option --exclude angegeben ist, bezieht diese Option Dateien ein, die ansonsten ausgeschlossen werden wurden. Falls die Option ohne --exclude verwendet wird, werden nur Dateien einbezogen, die mit dem Muster ubereinstimmen. -m, --maximize behalt von gleichen Dateien diejenige mit der grossten Anzahl der Links. -M, --minimize behalt von gleichen Dateien diejenige mit der kleinsten Anzahl der Links. -n, --dry-run fuhrt nichts aus, sondern gibt nur aus, was geandert werden wurde. -l, --list-duplicates Don't link anything, but list the absolute path of every duplicate file, one per line, preceded by a unique 16-byte discriminator and a tab. -z, --zero Separate lines with a NUL instead of a newline in -l mode. -o, --ignore-owner verlinkt beziehungsweise vergleicht Dateien selbst dann, wenn deren Eigentumer (Benutzer und Gruppe) unterschiedlich sind. Dies konnte unberechenbar sein. -O, --keep-oldest behalt von gleichen Dateien die alteste Datei (diejenige mit der neuesten Anderungszeit). Standardmassig wird die neueste Datei behalten. Falls --maximize oder --minimize angegeben ist, hat die Anzahl der Links Vorrang vor der Anderungszeit. -p, --ignore-mode verlinkt beziehungsweise vergleicht Dateien selbst dann, wenn deren Modi unterschiedlich sind. Dies konnte unberechenbar sein. -q, --quiet unterdruckt die Ausgaben. -r, --cache-size Grosse gibt die Grosse des Zwischenspeichers fur Inhalts-Checksummen an. Alle Nicht-memcmp-Methoden berechnen die Checksumme fur jeden Block des Dateiinhalts (siehe --io-size), wobei diese Checksummen fur den nachsten Vergleich gespeichert werden. Die Grosse ist fur grosse Dateien oder grosse Anzahlen gleich grosser Dateien bedeutsam. Die Vorgabe ist 10MiB. -s, --minimum-size Grosse gibt die minimale zu berucksichtigende Grosse an, die standardmassig 1 ist, so dass leere Dateien nicht verlinkt werden. Dem Argument Grosse eines der multiplikativen Suffixe KiB (=1024), MiB (=1024*1024) und so weiter fur GiB, TiB, PiB, EiB, ZiB und YiB folgen (das >>iB<< ist optional, zum Beispiel ist >>K<< gleichbedeutend mit >>KiB<<). -S, --maximum-size Grosse gibt die maximale zu berucksichtigende Grosse an, die standardmassig 0 ist, was unbegrenzt bedeutet. Dem Argument Grosse kann eines der multiplikativen Suffixe KiB (=1024), MiB (=1024*1024) und so weiter fur GiB, TiB, PiB, EiB, ZiB und YiB folgen (das >>iB<< ist optional, zum Beispiel ist >>K<< gleichbedeutend mit >>KiB<<). -t, --ignore-time verlinkt beziehungsweise vergleicht Dateien selbst dann, wenn deren Anderungszeiten unterschiedlich sind. Dies ist ublicherweise eine gute Wahl. -v, --verbose aktiviert die ausfuhrliche Ausgabe, die dem Benutzer erklart, was geschieht. Falls dies einmal angegeben ist, wird jede hart verlinkte Datei angezeigt; bei zweimaliger Angabe wird auch jeder Vergleich angezeigt. -x, --exclude regularer-Ausdruck A regular expression that excludes files from being compared and linked. This option can be used multiple times. --exclude-subtree regex A regular expression that excludes entire directories from being compared and linked. This option can also be used multiple times. --mount Do not traverse directories on different filesystems (remain within the same filesystem). -X, --respect-xattrs versucht, nur Dateien mit den gleichen erweiterten Attributen zu verlinken. -y, --method Name legt die Dateivergleichsmethode fest. Gegenwartig werden sha256, sha1, crc32c und memcmp. Die Vorgabe ist sha256, oder memcmp, falls die Linux-Crypto-API nicht verfugbar ist. Die auf Checksummen basierenden Methoden sind ohne Kopiervorgange implementiert. In diesem Fall werden Dateiinhalte nicht in den Anwenderbereich kopiert und samtliche Berechnungen im Kernel ausgefuhrt. --reflink[=when] erstellt Copy-on-write-Clones (sogenannte Reflinks) anstelle von harten Links. Die so erstellten Dateien haben lediglich die gleichen Inhalte, doch Dateimodus und -eigentumerschaft konnen unterschiedlich sein. Es wird empfohlen, dies mit den Optionen --ignore-owner und --ignore-mode zu verwenden. Diese Option impliziert --skip-reflinks, um bereits geklonte Dateien zu ignorieren. Das optionale Argument wann kann never, always oder auto sein. Falls das Argument wann weggelassen wird, ist auto die Voreinstellung. In diesem Fall pruft hardlink den Dateisystemtyp und verwendet Reflinks nur auf BTRFS und XFS und fallt auf harte Links zuruck, wenn die Erstellung von Reflinks unmoglich ist. Das Argument always deaktiviert die Erkennung des Dateisystemtyps und das Ausweichen auf harte Links, wobei in diesem Fall nur Reflinks erlaubt sind. --skip-reflinks ignoriert bereits geklonte Dateien. Diese Option kann beim Erstellen klassischer harter Links ohne --reflink verwendet werden. -h, --help zeigt einen Hilfetext an und beendet das Programm. -V, --version Display version and exit. ARGUMENTE hardlink akzeptiert ein oder mehrere Verzeichnisse, die nach zu verlinkenden Dateien durchsucht werden sollen. FEHLER Die ursprungliche hardlink-Implementierung verwendet die Option -f, um die Erzeugung harter Links uber Dateisystemgrenzen hinweg zu erzwingen. Diese kaum sinnvoll nutzbare Funktion wird vom aktuellen hardlink nicht mehr unterstutzt. hardlink geht davon aus, dass sich die Verzeichnisbaume, in denen es agiert, wahrend der Programmausfuhrung nicht verandern. Falls dies dennoch geschieht, ist das Ergebnis nicht definiert und potenziell gefahrlich. Wenn beispielsweise eine regulare Datei durch eine Geratedatei ersetzt wird, konnte hardlink damit beginnen, von diesem Gerat zu lesen. Falls eine Pfadkomponente durch einen symbolischen Link ersetzt wird oder sich Dateizugriffsrechte andern, konnte die Sicherheit beeintrachtigt werden. Fuhren Sie hardlink niemals in einem sich andernden Verzeichnisbaum aus oder in einem, uber den ein anderer Benutzer die Kontrolle hat. AUTOR Es gibt mehrere hardlink-Implementierungen. Die allererste Implementierung stammt von Jakub Jelinek fur die Fedora-Distribution; diese Implementierung wurde in Util-linux von den Versionen 2.34 bis 2.36 genutzt. Die gegenwartige Implementierung basiert auf der Debian-Version von Julian Andres Klode. FEHLER MELDEN For bug reports, use the issue tracker . VERFUGBARKEIT Der Befehl hardlink ist Teil des Pakets util-linux, welches aus dem Linux-Kernel-Archiv heruntergeladen werden kann. util-linux 2.41 2025-03-29 HARDLINK(1)