HARDLINK(1)

НАЗВА
hardlink - пов'язування посиланнями декількох копій файла

КОРОТКИЙ ОПИС

hardlink [параметри] каталог|файл...

ОПИС

hardlink - інструмент, який заміняє копії файла їхніми жорсткими посиланнями або клонами копіювання-при-записі, які надають змогу заощадити місце на диску.

Спочатку, hardlink створює бінарне дерево розмірів файлів, а потім порівнює вміст файлів, які мають однаковий розмір. Передбачено два базових методів порівняння вмісту. При використанні методу memcmp програма безпосередньо читає блоки даних з файлів і порівнює її. Інший метод засновано на контрольних сумах (подібних до SHA256); у цьому випадку для кожного з блоків даних буде обчислено контрольну суму за допомогою програмного інтерфейсу шифрування ядра Linux, і цю контрольну суму буде збережено у просторі користувача і використано для порівняння.

Для кожного файла також буде кешовано «вступний» буфер (32 байти). Цей буфер буде використано незалежно від методу порівняння і запитаного розміру кешу та розміру введення-виведення. «Вступний» буфер значно зменшує потребу у діях із даними, оскільки файли дуже часто відрізняються уже початковим вмістом.

ПАРАМЕТРИ

-c, --content
    Брати до уваги лише вміст файлів, а не атрибути, при визначенні того, чи є файли однаковими Те саме, що -pot.

-b, --io-size розмір
    Розмір буфера read(2) або sendfile(2), який буде використано для порівняння вмісту файлів. Після аргументу розмір може бути вказано суфікси розмірностей - KiB, MiB тощо. Частина рядка «iB» є необов’язковою, наприклад, «K» є тим самим, що і «KiB». Типовим є розмір 8 КіБ для методу memcmp і 1 МіБ для інших методів. Пам’ять процесів для буфера використовує лише метод memcmp, інші методи використовують нуль-копіювання, а дію з введення-виведення виконує ядро. Розмір може бути змінено на льоту так, щоб він відповідав кількості контрольних сум кешованих даних.

-d, --respect-dir
    Only try to link files with the same directory name. The top-level directory (as specified on the hardlink command line) is ignored. For example, hardlink --respect-dir /foo /bar will link /foo/some/file with /bar/some/file, but not /bar/other/file. If combined with --respect-name, then entire paths (except the top-level directory) are compared.

-f, --respect-name
    Намагатися створити посилання лише для файлів з однаковою (основною) назвою. Наполегливо рекомендуємо використовувати довгі версії запису параметрів, а не -f, який може бути оброблено у різний спосіб іншими реалізаціями hardlink.

-F, --prioritize-trees
    Keep files found in the earliest specified top-level directory if there are multiple identical files in different trees. For example, hardlink foo/ bar/ will link files in bar/ to equal files in the foo/ directory.

-i, --include формальний_вираз
    Формальний вираз для включення файлів. Якщо було вказано параметр --exclude, цей параметр повторно включає файли, які інакше було б виключено. Якщо параметр використано без --exclude, буде включено лише файли, які відповідають взірцю.

-l, --list-duplicates
    Don’t link anything, but list the absolute path of every duplicate file, one per line, preceded by a unique 16-byte discriminator and a tab.

-m, --maximize
    Серед однакових файлів зберігати файл із найвищою кількістю посилань.

-M, --minimize
    Серед однакових файлів зберігати файл із найнижчою кількістю посилань.

--mount
    Do not traverse directories on different filesystems (remain within the same filesystem).

-n, --dry-run
    Не виконувати дій, лише вивести дані щодо того, що буде зроблено.

-o, --ignore-owner
    Створити посилання і порівняти файли, навіть якщо дані щодо власника (користувача і групи) є різними. Результати можуть бути непередбачуваними.

-O, --keep-oldest
    Серед однакових файлів зберегти найдавніший файл (файл із найдавнішим часом внесення змін). Типово, буде збережено найновіший файл. Якщо вказано --maximize або --minimize, кількість посилань матиме вищий пріоритет за час внесення змін.

