Provided by: util-linux-locales_2.41-4ubuntu3_all bug

NAZWA

       hardlink - linkuje wiele kopii pliku

SKŁADNIA

       hardlink [opcje] katalog|plik...

OPIS

       hardlink jest narzędziem zastępującym kopie pliku dowiązaniami zwykłymi (twardymi) lub klonami typu kopia
       przy zapisie, oszczędzając miejsce na nośniku.

       hardlink najpierw tworzy drzewo binarne z rozmiarami plików, porównując następnie zawartość plików o tym
       samym rozmiarze. Występują dwie proste metody porównywania zawartości. Metoda memcmp bezpośrednio
       odczytuje bloki danych z plików i porównuje je. Kolejna metoda opiera się na sumach kontrolnych (np.
       SHA256); w tym przypadku dla każdego bloku danych obliczana jest suma kontrolna przez kryptograficzny
       interfejs programistyczny jądra Linux (crypto); suma ta jest przechowywana w przestrzeni użytkownika i
       używana do porównywania plików.

       Buforowane jest też początkowe 32 bajtów każdego pliku. Bufor ten jest używany niezależnie od metody
       porównywania oraz żądanego rozmiaru bufora i rozmiaru wejścia/wyjścia. Ten bufor początkowy znacznie
       ogranicza operacje na zawartości plików, ponieważ pliki bardzo często różnią się od samego początku.

