HARDLINK(1) Dienstprogramme fur Benutzer HARDLINK(1) BEZEICHNUNG hardlink - mehrere Kopien einer Datei verlinken UBERSICHT hardlink [Optionen] Verzeichnis|Datei 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 behalt Dateien im Verzeichnis der hochstmoglichen Ebene, falls mehrere identische Dateien in verschiedenen Verzeichnisbaumen existieren. Beispielse verlinkt der Befehl hardlink foo/ bar/ Dateien in bar/ zu gleichen Dateien im Verzeichnis foo/. -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 verlinkt nichts, sondern listet die absoluten Pfade jedes Dateiduplikats auf, einen pro Zeile, wobei ein eindeutiger 16-Byte-Bezeichner und ein Tabulator vorangestellt ist. -z, --zero trennt im Modus -l Zeilen mittels NUL-Zeichen anstatt Zeilenvorschub. -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 gibt einen regularen Ausdruck an, der Dateien von Vergleichen oder Verlinkungen ausschliesst. Diese Option kann mehrfach angegeben werden. --exclude-subtree regularer-Ausdruck gibt einen regularen Ausdruck an, der ganze Verzeichnisse von Vergleichen oder Verlinkungen ausschliesst. Diese Option kann mehrfach angegeben werden. --mount agiert nicht in Verzeichnissen uber Dateisystemgrenzen hinweg (verbleibt im gleichen Dateisystem). -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[=wann] 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 zeigt Versionsinformationen an und beendet das Programm. ARGUMENTE hardlink akzeptiert ein oder mehrere Verzeichnisse, die nach zu verlinkenden Dateien durchsucht werden sollen. UMGEBUNGSVARIABLEN ULFILEEQ_DEBUG=all aktiviert die Debug-Ausgabe fur Dateivergleiche. 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 Nutzen Sie zum Melden von Fehlern das Fehlererfassungssystem . VERFUGBARKEIT Der Befehl hardlink ist Teil des Pakets util-linux, welches aus dem Linux-Kernel-Archiv heruntergeladen werden kann. util-linux 2.41.2 2025-09-22 HARDLINK(1)