HARDLINK(1) Användarkommandon HARDLINK(1)

hardlink - länka flera kopior av en fil

hardlink [flaggor] katalog|fil...

hardlink är ett verktyg som ersätter kopior av en fil med antingen hardlinks eller copy-on-write-kloner, vilket sparar utrymme.

hardlink skapar först ett binärt träd med filstorlekar och jämför sedan innehållet i filer som har samma storlek. Det finns två grundläggande metoder för innehållsjämförelse. Metoden memcmp läser direkt datablock från filer och jämför dem. Den andra metoden baseras på kontrollsummor (som SHA256); i det här fallet beräknas en kontrollsumma för varje datablock av Linux-kärnans krypto-API, och denna kontrollsumma lagras i userspace och används för filjämförelser.

För varje fil cachelagras också en "intro"-buffert (32 byte). Denna buffert används oberoende av jämförelsemetod och begärd cache-size och io-size. "Intro"-bufferten minskar dramatiskt antalet operationer med datainnehåll eftersom filerna ofta är olika redan från början.

-c, --content

Beakta endast filinnehållet, inte attributen, när du avgör om två filer är likvärdiga. Samma som -pot.

-b, --io-size storlek

Storleken på read(2) eller sendfile(2)-bufferten som används vid jämförelse av filinnehåll. Argumentet storlek kan följas av de multiplikativa suffixen KiB, MiB, etc. "iB" är valfritt, t.ex. har "K" samma betydelse som "KiB". Standardvärdet är 8KiB för memcmp-metoden och 1MiB för de andra metoderna. Den enda memcmp-metoden använder processminne för bufferten, andra metoder använder zero-copy och I/O-operationen görs i kärnan. Storleken kan ändras i farten för att passa ett antal kontrollsummor för cachat innehåll.

-d, --respect-dir

Försök bara länka filer med samma katalognamn. Katalogen på översta nivån (som anges på kommandoraden för hardlink) ignoreras. Till exempel kommer hardlink --respect-dir /foo /bar att länka /foo/some/file med /bar/some/file, men inte /bar/other/file. Om den kombineras med --respect-name jämförs hela sökvägar (utom toppnivåkatalogen).

-f, --respect-name

Försök bara att länka filer med samma (bas)namn. Det rekommenderas starkt att använda långa flaggor i stället för -f, som tolkas på ett annat sätt av andra hardlink-implementeringar.

-F, --prioritize-trees

Behåller filer som finns i den tidigast angivna toppnivåkatalogen om det finns flera identiska filer i olika träd. Exempelvis kommer hardlink foo/ bar/ att länka filer i bar/ till likvärdiga filer i foo/-katalogen.

-i, --include regex

Ett reguljärt uttryck för att inkludera filer. Om flaggan --exclude har angetts, återinkluderar denna flagga filer som annars skulle ha uteslutits. Om flaggan används utan --exclude inkluderas endast filer som matchas av mönstret.

-l, --list-duplicates

Länka ingenting, utan lista den absoluta sökvägen till varje duplicerad fil, en per rad, föregången av en unik 16-bytes diskriminator och en tabb.

-m, --maximize

Bland likvärdiga filer behåller du filen med det högsta länkantalet.

-M, --minimize

Bland likvärdiga filer behåller du filen med lägst länkantal.

--mount

Genomkorsa inte kataloger på olika filsystem (håll dig inom samma filsystem).

-n, --dry-run

Inte agera, bara skriva ut vad som skulle hända.

-o, --ignore-owner

Länka och jämför filer även om deras ägarinformation (användare och grupp) skiljer sig åt. Resultaten kan vara oförutsägbara.

-O, --keep-oldest

Bland lika många filer behålls den äldsta filen (senaste ändringstid). Som standard behålls den nyaste filen. Om --maximize eller --minimize anges har länkantalet högre prioritet än modifieringstiden.

-p, --ignore-mode

Länka och jämför filer även om deras läge är olika. Resultaten kan vara något oförutsägbara.

-q, --quiet

Tyst läge, skriv inte ut något.

-r, --cache-size storlek

Storleken på cacheminnet för innehållskontrollsummor. Alla icke-memcmp-metoder beräknar kontrollsumma för varje filinnehållsblock (se --io-size), dessa kontrollsummor cachas för nästa jämförelse. Storleken är viktig för stora filer eller stora uppsättningar av filer med samma storlek. Standardvärdet är 10MiB.