OPCJE

       -c, --content
           Przy określaniu identyczności plików rozważa tylko zawartość pliku, a nie jego atrybuty. Równoważne
           -pot.

       -b, --io-size rozmiar
           Rozmiar bufora read(2) lub sendfile(2) używanego przy porównywaniu zawartości plików. Po argumencie
           rozmiar mogą wystąpić przyrostki określające wielokrotność: KiB, MiB itd. Cząstka "iB" jest
           opcjonalna, tzn. np. "K" znaczy to samo co "KiB". Wartością domyślną jest 8KiB w przypadku metody
           memcmp i 1MiB w przypadku innych metod. Jedynie metoda memcmp używa pamięci procesu do buforowania,
           inne metody korzystają z metody transferu danych bez kopiowania (zero-copy) oraz operacji
           wejścia/wyjścia dokonywanych w jądrze. Rozmiar może być dostosowany w locie, aby pomieścić sumy
           kontrolne zbuforowanej zawartości.

       -d, --respect-dir
           Próbuje linkować tylko pliki o tej samej nazwie katalogu. Katalog najwyższego poziomu (podany w
           wierszu polecenia hardlink) jest ignorowany. Przykładowo hardlink --respect-dir /foo /bar spowoduje
           dowiązanie /foo/jakiś/plik do /bar/jakiś/plik, lecz nie do /bar/inny/plik. Przy łącznym użyciu z
           opcją --respect-name, porównywane będą całe ścieżki (poza katalogiem najwyższego poziomu).

       -f, --respect-name
           Próbuje linkować tylko pliki o tej samej nazwie (basename). Usilnie zaleca się korzystanie z długiej
           opcji, zamiast z -f, ponieważ ta krótka opcja jest interpretowana odmiennie przez inne implementacje
           hardlink.

       -F, --prioritize-trees
           Pozostawia pliki znalezione w najwcześniej podanym katalogu najwyższego poziomu, jeśli w różnych
           drzewach istnieją identyczne pliki. Na przykład hardlink foo/ bar/ dowiąże pliki w katalogu bar/ do
           identycznych plików w katalogu foo/.

       -i, --include wyrażenie-regularne
           Wyrażenie regularne określające pliki do uwzględnienia. Jeśli podano opcję --exclude, niniejsza opcja
           ponownie obejmuje pliki, które zostałyby inaczej wyłączone. Jeśli nie podano opcji --exclude,
           uwzględniane są tylko pliki pasujące do podanego wyrażenia.

       -m, --maximize
           Z identycznych plików, utrzymuje plik o największej liczbie dowiązań.

       -M, --minimize
           Z identycznych plików, utrzymuje plik o najmniejszej liczbie dowiązań.

       -n, --dry-run
           Nie dokonuje rzeczywistych zmian, jedynie wypisuje co by się stało.

       -l, --list-duplicates
           Nie dowiązuje niczego, wypisuje jedynie absolutną ścieżkę każdego zduplikowanego pliku, po jednym na
           wiersz, przed którym znajdzie się 16-bajtowy ciąg rozróżniający oraz znak tabulacji.

       -z, --zero
           W trybie -l rozdziela wiersze znakiem NUL, zamiast znakiem nowego wiersza.

       -o, --ignore-owner
           Linkuje i porównuje pliki nawet, jeśli różnią się ich informacje właścicielskie (użytkownik i grupa).
           Rezultaty mogą być nieprzewidywalne.

       -O, --keep-oldest
           Z identycznych plików, utrzymuje plik najstarszy (o najdawniejszym czasie modyfikacji). Domyślnie
           utrzymywany jest plik najnowszy. Jeśli podano --maximize lub --minimize, liczba dowiązań ma
           pierwszeństwo nad czasem modyfikacji.

       -p, --ignore-mode
           Linkuje i porównuje pliki nawet, gdy różnią się trybem (uprawnieniami). Rezultaty mogą być nieco
           nieprzewidywalne.

       -q, --quiet
           Tryb cichy, niczego nie wypisuje.

       -r, --cache-size rozmiar
           Rozmiar pamięci podręcznej na sumy kontrolne zawartości plików. Wszystkie metody inne niż memcmp
           obliczają sumy kontrolne dla każdego bloku zawartości plików (zob. --io-size), te sumy kontrolne są
           buforowane do następnego porównania. Ustawiany rozmiar jest istotny w przypadku dużych plików lub
           dużych zbiorów plików o tym samym rozmiarze. Wartość domyślna to 10MiB.

       -s, --minimum-size rozmiar
           Minimalny rozmiar do uwzględnienia. Domyślnie wynosi 1, dzięki czemu nie są linkowane puste pliki. Po
           argumencie rozmiar mogą wystąpić przyrostki określające wielokrotność: KiB(=1024), MiB (=1024*1024)
           itd. dla GiB, TiB, PiB, EiB, ZiB i YiB (cząstka "iB" jest opcjonalna, tzn. np. "K" znaczy to samo co
           "KiB").

       -S, --maximum-size rozmiar
           Maksymalny rozmiar do uwzględnienia. Domyślnie wynosi 0, przy czym 0 ma specjalne znaczenie,
           oznaczając brak limitu. Po argumencie rozmiar mogą wystąpić przyrostki określające wielokrotność:
           KiB(=1024), MiB (=1024*1024) itd. dla GiB, TiB, PiB, EiB, ZiB i YiB (cząstka "iB" jest opcjonalna,
           tzn. np. "K" znaczy to samo co "KiB").

       -t, --ignore-time
           Linkuje i porównuje pliki nawet, jeśli różnią się czasem modyfikacji. Zwykle to dobry wybór.

       -v, --verbose
           Wyjście szczegółowe, wyjaśniające użytkownikowi co się dzieje. Jeśli poda się opcję jednokrotnie,
           wyświetlany jest każdy plik dla którego tworzone jest dowiązanie zwykłe. Jeśli poda się opcję
           dwukrotnie, wskazywane jest również każde porównanie.

       -x, --exclude wyrażenie-regularne
           Wyrażenie regularne wyłączające pliki z porównywania i linkowania. Opcję można podać wielokrotnie.

       --exclude-subtree wyrażenie-regularne
           Wyrażenie regularne wyłączające całe katalogi z porównywania i linkowania. Opcję można podać
           wielokrotnie.

       --mount
           Nie przechodzi przez katalogi na różnych systemach plików (pozostaje wewnątrz tego samego systemu
           plików).

       -X, --respect-xattrs
           Próbuje linkować tylko pliki o tych samych atrybutach rozszerzonych.

       -y, --method nazwa
           Ustawia metodę porównywania zawartości plików. Obecnie obsługiwane są: sha256, sha1, crc32c i memcmp.
           Domyślną metodą jest sha256; albo memcmp gdy niedostępny jest linuksowy interfejs kryptograficzny
           (Crypto). Metody korzystające z sum kontrolnych są zaimplementowane aby korzystać z metody transferu
           danych bez kopiowania (zero-copy); zawartość plików nie jest wówczas kopiowana do przestrzeni
           użytkownika, a wszystkie obliczenia odbywają się w jądrze.

       --reflink[=kiedy]
           Tworzy klony typu kopia przy zapisie (inaczej reflinki) zamiast dowiązań zwykłych (twardych). Pliki
           tego typu dzielą dane na dysku, ale tryb pliku i własność może być odmienny. Zaleca się łączyć tę
           opcję z opcjami --ignore-owner i --ignore-mode. Opcja wymusza --skip-reflinks, aby ignorować pliki
           już sklonowane.

           Opcjonalnym argumentem kiedy może być never, always lub auto. Jeśli nie poda się argumentu kiedy,
           przyjmie domyślną wartość auto; wówczas hardlink sprawdza typ systemu plików i używa reflinków tylko
           na BTRFS i XFS, korzystając z dowiązań zwykłych tam, gdzie tworzenie reflinków jest niemożliwe.
           Argument always wyłącza sprawdzanie typu systemów plików i tworzenie dowiązań zwykłych - wówczas
           dozwolone są tylko reflinki.

       --skip-reflinks
           Ignoruje już sklonowane pliki. Opcję tę można używać bez --reflink przy tworzeniu klasycznych
           dowiązań zwykłych.

       -h, --help
           Wyświetla ten tekst i wychodzi.

       -V, --version
           Wyświetla wersję i wychodzi.

