HARDLINK(1)

NAMN
hardlink - länka flera kopior av en fil

SYNOPSIS

hardlink [flaggor] katalog|fil...

BESKRIVNING

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.

FLAGGOR

-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.

ARGUMENT

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

MILJÖ

ULFILEEQ_DEBUG=all
    Aktiverar felsökningsutmatning för filjämförelser.

KÄNDA PROBLEM

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.

FÖRFATTARE

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.

FELRAPPORTERING

För felrapporter, använd

TILLGÄNGLIGHET

Kommandot hardlink ingår i paketet util-linux som kan hämtas från