Редактирование жесткой ссылки не редактирует оригинальный файл

1045
Saeed Neamati

У меня есть файл D:\JavaScript\CheckIban.js, и я хочу использовать его во многих местах, не дублируя его. Потому что, когда я исправляю ошибку (меняю ее содержимое), мне нужно, чтобы это изменение распространялось на все файлы. Используя ссылки, я планирую изменить один экземпляр жестких ссылок и ожидать автоматического обновления других экземпляров.

Теперь предположим, что я создал жесткую ссылку на этот файл, используя:

mklink /H D:\Projects\Crm\Site\Scripts\CheckIban.js D:\JavaScript\CheckIban.js

и я получаю сообщение об успехе, для которого создана жесткая ссылка ...

Однако, когда я открываю каждый файл и изменяю его, содержимое другого файла не изменяется. Что мне здесь не хватает?

Примечания: я не могу использовать программные ссылки, потому что я использую программу (TFS), которая не поддерживает работу с программными ссылками.

1
Используйте `fsutil hardlink list D: \ JavaScript \ CheckIban.js`, чтобы убедиться, что жесткая ссылка все еще существует. Chirag Bhatia - chirag64 9 лет назад 0
@ Chirag64, я выполнил эту команду, и в списке появился только сам файл. Что может быть не так? Saeed Neamati 9 лет назад 0
Команда верна, вы уверены, что выбранная вами папка верна? В целевой папке нет ничего странного? Файл еще не существует в целевом местоположении? Проблема с разрешениями? Вы пробовали запустить команду из командной строки администратора? Julian Knight 9 лет назад 0
На самом деле цель - это не папка, это файл. И да, я все сделал правильно. Файл не существует (я делаю это вручную и удаляю его перед повторным созданием), нет проблем с разрешениями, потому что я администратор, а cmd запускается с правами администратора, иначе mklink выдаст ошибку. Saeed Neamati 9 лет назад 1
@SaeedNeamati Вы когда-нибудь понимали это? У меня такая же глупая проблема ... Nick Spreitzer 7 лет назад 0

1 ответ на вопрос

0
GlennFromIowa

There's a difference between changing the file and replacing the file. According to this Microsoft page on Hard Links and Junctions, "Any changes to that file are instantly visible to applications that access it through the hard links that reference it." However, consider what happens when you replace a file: the file system deletes the file (in this case the hard link), then writes the new file with the same path and file name as the former hard link.

So it depends on how the program you're using to change the file writes to the file system when it updates the file.

See also What operations breaks the hardlinks