HARDLINK(1)

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

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

hardlink [options] directory|file...

ОПИС

hardlink is a tool that replaces copies of a file with either hardlinks or copy-on-write clones, thus saving space.

hardlink first creates a binary tree of file sizes and then compares the content of files that have the same size. There are two basic content comparison methods. The memcmp method directly reads data blocks from files and compares them. The other method is based on checksums (like SHA256); in this case for each data block a checksum is calculated by the Linux kernel crypto API, and this checksum is stored in userspace and used for file comparisons.

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

ПАРАМЕТРИ

-h, --help
    Вивести текст довідки і завершити роботу.

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

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

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

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

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

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

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

-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 при створенні класичних жорстких посилань.

АРГУМЕНТИ

hardlink takes one or more directories which will be searched for files to be linked.

ВАДИ

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

hardlink assumes that the trees it operates on do not change during operation. If a tree does change, the result is undefined and potentially dangerous. For example, if a regular file is replaced by a device, hardlink may start reading from the device. If a component of a path is replaced by a symbolic link or file permissions change, security may be compromised. Do not run hardlink on a changing tree or on a tree controlled by another user.

АВТОР

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

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

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

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

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