Назад | Перейти на главную страницу

Файлы жестких ссылок не совпадают

Я создал жесткую ссылку на файл следующим образом:

ln /path/to/source/file1 /path/to/target/file2

Используя md5sum, два файла идентичны. Через некоторое время исходный файл был изменен другой программой. Целевой файл не обновляется. Суммы md5 теперь другие. Файлы, конечно же, находятся в одном разделе, иначе я не смог бы создать ссылку.

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

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

Идеи?

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

Что подсчитывает ссылка (первый числовой столбец в выводе ls -l) скажите за оригинальный файл? Если 1 - ссылка потерялась. Если это 2, вам нужно найти настоящую вторую копию, возможно, с помощью команды find. Для этого введите следующую команду:

find /commonparent_dir -samefile /path/to/original_file 

Это ищет файлы с тем же индексом, что и файл /path/to/original_file начиная с общего родительского каталога (то есть точки монтирования).

Я могу воспроизвести сценарий в тестовом примере, поэтому предполагаю, что это именно то, что происходит. Если исходный файл удален, жесткая ссылка теряется. Даже если создается новый файл с тем же именем, жесткая ссылка, конечно, не восстанавливается. Думаю, вот что должно происходить. Программа, обновляющая исходный файл, должна удалять файл и создавать его заново.