Параметр -link-dest от rsync не связан из-за времени файла

Рассмотрим этот тестовый пример:

mkdir a echo 'blah' > a/test mkdir b echo 'blah' > b/test rsync -r --link-dest=/tmp/b /tmp/a/ /tmp/c 

Как и ожидалось, rsync создает c/test жесткую ссылку b/test (обратите внимание на пересчет 2 ):

 # ls -lc/test -rw-r--r-- 2 root root 16 Jan 6 19:43 test 

Теперь посмотрим:

 rm -rc # start over touch b/test rsync -r --link-dest=/tmp/b /tmp/a/ /tmp/c 

Жесткая ссылка не создана:

 # ls -lc/test -rw-r--r-- 1 root root 16 Jan 6 19:50 test 

В manpages говорится (акцент мой):

Файлы должны быть одинаковыми во всех сохраненных атрибутах (например, разрешениях, возможно, правах собственности), чтобы файлы были связаны друг с другом.

Тем не менее, я думаю, что по умолчанию файл времени не сохраняется и поэтому не имеет никакого значения здесь.

Что происходит? Это ошибка? Что я могу сделать?

Моя цель состоит в том, чтобы сэкономить место на сервере непрерывной интеграции, который размещает много филиалов репозитория, жестко соединяя все одинаковые файлы. Итак, моя фактическая команда:
rsync -r --link-dest=/ci/master /ci-runner/build/ /ci/branch-123 .
Это означает, что меня не волнует время, поэтому я подумал о том, чтобы touch к ним до текущего времени до rsync но это было бы как-то грубое решение, а также касание, похоже, не рекурсивно работает.

One Solution collect form web for “Параметр -link-dest от rsync не связан из-за времени файла”

Вы видите результаты алгоритма быстрой проверки rsync, который решает передать файлы в зависимости от их размера и временной метки. Как указано в man rsync :

Rsync находит файлы, которые необходимо перенести, используя алгоритм быстрой проверки (по умолчанию), который ищет файлы, которые изменились в размере или в последнее время. Любые изменения в других сохраненных атрибутах (в соответствии с запросами опций) производятся в файле назначения непосредственно, когда быстрая проверка указывает, что данные файла не нуждаются в обновлении.

У вас есть выбор:

  • Если вы хотите, чтобы отметка времени была проигнорирована и передавала файлы, основанные только на измененном размере, вы можете использовать параметр --size-only .

    Обратите внимание, что это означает, что rsync не будет передавать измененный файл, если это изменение просто оставило файл с тем же размером.

  • Если вы хотите, чтобы rsync вместо этого проверял, действительно ли содержимое файлов идентично, используйте --checksum . Это может привести к существенному замедлению.

Алгоритм «быстрой проверки» является значением по умолчанию, поскольку он является, как правило, хорошим компромиссом между скоростью и точностью.

  • Как использовать awk для чтения данных между всеми частыми временными интервалами
  • Извлечь дату создания и время изменения файла в Sunos
  • Получение файлов для текущей даты в Linux?
  • Как я могу хранить mtime файлов и каталогов, когда я использую rsync или cp? Для использования в резервном / инкрементальном резервном копировании
  • Почему у моего файла есть несколько записей crtime?
  • Копирование новейших файлов
  • Как отрегулировать временную метку Exif фотографии, используя дату в названии
  • Использовать awk для печати и редактирования даты
  • Почему debugfs не показывает crtime в наносекундах?
  • Как получить приемлемую последнюю измененную временную метку для моего сайта Jekyll с помощью сценария оболочки?
  • Использовать только mtime-сравнение с rsync?
  • Interesting Posts

    Создайте файл с использованием специальных символов как имя файла

    mv filename .. (Куда будет идти файл?)

    Не удается войти в webmin на VPS

    Как связать несколько файлов с помощью tail -0f в Linux / AIX

    Создать файл с определенным форматированием из содержимого каталога

    как сделать телефонное кольцо SIP с sipsak?

    Два сетевых интерфейса с одинаковой метрикой и с шлюзом. Какой из них используется?

    ls и du не согласны с размером файла на несколько порядков

    установить уровень сжатия с помощью nice и tar

    Неужели я не предполагаю обновления с Антегросом?

    Безопасность xhost (локальная) и пересылка sudo xauthority

    Как узнать, действительно ли последовательный порт передает данные, не открывая устройство?

    lpc_ich: обнаружены конфликты ресурсов, влияющие на gpio_ich

    Как установить и настроить FreeBSD без доступа в Интернет?

    crontab error (без установки MTA), но я использую> / dev / null 2> & 1

    Linux и Unix - лучшая ОС в мире.