fsutil hardlink не работает? - PullRequest
       68

fsutil hardlink не работает?

1 голос
/ 28 апреля 2009

Я искал способ создания жестких ссылок под Windows и нашел эту страницу: http://technet.microsoft.com/en-us/library/cc788097.aspx

Чтобы попробовать, я создал файл (1.txt) в корне диска C: 100 строк следующего содержания:

C: \ 1.txt (2,598 байт):

test test test test test

Затем я открываю командную строку и набираю:

fsutil hardlink create C:\2.txt C:\1.txt

Success, 2.txt был создан, но когда я смотрю его размер, он имеет ровно 2,598 байт, а также заметил некоторые странные поведения (насколько я понимаю, жесткие ссылки):

  1. Если я удаляю 2.txt (жестко связанный файл), 1.txt не удаляется, и наоборот.
  2. Если я открою 2.txt после удаления 1.txt (исходного файла), содержимое останется прежним.

Чем команда fsutil hardlink create отличается от команды copy? И как я могу создать настоящую жесткую ссылку под Windows?

Я использую Windows XP SP 3, и моя файловая система NTFS.

Ответы [ 3 ]

5 голосов
/ 28 апреля 2009

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

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

1 голос
/ 28 апреля 2009

Как создается хардлинк fsutil команда отличается от команды копирования? И как я могу создать настоящую жесткую ссылку под виндой?

После создания файла с жесткими ссылками, попробуйте изменить либо. Вы обнаружите, что изменения отражены в обоих файлах.

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

0 голосов
/ 28 апреля 2009

Это действительно жесткая ссылка. В UNIX (я не знаком с вариантом Windows) файл - это просто набор данных на диске (упрощенно). Сама запись в каталоге дает этому файлу имя.

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

...