1

Раньше я удивлялся, почему удаление каталогов с помощью PHP или оболочки было не так просто, как в Windows, просто нажав «Удалить». Теперь я понимаю, что удаление - это просто отсоединение файлов от таблицы размещения файлов, поэтому, чтобы удалить каталог, вы должны отсоединить все файлы внутри него.

Возможно ли удаление записи каталога, но не файлов внутри нее? Периодически ли операционные системы проверяют файлы, недоступные в файловой системе?

2 ответа2

4

Во многих UNIX есть команда unlink которая позволяет пользователю root отсоединять каталог, но не рекурсивно разъединяет содержимое каталога, поэтому это очень опасно. Если это когда-нибудь произойдет, используйте fsck для восстановления отключенного каталога, который появится в папке lost+found файловой системы со случайным именем (так как имя было потеряно, когда произошла unlink ).

2

Да, это возможно, довольно маловероятно, поскольку в ОС существуют процедуры, предотвращающие это, но ошибки диска и странности могут привести к тому, что что-то произойдет.

Обычно это то, для чего предназначены chkdsk, fsck и множество других утилит. Они читают таблицы размещения и сопоставляют их с известными записями файла ... все, что не так, вызывает некоторые действия.

В Windows вы обычно можете сигнализировать Windows, что хотите выполнить проверку, просматривая опцию « Свойства», когда вы щелкаете правой кнопкой мыши значки диска. Тогда он может выполнить проверку, хотя Windows, кажется, предпочитает проверку загрузочного диска, и он скажет вам, что сделает это при следующей перезагрузке.

В Linux ... вы можете серьезно повредить себе, играя с утилитой fsck в активной системе, поэтому Linux-боксы обычно всегда выполняют свои проверки файловой системы (fsck!) во время запуска. Простая перезагрузка часто приводит к проверке. (хотя я знаю, что отключение питания моего домашнего сервера при сбое ИБП тоже приводит к срабатыванию!) (файловая система помечена как грязная)

OS X? Понятия не имею. Кинда просто подумала, что вы потянули латте возле машины, и он исправил все, что с ним не так, связавшись с ближайшим GeniusBar. (Вы, наверное, тоже должны быть в Starbucks ™ или рядом с ним)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .