Файлы Hardlink не совпадают

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

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

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

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

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

Идеи?

2 ответа

Решение

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

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

find /commonparent_dir -samefile /path/to/original_file 

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

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

Другие вопросы по тегам