--reflink[=när]

Create copy-on-write clones (aka reflinks) rather than hardlinks. The reflinked files share only on-disk data, but the file mode and owner can be different. It’s recommended to use this option together with the --ignore-owner and --ignore-mode options. This option implies --skip-reflinks to ignore already cloned files.

The optional argument when can be never, always, or auto. If the when argument is omitted, it defaults to auto, which means that hardlink checks the filesystem type and uses reflinks on BTRFS, XFS and ZFS only, and falls back to hardlinks when creating a reflink is impossible. The argument always disables filesystem-type detection and the fallback to hardlinks, which means that only reflinks are allowed.

--skip-reflinks

Ignorera redan klonade filer. Denna flagga kan användas utan --reflink när du skapar klassiska hårddisklänkar.

-s, --minimum-size storlek

Den minsta storlek som ska beaktas. Som standard är detta 1, så tomma filer länkas inte. Argumentet storlek kan följas av de multiplikativa suffixen KiB (=1024), MiB (=1024*1024) och så vidare för GiB, TiB, PiB, EiB, ZiB och YiB ("iB" är valfritt, t.ex. har "K" samma betydelse som "KiB").

-S, --maximum-size storlek

Den maximala storlek som ska beaktas. Som standard är detta 0 och 0 har den speciella betydelsen obegränsad. Argumentet storlek kan följas av de multiplikativa suffixen KiB (=1024), MiB (=1024*1024) och så vidare för GiB, TiB, PiB, EiB, ZiB och YiB ("iB" är valfritt, t.ex. har "K" samma betydelse som "KiB").

-t, --ignore-time

Länka och jämföra filer även om de har ändrats vid olika tidpunkter. Detta är vanligtvis ett bra val.

-v, --verbose

Utförlig utdata, förklarar för användaren vad som görs. Om detta anges en gång visas varje hårdlänkad fil. Om det anges två gånger visas även varje jämförelse.

-x, --exclude regex

Ett reguljärt uttryck som utesluter filer från att jämföras och länkas. Denna flagga kan användas flera gånger.

--exclude-subtree regex

Ett reguljärt uttryck som utesluter hela kataloger från att jämföras och länkas. Denna flagga kan också användas flera gånger.

-X, --respect-xattrs

Försök bara att länka filer med samma utökade attribut.

-y, --method namn

Set the file content comparison method. The currently supported methods are sha256, sha1, crc32c, and memcmp. The default is sha256, or memcmp if the Linux Crypto API is not available. The methods based on checksums are implemented in a zero-copy way, which means that file contents are not copied to userspace and all calculation is done in the kernel.

-z, --zero

Separate lines with a NUL byte instead of a newline (for -l).

-h, --help

Visa hjälptext och avsluta.

-V, --version

Visa version och avsluta.

hardlink tar en eller flera kataloger som ska genomsökas efter filer som ska länkas.

ULFILEEQ_DEBUG=all

Aktiverar felsökningsutmatning för filjämförelser.

Den ursprungliga hardlink-implementeringen använder flaggan -f för att tvinga fram skapandet av hårda länkar mellan filsystem. Denna mycket sällan användbara funktion stöds inte längre av den nuvarande hardlink.

hardlink förutsätter att träden som den arbetar med inte ändras under arbetets gång. Om ett träd ändras är resultatet odefinierat och potentiellt farligt. Om t.ex. en vanlig fil ersätts av en enhet kan hardlink börja läsa från enheten. Om en komponent i en sökväg ersätts av en symbolisk länk eller om filbehörigheterna ändras kan säkerheten äventyras. Kör inte hardlink på ett träd som är under förändring eller på ett träd som kontrolleras av en annan användare.

Det finns flera hardlink-implementeringar. Den allra första implementationen är från Jakub Jelinek för Fedora-distributionen, den här implementationen har använts i util-linux mellan versionerna v2.34 till v2.36. Den nuvarande implementationen är baserad på Debian-versionen från Julian Andres Klode.

För felrapporter, använd felhanteraren https://github.com/util-linux/util-linux/issues.

Kommandot hardlink ingår i paketet util-linux som kan hämtas från Linux Kernel Archive https://www.kernel.org/pub/linux/utils/util-linux/.

2026-05-18 util-linux 2.42.1