Здравствуйте! Подскажите, пожалуйста, какими функциями можно проверить, что один из двух файлов является или не является жесткой ссылкой? Как можно сравнить адреса этих файлов на жестком диске?
Жаль, что нельзя отредактировать пост. Вообщем, вот: "Как можно узнать и сравнить адреса этих файлов на жестком диске?"
А какая FS? Если речь идет про *nix, то можно пойти более простым путем: в индексном дескрипторе сохраняется количество жестких ссылок на файл. Соответственно, надо обойти всю FS, чтобы найти файл с таким же индексным дескриптором. А понятия "кто главнее" чаще всего в *nix FS нет.
Файловая система - NTFS. В MFT же должен располагаться адрес расположения файла на винчестере. И моя проблема заключается в том, как узнать этот адрес (или наверно кластер) этого файла. Может быть такая ситуация, что две идентичные записи (файлы) в MFT будут указывать на один и тот же адрес (кластер) на винчестере. Отсюда следует, что одна из этих записей была создана как жесткая ссылка.
так эти ссылки и есть файл. все без исключения. так должно быть. если удалить хоть одну, то ФС укажет на повреждение
неправильно выразился. я имел ввиду: удалить в обход ФС. (несоответствие счётчика ссылок их количеству). короче, непонял я проблему
я тоже не понял про удаление в обход файловой системы и про несоответствие счётчика ссылок их количеству. Я единственно видел (читал) пару месяцев назад про символьные и жесткие ссылки. Там было написано, что ничего страшного не будет, когд удалишь жесткую ссылку. Только когда ниодной записи не останется на этот файл в mft, то файла не становится, но физически то все равно остаётся на винте. Вот пример, есть 2 файла: 1. "C:\CS1.6-patch32\hl.exe" 2. "C:\CS1.6-patch35\hl.exe" Как мне узнать, что один из этих файлов не является жесткой ссылкой? Это можно узнать, если проверить эти две записи в mft, и узнать кластер, с которого начинаются данные этих файлов. Если кластер один и тот же, значит один из этих файлов был создан, как жесткая ссылка.
Всё, что нужно, выдаёт функция GetFileInformationByHandle - и число жёстких ссылок на файл, и идентификатор файла в файловой системе (который одинаков для всех жёстких ссылок). Кстати, некорректно говорить "вот это настоящий файл, а вот это жёсткая ссылка" - после создания ссылки у одного физического файла получаются два (или больше) совершенно равноправных имени.
честно признаюсь я - ламо (чуть менее, чем всегда), но пошуршав интернетами и, почитав копипаст, пришёл к выводу что: жёсткая ссылка должна иметь в одном из своих аттрибутов ссылку, а настоящий файл - данные. Придётся накопать спецификацию на МС сайте