-p, --ignore-mode
    Створити посилання і порівняти файли, навіть якщо режим доступу до файлів є різним. Результати можуть бути дещо непередбачуваними.

-q, --quiet
    Режим без повідомлень - нічого не виводити.

-r, --cache-size розмір
    Розмір кешу для контрольних сум даних. Для усіх методи, окрім memcmp, контрольну суму буде обчислено для кожного блоку даних файла (див. --io-size), ці контрольні суми буде кешовано для наступного порівняння. Розмір є важливим для великих файлів або великих наборів файлів однакового розміру. Типовим є розмір у 10 МіБ.

--reflink[=умова]
    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
    Ігнорувати вже клоновані файли. Цим параметром можна скористатися без --reflink при створенні класичних жорстких посилань.

-s, --minimum-size розмір
    Мінімальний розмір, який слід розглядати. Типовим є 1, посилання на порожні файли не створюватимуться. За аргументом розмір можна вказати одиницю виміру: KiB (=124), MiB (=1024*1024) тощо для GiB, TiB, PiB, EiB, ZiB та YiB (частина «iB» є необов’язковою, наприклад «K» є тим самим, що і «KiB»)

-S, --maximum-size розмір
    Максимальний розмір, який слід розглядати. Типовим є 0, тобто «без обмежень». За аргументом розмір можна вказати одиницю виміру: KiB (=1024), MiB (=1024*1024) тощо для GiB, TiB, PiB, EiB, ZiB та YiB (частина «iB» є необов’язковою, наприклад «K» є тим самим, що і «KiB»).

-t, --ignore-time
    Створити посилання і порівняти файли, навіть якщо час внесення змін до файлів є різним. Зазвичай, варто цим скористатися.

-v, --verbose
    Вивести докладніші повідомлення із поясненням користувачеві того, які дії виконуються. Якщо вказано один раз, буде показано кожен файл із жорсткими посиланнями; якщо вказано двічі, також показує усі порівняння.

-x, --exclude формальний_вираз
    Формальний вираз, який виключає файли із порівняння і створення посилань. Цей параметр можна вказати декілька разів в одній команді.

--exclude-subtree формальний-вираз
    Формальний вираз, який виключає цілі каталоги із порівняння і створення посилань. Цей параметр також можна вказати декілька разів в одній команді.

-X, --respect-xattrs
    Намагатися пов’язати посиланням файли, лише якщо у них однакові розширені атрибути.

-y, --method назва
    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
    Вивести текст довідки і завершити роботу.

-V, --version
    Показати дані щодо версії і завершити роботу.

АРГУМЕНТИ

hardlink приймає один або декілька записів каталогів, у яких відбуватиметься пошук файлів для створення посилань.

СЕРЕДОВИЩЕ

ULFILEEQ_DEBUG=all
    Вмикає показ діагностичних повідомлень для порівняння файлів.

ВАДИ

У початковій реалізації hardlink використано параметр -f для примусового створення жорстких посилань між файловими системами. Підтримки цієї рідкісної у використанні можливості у поточній версії hardlink не передбачено.

При створенні hardlink було зроблено припущення, що ієрархії файлової системи, з якими працює програма, не змінюються під час її роботи. Якщо в ієрархії відбуваються зміни, результат роботи може бути невизначеним або потенційно небезпечним для даних. Наприклад, якщо звичайний файл буде замінено файлом пристрою, hardlink може розпочати читання з пристрою. Якщо компонент шляху буде замінено символічним посиланням або змінено права доступу до файла, може постраждати захист системи. Не запускайте hardlink для ієрархії файлів, у якій відбуваються зміни, або ієрархії файлів, яку контролює інший користувач.

АВТОР

Існує декілька реалізацій hardlink. Найпершу було створено Jakub Jelinek для дистрибутиву Fedora. Цю реалізацію було використано в util-linux між версіями 2.34 і 2.36. Поточну реалізацію засновано на версії для Debian, автором якої є Julian Andres Klode.

ЯК НАДІСЛАТИ ЗВІТ ПРО ВАДИ

Для звітування щодо вад скористайтеся

ДОСТУП ДО ПРОГРАМИ

Програма hardlink є частиною пакунка util-linux, який можна отримати з