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, буде включено лише файли, які відповідають взірцю.

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

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

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

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

-z, --zero
    Separate lines with a NUL instead of a newline in -l mode.

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

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

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

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

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

-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 формальний-вираз
    Формальний вираз, який виключає цілі каталоги із порівняння і створення посилань. Цей параметр також можна вказати декілька разів в одній команді.

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

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

-y, --method назва
    Встановити метод порівняння файлів. Серед методів, підтримку яких передбачено у програмі, sha256, sha1, crc32c і memcmp. Типовим є sha256 або memcmp, якщо програмний інтерфейс Linux є недоступним. Методи, засновані на контрольних сумах, реалізовано у спосіб нуль-копіювання. У цьому випадку вміст файла не буде скопійовано до простору користувача, а усі обчислення буде виконано в ядрі.

--reflink[=умова]
    Створити клони з копіюванням-при-запису, а не жорсткі посилання. Спільними для файлів-клонів є лише дані на диску, а режим доступу до файлів та власник можуть бути різними. Рекомендуємо використовувати його з параметрами --ignore-owner і --ignore-mode. Цей параметр неявним чином встановлює --skip-reflinks для ігнорування вже клонованих файлів.

    Значенням необов’язкового аргументу умова може бути never, always або auto. Якщо аргумент умова пропущено, типовим значенням є auto. У цьому випадку hardlink перевіряє тип файлової системи і використовує клони лише у BTRFS і XFS, а резервне повернення до жорстких посилань, якщо створення клону є неможливим. Значення аргументу always призводить до вимикання виявлення типу файлової системи і повернення до жорстких посилань; у цьому випадку дозволеними будуть лише клони.

--skip-reflinks
    Ігнорувати вже клоновані файли. Цим параметром можна скористатися без --reflink при створенні класичних жорстких посилань.

-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, який можна отримати з