На OS X сохранение разрывов жестких ссылок

305
soldrinero

Я использую OS X 10.10.5, и я вижу странную проблему с жестко связанными файлами. Когда я обновляю один из связанных файлов и сохраняю изменения, другой связанный файл становится пустым - файл с нулевым байтом. Это происходит при обновлении любого связанного файла. При расследовании выясняется, что индекс сохраненного файла изменяется, т.е. перед сохранением оба файла имеют индекс 1777192, а после сохранения обновленный файл имеет индекс 1777268, а связанный файл по-прежнему 1777192.

Это нормальное поведение для OS X? Что я могу сделать, чтобы сохранить ссылку при обновлении файлов? Я использую жесткие ссылки для хранения определенных файлов в папке, которую я rsync, на внешний сервер, поэтому мне нужно иметь возможность обновлять их и поддерживать ссылку. Симлинки ломаются, когда они перезаписываются, поэтому я не могу использовать их для этой цели.

Если это уместно, этот компьютер имеет сетевую учетную запись в сети кампуса.

Редактировать: рассматриваемый файл является файлом .bib, и такое поведение возникает, когда я редактирую и сохраняю его в TeXShop. Я проверил с vim и обнаружил, что это не воспроизводит сбой. Однако ошибка воспроизводится встроенным приложением TextEdit.

2
Вы должны добавить, как вы «сохраняете» файл. Я не думаю, что это поведение встроено в OS X, поэтому оно, вероятно, связано с инструментом / методом, который вы используете. jimtut 8 лет назад 2
Отредактировано для показа тестов с vim, TeXShop и TextEdit, причем только последние два воспроизводят поведение. soldrinero 8 лет назад 0
Некоторые редакторы «обновляют» данный файл, записывая во временный файл, удаляя (отменяя связи) исходный файл, а затем перемещая (переименовывая) временный файл в исходное имя. Сравните [этот вопрос] (https://emacs.stackexchange.com/q/4237). Это объясняет, почему номера инодов различаются, здесь нет ничего необычного. Однако я не понимаю, почему и как исходный файл обрезается до нуля перед удалением ссылки. Установка файла только для чтения должна предотвращать усечение этого конкретного файла (я имею в виду конкретный индекс, а не имя), в то время как возможности создания файла, удаления или перемещения зависят от прав доступа к каталогу. Kamil Maciorowski 7 лет назад 1

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

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