'\" t .\" Title: hardlink .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.20 .\" Date: 2024-04-03 .\" Manual: Dienstprogramme für Benutzer .\" Source: util-linux 2.40 .\" Language: English .\" .TH "HARDLINK" "1" "2024-04-03" "util\-linux 2.40" "Dienstprogramme für Benutzer" .ie \n(.g .ds Aq \(aq .el .ds Aq ' .ss \n[.ss] 0 .nh .ad l .de URL \fI\\$2\fP <\\$1>\\$3 .. .als MTO URL .if \n[.g] \{\ . mso www.tmac . am URL . ad l . . . am MTO . ad l . . . LINKSTYLE blue R < > .\} .SH "BEZEICHNUNG" hardlink \- mehrere Kopien einer Datei verlinken .SH "ÜBERSICHT" .sp \fBhardlink\fP [options] [\fIdirectory\fP|\fIfile\fP]... .SH "BESCHREIBUNG" .sp \fBhardlink\fP is a tool that replaces copies of a file with either hardlinks or copy\-on\-write clones, thus saving space. .sp \fBhardlink\fP first creates a binary tree of file sizes and then compares the content of files that have the same size. There are two basic content comparison methods. The \fBmemcmp\fP method directly reads data blocks from files and compares them. The other method is based on checksums (like SHA256); in this case for each data block a checksum is calculated by the Linux kernel crypto API, and this checksum is stored in userspace and used for file comparisons. .sp Für jede Datei wird auch ein »intro«\-Puffer (32 bytes) zwischengespeichert. Dieser Puffer wird unabhängig 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. .SH "OPTIONEN" .sp \fB\-h\fP, \fB\-\-help\fP .RS 4 zeigt einen Hilfetext an und beendet das Programm. .RE .sp \fB\-V\fP, \fB\-\-version\fP .RS 4 zeigt Versionsinformationen an und beendet das Programm. .RE .sp \fB\-c\fP, \fB\-\-content\fP .RS 4 berücksichtigt bei der Bestimmung, ob zwei Dateien gleich sind, nur Dateiinhalte, jedoch keine Attribute. Gleichbedeutend mit \fB\-pot\fP. .RE .sp \fB\-b\fP, \fB\-\-io\-size\fP \fIGröße\fP .RS 4 gibt die Größe des \fBread\fP(2)\- oder \fBsendfile\fP(2)\-Puffers beim Vergleichen von Dateiinhalten an. Dem Argument \fIGröße\fP 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 für die memcmp\-Methode und 1MiB für die anderen Methoden. Die Nur\-memcmp\-Methode verwendet Prozessspeicher für den Puffer, während die anderen Methoden ohne Kopiervorgänge arbeiten und die E/A\-Operationen im Kernel ausgeführt werden. Die Größe kann im laufenden Betrieb geändert werden, um eine Reihe von zwischengespeicherten Inhalts\-Checksummen anzupassen. .RE .sp \fB\-d\fP, \fB\-\-respect\-dir\fP .RS 4 versucht, nur Dateien mit dem gleichen Verzeichnisnamen zu verlinken. Das Verzeichnis der obersten Ebene (wie in der Befehlszeile von \fBhardlink\fP angegeben) wird dabei ignoriert. Beispielsweise verlinkt \fBhardlink \-\-respect\-dir /foo /bar\fP \fI/bla/eine/datei\fP mit \fI/blub/eine/datei\fP, aber nicht \fI/blub/andere/datei\fP. Wenn Sie dies mit *\-\-respect\-name*kombinieren, werden ganze Pfade (ohne das Verzeichnis der obersten Ebene) verglichen. .RE .sp \fB\-f\fP, \fB\-\-respect\-name\fP .RS 4 versucht, nur Dateien mit dem gleichen Namen (bzw. Basisnamen) zu verlinken. Es wird ausdrücklich empfohlen, statt \fB\-f\fP besser lange Optionen zu verwenden, da dies von anderen \fBhardlink\fP\-Implementierungen anders interpretiert wird. .RE .sp \fB\-i\fP, \fB\-\-include\fP \fIregulärer\-Ausdruck\fP .RS 4 gibt einen regulären Ausdruck zur Einbeziehung von Dateien an. Falls die Option \fB\-\-exclude\fP angegeben ist, bezieht diese Option Dateien ein, die ansonsten ausgeschlossen werden würden. Falls die Option ohne \fB\-\-exclude\fP verwendet wird, werden nur Dateien einbezogen, die mit dem Muster übereinstimmen. .RE .sp \fB\-m\fP, \fB\-\-maximize\fP .RS 4 behält von gleichen Dateien diejenige mit der größten Anzahl der Links. .RE .sp \fB\-M\fP, \fB\-\-minimize\fP .RS 4 behält von gleichen Dateien diejenige mit der kleinsten Anzahl der Links. .RE .sp \fB\-n\fP, \fB\-\-dry\-run\fP .RS 4 führt nichts aus, sondern gibt nur aus, was geändert werden würde. .RE .sp \fB\-o\fP, \fB\-\-ignore\-owner\fP .RS 4 verlinkt beziehungsweise vergleicht Dateien selbst dann, wenn deren Eigentümer (Benutzer und Gruppe) unterschiedlich sind. Dies könnte unberechenbar sein. .RE .sp \fB\-O\fP, \fB\-\-keep\-oldest\fP .RS 4 behält von gleichen Dateien die älteste Datei (diejenige mit der neuesten Änderungszeit). Standardmäßig wird die neueste Datei behalten. Falls \fB\-\-maximize\fP oder \fB\-\-minimize\fP angegeben ist, hat die Anzahl der Links Vorrang vor der Änderungszeit. .RE .sp \fB\-p\fP, \fB\-\-ignore\-mode\fP .RS 4 verlinkt beziehungsweise vergleicht Dateien selbst dann, wenn deren Modi unterschiedlich sind. Dies könnte unberechenbar sein. .RE .sp \fB\-q\fP, \fB\-\-quiet\fP .RS 4 unterdrückt die Ausgaben. .RE .sp \fB\-r\fP, \fB\-\-cache\-size\fP \fIGröße\fP .RS 4 gibt die Größe des Zwischenspeichers für Inhalts\-Checksummen an. Alle Nicht\-memcmp\-Methoden berechnen die Checksumme für jeden Block des Dateiinhalts (siehe \fB\-\-io\-size\fP), wobei diese Checksummen für den nächsten Vergleich gespeichert werden. Die Größe ist für große Dateien oder große Anzahlen gleich großer Dateien bedeutsam. Die Vorgabe ist 10MiB. .RE .sp \fB\-s\fP, \fB\-\-minimum\-size\fP \fIGröße\fP .RS 4 gibt die minimale zu berücksichtigende Größe an, die standardmäßig 1 ist, so dass leere Dateien nicht verlinkt werden. Dem Argument \fIGröße\fP eines der multiplikativen Suffixe KiB (=1024), MiB (=1024*1024) und so weiter für GiB, TiB, PiB, EiB, ZiB und YiB folgen (das »iB« ist optional, zum Beispiel ist »K« gleichbedeutend mit »KiB«). .RE .sp \fB\-S\fP, \fB\-\-maximum\-size\fP \fIGröße\fP .RS 4 gibt die maximale zu berücksichtigende Größe an, die standardmäßig 0 ist, was unbegrenzt bedeutet. Dem Argument \fIGröße\fP kann eines der multiplikativen Suffixe KiB (=1024), MiB (=1024*1024) und so weiter für GiB, TiB, PiB, EiB, ZiB und YiB folgen (das »iB« ist optional, zum Beispiel ist »K« gleichbedeutend mit »KiB«). .RE .sp \fB\-t\fP, \fB\-\-ignore\-time\fP .RS 4 verlinkt beziehungsweise vergleicht Dateien selbst dann, wenn deren Änderungszeiten unterschiedlich sind. Dies ist üblicherweise eine gute Wahl. .RE .sp \fB\-v\fP, \fB\-\-verbose\fP .RS 4 aktiviert die ausführliche Ausgabe, die dem Benutzer erklärt, was geschieht. Falls dies einmal angegeben ist, wird jede hart verlinkte Datei angezeigt; bei zweimaliger Angabe wird auch jeder Vergleich angezeigt. .RE .sp \fB\-x\fP, \fB\-\-exclude\fP \fIregulärer\-Ausdruck\fP .RS 4 gibt einen regulären Ausdruck an, der Dateien von Vergleichen oder Verlinkungen ausschließt. .RE .sp \fB\-X\fP, \fB\-\-respect\-xattrs\fP .RS 4 versucht, nur Dateien mit den gleichen erweiterten Attributen zu verlinken. .RE .sp \fB\-y\fP, \fB\-\-method\fP \fIName\fP .RS 4 legt die Dateivergleichsmethode fest. Gegenwärtig werden sha256, sha1, crc32c und memcmp. Die Vorgabe ist sha256, oder memcmp, falls die Linux\-Crypto\-API nicht verfügbar ist. Die auf Checksummen basierenden Methoden sind ohne Kopiervorgänge implementiert. In diesem Fall werden Dateiinhalte nicht in den Anwenderbereich kopiert und sämtliche Berechnungen im Kernel ausgeführt. .RE .sp \fB\-\-reflink\fP[=\fIwann\fP] .RS 4 erstellt Copy\-on\-write\-Clones (sogenannte Reflinks) anstelle von harten Links. Die so erstellten Dateien haben lediglich die gleichen Inhalte, doch Dateimodus und \-eigentümerschaft können unterschiedlich sein. Es wird empfohlen, dies mit den Optionen \fB\-\-ignore\-owner\fP und \fB\-\-ignore\-mode\fP zu verwenden. Diese Option impliziert \fB\-\-skip\-reflinks\fP, um bereits geklonte Dateien zu ignorieren. .sp Das optionale Argument \fIwann\fP kann \fBnever\fP, \fBalways\fP oder \fBauto\fP sein. Falls das Argument \fIwann\fP weggelassen wird, ist \fBauto\fP die Voreinstellung. In diesem Fall prüft \fBhardlink\fP den Dateisystemtyp und verwendet Reflinks nur auf BTRFS und XFS und fällt auf harte Links zurück, wenn die Erstellung von Reflinks unmöglich ist. Das Argument \fBalways\fP deaktiviert die Erkennung des Dateisystemtyps und das Ausweichen auf harte Links, wobei in diesem Fall nur Reflinks erlaubt sind. .RE .sp \fB\-\-skip\-reflinks\fP .RS 4 ignoriert bereits geklonte Dateien. Diese Option kann beim Erstellen klassischer harter Links ohne \fB\-\-reflink\fP verwendet werden. .RE .SH "ARGUMENTE" .sp \fBhardlink\fP takes one or more directories which will be searched for files to be linked. .SH "FEHLER" .sp Die ursprüngliche \fBhardlink\fP\-Implementierung verwendet die Option \fB\-f\fP, um die Erzeugung harter Links über Dateisystemgrenzen hinweg zu erzwingen. Diese kaum sinnvoll nutzbare Funktion wird vom aktuellen \fBhardlink\fP nicht mehr unterstützt. .sp \fBhardlink\fP assumes that the trees it operates on do not change during operation. If a tree does change, the result is undefined and potentially dangerous. For example, if a regular file is replaced by a device, \fBhardlink\fP may start reading from the device. If a component of a path is replaced by a symbolic link or file permissions change, security may be compromised. Do not run \fBhardlink\fP on a changing tree or on a tree controlled by another user. .SH "AUTOR" .sp Es gibt mehrere \fBhardlink\fP\-Implementierungen. Die allererste Implementierung stammt von Jakub Jelinek für die Fedora\-Distribution; diese Implementierung wurde in Util\-linux von den Versionen 2.34 bis 2.36 genutzt. Die gegenwärtige Implementierung basiert auf der Debian\-Version von Julian Andres Klode. .SH "FEHLER MELDEN" .sp Nutzen Sie zum Melden von Fehlern das Fehlererfassungssystem auf \c .URL "https://github.com/util\-linux/util\-linux/issues" "" "." .SH "VERFÜGBARKEIT" .sp Der Befehl \fBhardlink\fP ist Teil des Pakets util\-linux, welches aus dem \c .URL "https://www.kernel.org/pub/linux/utils/util\-linux/" "Linux\-Kernel\-Archiv" "" heruntergeladen werden kann.