ARGUMENTY

       hardlink przyjmuje jeden lub więcej katalogów, które zostaną przeszukane pod kątem plików do zlinkowania.

USTERKI

       Pierwotna implementacja hardlink używała opcji -f*do wymuszenia tworzenia dowiązań zwykłych pomiędzy
       systemami plików. Ta niezwykle rzadko użyteczna opcja nie jest już obsługiwana przez niniejszy program
       *hardlink.

       hardlink zakłada, że drzewo na którym działa nie zmienia się podczas przebiegu programu. Jeśli drzewo
       ulegnie zmianie, rezultaty są niezdefiniowane i potencjalnie niebezpieczne. Na przykład jeśli zwykły plik
       zostanie zastąpiony przez urządzenie, hardlink może zacząć odczytywać z urządzenia. Jeśli składowa
       ścieżki zostanie zastąpiona przez dowiązanie symboliczne lub zmienią się uprawnienia pliku, może dojść do
       naruszenia bezpieczeństwa systemu. Nie należy uruchamiać hardlink na zmieniającym się drzewie ani
       drzewie, które kontroluje inny użytkownik.

AUTOR

       Istnieje wiele implementacji hardlink. Pierwotna pochodzi od Jakuba Jelinka z dystrybucji Fedora; była
       używana w util-linux pomiędzy wersjami v2.34 i v2.36. Bieżąca implementacja powstała w oparciu o wersję z
       Debiana, autorstwa Juliana Andresa Klode’a.

ZGŁASZANIE BŁĘDÓW

       Problemy należy zgłaszać w systemie śledzenia błędów <https://github.com/util-linux/util-linux/issues>.

DOSTĘPNOŚĆ

       Polecenie hardlink jest częścią pakietu util-linux, który można pobrać ze strony Archiwum jądra Linux
       <https://www.kernel.org/pub/linux/utils/util-linux/>.

util-linux 2.41                                    2025-07-02                                        HARDLINK(1)