«невозможно создать жесткую ссылку X на Y: операция не разрешена» на диске ext2 из cygwin cp -al

1304
Kev

/ cygdrive / d / - это жесткий диск USB, отформатированный как ext2 и смонтированный с помощью ext2fsd .

Когда я пытаюсь указать, cp -al /cygdrive/d/X /cygdrive/d/Yгде X - файл, я получаю сообщение об ошибке в заголовке.

Вещи, которые я пробовал / проверено

Я сделал, chmod -R 777 /cygdrive/dно я все еще получаю тот же результат.

Я работаю как локальный администратор, который является владельцем / cygdrive / d.

X это файл, а не каталог.

Windows Server 2012 R2 работает с Cygwin64, действующей на сегодняшний день.

Это ext2, потому что я могу, например, touch /cygdrive/d/filename_with_a_colon:in_itи это работает, и я могу видеть это с ls. Не говоря уже о том, что так говорится в ext2fsd и диспетчере дисков Windows.

По иронии судьбы тот же синтаксис на диске NTFS работает нормально и создает жесткую ссылку NTFS.

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

Вопрос

Как я могу создать простые жесткие ссылки ext2 с помощью Cygwin?

0
`Ln` работает? DavidPostill 9 лет назад 0
@DavidPostill это говорит о том же самом. Kev 9 лет назад 0
Cygwin, вероятно, хочет создать жесткую ссылку NTFS, очень похожую на `mklink`. Если ни одна из этих программ не работает, драйвер не поддерживает его. Daniel B 9 лет назад 1
@DanielB Я думаю, у меня есть ощущение, что он может поддерживать ext fses, основываясь на том факте, что он может форматировать их через mke2fs из пакета e2fsprogs cygwin. Возможно, ты прав. Kev 9 лет назад 0
@Kev Cygwin использует средства Windows (т.е. драйверы файловой системы) для доступа к файлам. Инструменты в пакете e2fsprogs работают на необработанных дисках. Daniel B 9 лет назад 1
@DanielB, IOW ext2fsd должна была бы поддерживать создание жестких ссылок, но cygwin также должен был бы обнаружить это и использовать это? Kev 9 лет назад 0
Если cygwin использует Windows `` mklink`, я думаю, что это безнадежно: `W: \> mklink / H testlink test` дает` Локальные тома NTFS, необходимые для завершения операции`, поэтому я полагаю, что ext2fsd не поддерживает его, переопределяя это , Kev 9 лет назад 0

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

2
Daniel B

Windows does indeed support hard links. However, the documentation on CreateHardLink says it all:

This function is only supported on the NTFS file system

This limitation is probably hard-coded. Because ext2fsd is clearly not NTFS, Windows will refuse to create hard links on it.

Cygwin provides POSIX API compatibility (of sorts) on top of Windows APIs. This means that it ultimately also calls CreateHardLink and is subject to the same limitations like mklink and other Windows software.

Many tools of the e2fsprogs package (like mke2fs, e2fsck, resize2fs, ...) operate directly on the disk, without relying on filesystem drivers. That’s why the filesystem has to be unmounted before using them to change stuff. This is also why they can work without Windows (natively) being able to access ext2/3/4 at all.

В конечном счете, это означает, что подключать диск ext2 к коробке Windows, когда вы хотите использовать жесткие ссылки (например, для rsnapshot), бесполезно, если только вы не хотите избежать использования cygwin и передать его на виртуальную машину, что является еще одним источником червей. , Kev 9 лет назад 0
@Kev Да, это правильно. Однако чтение существующих жестких ссылок должно быть возможным без проблем. Daniel B 9 лет назад 0

Похожие вопросы