Возможно ли создание жестких ссылок из Linux на разделе ntfs?

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

Это очень приятно, так как я наконец-то нашел способ сэкономить место на моем резервном диске для старых резервных копий, которые я сделал до того, как узнал о rsync и инкрементных резервных копиях.

После такого длинного вступления любой читатель ожидал бы вопроса, так что вот он:

Было бы безопасно использовать жесткие ссылки для экономии места в разделе ntfs? Жесткие ссылки, конечно, будут созданы в Linux с помощью упомянутой выше программы жестких ссылок. Точнее, сможет ли Windows (любой версии) потом использовать файлы, которые были бы заменены хардлинками?

Большое спасибо


person Morlock    schedule 13.01.2011    source источник


Ответы (3)


В Windows есть жесткие ссылки. Они создаются системным вызовом CreateHardLink в kernel32.dll. Что касается того, будет ли ваша программа с жесткими ссылками работать с удаленными общими ресурсами, я не знаю, но родная программа или программа от cygwin будут.

Теперь реальный вопрос заключается в том, справляются ли с ними программы Windows. Даже проводник Windows не может правильно рассчитать дисковое пространство, используемое для жестких ссылок.

person Joshua    schedule 13.01.2011
comment
Не советовали бы вы вручную жестко связывать (с помощью команды «ln») файлы в разделе ntfs, если целью было затем использовать их с помощью Windows? - person Morlock; 14.01.2011
comment
Просто любопытно, какова ваша идея правильного расчета дискового пространства, используемого для жестких ссылок; это не так просто, как может показаться. - person Luke; 14.01.2011
comment
Проводник Windows суммирует размер всех файлов, не проверяя номера инодов, чтобы увидеть, не встретился ли он с одним и тем же файлом дважды. - person Joshua; 14.01.2011
comment
Я использую жесткие ссылки в Windows, но опять же я знаю, какие инструменты не понимают, и избегаю смешивания. Блокнот понимает просто отлично. Word довольно сильно ломается, если в файле .doc есть лишние ссылки. - person Joshua; 14.01.2011
comment
Это, вероятно, самый логичный подход, но тогда вы столкнетесь с проблемами согласованности. Если один и тот же файл находится в двух разных каталогах, тогда sizeof(каталог1) + sizeof(каталог2) != sizeof(каталог1 + каталог2). Windows намеренно упрощена, так что с этой точки зрения они, вероятно, сделали наименее худший выбор. - person Luke; 14.01.2011
comment
@Joshua @Luke Raymond Chen говорит об этом здесь: блоги .msdn.com/b/oldnewthing/archive/2004/12/28/336219.aspx, и хотя он поднимает ряд, казалось бы, сложных вопросов, я уверен, что Джошуа решил бы эту проблему с легкостью! ;-) - person David Heffernan; 14.01.2011
comment
На самом деле системы UNIX имеют один ответ почти на каждый из этих вопросов. Точка повторной обработки = символическая ссылка: не спускаться. При расчете размеров каталогов вы учитываете каждый файл, когда впервые с ним сталкиваетесь. Это означает, что каталог может быть меньше, чем сумма его дочерних элементов. Сжатые + разреженные + альтернативные потоки данных учитывают физический размер для потребляемого пространства. При копировании нескольких ссылок в неподдерживаемый пункт назначения копируйте только первую ссылку и выводите сообщения об ошибках. Копировать ACL по умолчанию, если root, явно, только если не root. Будьте осторожны с разреженными, поскольку большинство инструментов этого не делают. - person Joshua; 14.01.2011
comment
Кстати, даже в FATxx было что-то вроде жестких ссылок. Но они назывались файлами с перекрестными ссылками и были серьезной ошибкой. (ГКНР) - person glglgl; 11.07.2016

Я провел небольшой тест. Создание жесткой ссылки (используя «ln TargetName LinkName») дает тот же файл во время создания, но после этого файл и содержимое жесткой ссылки изменяются независимо. Поэтому я бы не рекомендовал любое использование жестких ссылок на основе Unix в разделе NTFS. Используйте либо раздел Ext4 (только для Linux), либо программное обеспечение, адаптированное для Windows-подобных ссылок в разделе NTFS (программное обеспечение для Windows или, возможно, какое-либо программное обеспечение для Linux, если это явно указано).

person Josja    schedule 26.02.2021

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

person Guillaume Brunerie    schedule 13.01.2011