HARDLINK(1) Polecenia uzytkownika HARDLINK(1) NAZWA hardlink - linkuje wiele kopii pliku SKLADNIA hardlink [opcje] katalog|plik... OPIS hardlink jest narzedziem zastepujacym kopie pliku dowiazaniami zwyklymi (twardymi) lub klonami typu kopia przy zapisie, oszczedzajac miejsce na nosniku. hardlink najpierw tworzy drzewo binarne z rozmiarami plikow, porownujac nastepnie zawartosc plikow o tym samym rozmiarze. Wystepuja dwie proste metody porownywania zawartosci. Metoda memcmp bezposrednio odczytuje bloki danych z plikow i porownuje je. Kolejna metoda opiera sie na sumach kontrolnych (np. SHA256); w tym przypadku dla kazdego bloku danych obliczana jest suma kontrolna przez kryptograficzny interfejs programistyczny jadra Linux (crypto); suma ta jest przechowywana w przestrzeni uzytkownika i uzywana do porownywania plikow. Buforowane jest tez poczatkowe 32 bajtow kazdego pliku. Bufor ten jest uzywany niezaleznie od metody porownywania oraz zadanego rozmiaru bufora i rozmiaru wejscia/wyjscia. Ten bufor poczatkowy znacznie ogranicza operacje na zawartosci plikow, poniewaz pliki bardzo czesto roznia sie od samego poczatku. OPCJE -c, --content Przy okreslaniu identycznosci plikow rozwaza tylko zawartosc pliku, a nie jego atrybuty. Rownowazne -pot. -b, --io-size rozmiar Rozmiar bufora read(2) lub sendfile(2) uzywanego przy porownywaniu zawartosci plikow. Po argumencie rozmiar moga wystapic przyrostki okreslajace wielokrotnosc: KiB, MiB itd. Czastka "iB" jest opcjonalna, tzn. np. "K" znaczy to samo co "KiB". Wartoscia domyslna jest 8KiB w przypadku metody memcmp i 1MiB w przypadku innych metod. Jedynie metoda memcmp uzywa pamieci procesu do buforowania, inne metody korzystaja z metody transferu danych bez kopiowania (zero-copy) oraz operacji wejscia/wyjscia dokonywanych w jadrze. Rozmiar moze byc dostosowany w locie, aby pomiescic sumy kontrolne zbuforowanej zawartosci. -d, --respect-dir Probuje linkowac tylko pliki o tej samej nazwie katalogu. Katalog najwyzszego poziomu (podany w wierszu polecenia hardlink) jest ignorowany. Przykladowo hardlink --respect-dir /foo /bar spowoduje dowiazanie /foo/jakis/plik do /bar/jakis/plik, lecz nie do /bar/inny/plik. Przy lacznym uzyciu z opcja --respect-name, porownywane beda cale sciezki (poza katalogiem najwyzszego poziomu). -f, --respect-name Probuje linkowac tylko pliki o tej samej nazwie (basename). Usilnie zaleca sie korzystanie z dlugiej opcji, zamiast z -f, poniewaz ta krotka opcja jest interpretowana odmiennie przez inne implementacje hardlink. -F, --prioritize-trees Pozostawia pliki znalezione w najwczesniej podanym katalogu najwyzszego poziomu, jesli w roznych drzewach istnieja identyczne pliki. Na przyklad hardlink foo/ bar/ dowiaze pliki w katalogu bar/ do identycznych plikow w katalogu foo/. -i, --include wyrazenie-regularne Wyrazenie regularne okreslajace pliki do uwzglednienia. Jesli podano opcje --exclude, niniejsza opcja ponownie obejmuje pliki, ktore zostalyby inaczej wylaczone. Jesli nie podano opcji --exclude, uwzgledniane sa tylko pliki pasujace do podanego wyrazenia. -m, --maximize Z identycznych plikow, utrzymuje plik o najwiekszej liczbie dowiazan. -M, --minimize Z identycznych plikow, utrzymuje plik o najmniejszej liczbie dowiazan. -n, --dry-run Nie dokonuje rzeczywistych zmian, jedynie wypisuje co by sie stalo. -l, --list-duplicates Nie dowiazuje niczego, wypisuje jedynie absolutna sciezke kazdego zduplikowanego pliku, po jednym na wiersz, przed ktorym znajdzie sie 16-bajtowy ciag rozrozniajacy oraz znak tabulacji. -z, --zero W trybie -l rozdziela wiersze znakiem NUL, zamiast znakiem nowego wiersza. -o, --ignore-owner Linkuje i porownuje pliki nawet, jesli roznia sie ich informacje wlascicielskie (uzytkownik i grupa). Rezultaty moga byc nieprzewidywalne. -O, --keep-oldest Z identycznych plikow, utrzymuje plik najstarszy (o najdawniejszym czasie modyfikacji). Domyslnie utrzymywany jest plik najnowszy. Jesli podano --maximize lub --minimize, liczba dowiazan ma pierwszenstwo nad czasem modyfikacji. -p, --ignore-mode Linkuje i porownuje pliki nawet, gdy roznia sie trybem (uprawnieniami). Rezultaty moga byc nieco nieprzewidywalne. -q, --quiet Tryb cichy, niczego nie wypisuje. -r, --cache-size rozmiar Rozmiar pamieci podrecznej na sumy kontrolne zawartosci plikow. Wszystkie metody inne niz memcmp obliczaja sumy kontrolne dla kazdego bloku zawartosci plikow (zob. --io-size), te sumy kontrolne sa buforowane do nastepnego porownania. Ustawiany rozmiar jest istotny w przypadku duzych plikow lub duzych zbiorow plikow o tym samym rozmiarze. Wartosc domyslna to 10MiB. -s, --minimum-size rozmiar Minimalny rozmiar do uwzglednienia. Domyslnie wynosi 1, dzieki czemu nie sa linkowane puste pliki. Po argumencie rozmiar moga wystapic przyrostki okreslajace wielokrotnosc: KiB(=1024), MiB (=1024*1024) itd. dla GiB, TiB, PiB, EiB, ZiB i YiB (czastka "iB" jest opcjonalna, tzn. np. "K" znaczy to samo co "KiB"). -S, --maximum-size rozmiar Maksymalny rozmiar do uwzglednienia. Domyslnie wynosi 0, przy czym 0 ma specjalne znaczenie, oznaczajac brak limitu. Po argumencie rozmiar moga wystapic przyrostki okreslajace wielokrotnosc: KiB(=1024), MiB (=1024*1024) itd. dla GiB, TiB, PiB, EiB, ZiB i YiB (czastka "iB" jest opcjonalna, tzn. np. "K" znaczy to samo co "KiB"). -t, --ignore-time Linkuje i porownuje pliki nawet, jesli roznia sie czasem modyfikacji. Zwykle to dobry wybor. -v, --verbose Wyjscie szczegolowe, wyjasniajace uzytkownikowi co sie dzieje. Jesli poda sie opcje jednokrotnie, wyswietlany jest kazdy plik dla ktorego tworzone jest dowiazanie zwykle. Jesli poda sie opcje dwukrotnie, wskazywane jest rowniez kazde porownanie. -x, --exclude wyrazenie-regularne Wyrazenie regularne wylaczajace pliki z porownywania i linkowania. Opcje mozna podac wielokrotnie. --exclude-subtree wyrazenie-regularne Wyrazenie regularne wylaczajace cale katalogi z porownywania i linkowania. Opcje mozna podac wielokrotnie. --mount Nie przechodzi przez katalogi na roznych systemach plikow (pozostaje wewnatrz tego samego systemu plikow). -X, --respect-xattrs Probuje linkowac tylko pliki o tych samych atrybutach rozszerzonych. -y, --method nazwa Ustawia metode porownywania zawartosci plikow. Obecnie obslugiwane sa: sha256, sha1, crc32c i memcmp. Domyslna metoda jest sha256; albo memcmp gdy niedostepny jest linuksowy interfejs kryptograficzny (Crypto). Metody korzystajace z sum kontrolnych sa zaimplementowane aby korzystac z metody transferu danych bez kopiowania (zero-copy); zawartosc plikow nie jest wowczas kopiowana do przestrzeni uzytkownika, a wszystkie obliczenia odbywaja sie w jadrze. --reflink[=kiedy] Tworzy klony typu kopia przy zapisie (inaczej reflinki) zamiast dowiazan zwyklych (twardych). Pliki tego typu dziela dane na dysku, ale tryb pliku i wlasnosc moze byc odmienny. Zaleca sie laczyc te opcje z opcjami --ignore-owner i --ignore-mode. Opcja wymusza --skip-reflinks, aby ignorowac pliki juz sklonowane. Opcjonalnym argumentem kiedy moze byc never, always lub auto. Jesli nie poda sie argumentu kiedy, przyjmie domyslna wartosc auto; wowczas hardlink sprawdza typ systemu plikow i uzywa reflinkow tylko na BTRFS i XFS, korzystajac z dowiazan zwyklych tam, gdzie tworzenie reflinkow jest niemozliwe. Argument always wylacza sprawdzanie typu systemow plikow i tworzenie dowiazan zwyklych - wowczas dozwolone sa tylko reflinki. --skip-reflinks Ignoruje juz sklonowane pliki. Opcje te mozna uzywac bez --reflink przy tworzeniu klasycznych dowiazan zwyklych. -h, --help Wyswietla ten tekst i wychodzi. -V, --version Wyswietla wersje i wychodzi. ARGUMENTY hardlink przyjmuje jeden lub wiecej katalogow, ktore zostana przeszukane pod katem plikow do zlinkowania. USTERKI Pierwotna implementacja hardlink uzywala opcji -f*do wymuszenia tworzenia dowiazan zwyklych pomiedzy systemami plikow. Ta niezwykle rzadko uzyteczna opcja nie jest juz obslugiwana przez niniejszy program *hardlink. hardlink zaklada, ze drzewo na ktorym dziala nie zmienia sie podczas przebiegu programu. Jesli drzewo ulegnie zmianie, rezultaty sa niezdefiniowane i potencjalnie niebezpieczne. Na przyklad jesli zwykly plik zostanie zastapiony przez urzadzenie, hardlink moze zaczac odczytywac z urzadzenia. Jesli skladowa sciezki zostanie zastapiona przez dowiazanie symboliczne lub zmienia sie uprawnienia pliku, moze dojsc do naruszenia bezpieczenstwa systemu. Nie nalezy uruchamiac hardlink na zmieniajacym sie drzewie ani drzewie, ktore kontroluje inny uzytkownik. AUTOR Istnieje wiele implementacji hardlink. Pierwotna pochodzi od Jakuba Jelinka z dystrybucji Fedora; byla uzywana w util-linux pomiedzy wersjami v2.34 i v2.36. Biezaca implementacja powstala w oparciu o wersje z Debiana, autorstwa Juliana Andresa Klode'a. ZGLASZANIE BLEDOW Problemy nalezy zglaszac w systemie sledzenia bledow . DOSTEPNOSC Polecenie hardlink jest czescia pakietu util-linux, ktory mozna pobrac ze strony Archiwum jadra Linux . util-linux 2.41 2025-03-29 HARDLINK(1)