Почему rsync жестко связывает только некоторые неизмененные файлы?

Почему rsync жестко связывает только некоторые неизмененные файлы?

Я использую rsyncдля инкрементного резервного копирования опцию --link-destуказания на предыдущую резервную копию, чтобы неизмененные файлы были жестко связаны с ней.

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

Неудобно, что все большие файлы являются копиями (т. е. есть только одна ссылка на файл, проверено через ls -l). Но это также касается некоторых меньших файлов, и действительно, некоторые файлы с жесткими ссылками больше, чем некоторые скопированные файлы.

Кажется, нет никакой закономерности, которая позволила бы мне предсказать, что будет копиями, а что жесткими ссылками. Длина имени файла и размер файла кажутся несущественными, как и дата изменения: есть смесь всех этих элементов как в скопированных, так и в жестких списках ссылок. Тем не менее, файлы делаютказатьсячтобы обеспечить единообразие в нескольких резервных копиях, поэтому то, что произошло с одной резервной копией, похоже, произошло и со следующей.

Есть ли какой-то атрибут (технический или иной) файла, какая-то особенность, которая заставила бы rsyncего скопировать, а не создать на него жесткую ссылку?

ПРАВКА 1:Упоминание «атрибута» заставило меня задуматься, нет ли какого-то атрибута, которого ls -lнет в списке, но который мог бы оказать влияние, но проверка lsattrисходного каталога показывает, что все файлы имеют одинаковые атрибуты.

ПРАВКА 2:Я уже говорил ранее (теперь удалено), что разрешения были одинаковыми, но это было неправильно. Разрешения были такими же в целевом (резервном) каталоге. Я использую --perms(для сохранения разрешений), поэтому не знаю, почему разрешения не сохраняются. Я также раньше работал как не-root пользователь, но теперь пытаюсь как root на случай, если это имеет значение, но разрешения все еще не сохраняются, что, возможно, и может быть причиной того, что некоторые файлы выглядят так, как будто они изменились — файл не изменился, но его разрешения, по-видимому, изменились (по крайней мере, по сравнению с предыдущей резервной копией с ее неправильными разрешениями).

ПРАВКА 3:Теперь я думаю, что это как-то связано с моим сервером CIFS. На странице руководства есть что-то mount.cifsоб этой file_modeопции: "Если сервер не поддерживает расширения CIFS Unix, это переопределяет режим файла по умолчанию". Когда я запускаю mountкоманду без аргументов для перечисления монтирований, перечисленные опции включают file_mode=0755и , dir_mode=0755что связано с тем, что я вижу. Я не могу добавить chmodфайл на монтирование, поэтому те файлы, которые изначально не имели 0755разрешений, считаются измененными и копируются снова — и снова получают неправильные разрешения в резервной копии из-за монтирования.

решение1

Скорее обходной путь, чем решение, теперь я избегаю использования --perms/ -pили чего-либо, что подразумевает это. Очевидно, что тогда мои разрешения не копируются, но, по крайней мере, он не считает, что неизмененный файл изменен только потому, что его разрешения отличаются.

Связанный контент