
Раньше я задавался вопросом, почему удаление каталогов через PHP или shell не было таким простым, как в Windows, с простым нажатием кнопки удаления. Теперь я понимаю, что удаление — это просто отсоединение файлов от таблицы размещения файлов, поэтому для удаления каталога необходимо отсоединить все файлы внутри него.
Возможно ли, что запись каталога будет удалена, но не файлы внутри него? Проверяют ли операционные системы периодически файлы, которые не могут быть доступны в файловой системе?
решение1
Во многих UNIX-системах есть unlink
команда, которая позволяет пользователю root
отключать каталог, но она ненетрекурсивно отсоедините содержимое каталога, поэтому это очень опасно. Если это когда-нибудь произойдет, используйте fsck
для восстановления отключенного каталога, который появится в lost+found
папке файловой системы со случайным именем (так как имя было утеряно, когда это unlink
произошло).
решение2
Да, это возможно, хотя и маловероятно, поскольку в ОС предусмотрены процедуры, предотвращающие возникновение подобных ситуаций, однако ошибки диска и другие странности могут стать причиной подобных ситуаций.
Это, как правило, то, чтоchkdsk,fsck, и множество других утилит предназначены для этого. Они считывают таблицы распределения и сопоставляют их с известными записями файлов... что-то не так заставляет предпринять какие-то действия.
В Windows вы обычно можете подать сигнал Windows о том, что хотите провести проверку, посмотрев вХарактеристикивариант, когда вы нажимаете правой кнопкой мыши на значки дисков. ЭтомощьТогда выполните проверку, хотя Windows, похоже, отдает предпочтение проверке загрузочного диска, и сообщит вам, что сделает это при следующей перезагрузке.
В Linux, ... вы можете серьезно навредить себе, играя с утилитой fsck на активной системе, поэтому Linux-боксы обычно всегда выполняют проверки файловой системы (fsck!) во время запуска. Простая перезагрузка часто вызывает проверку. (хотя я знаю, что отключение питания от моего домашнего сервера при отказе ИБП тоже запускает проверку!) (файловая система помечена как грязная)
OS X? Понятия не имею. Просто подумал, что ты потягивал латте возле машины, и она исправила все, что с ней не так, связавшись с ближайшим GeniusBar. (Вам, вероятно, нужно быть в Starbucks™ или рядом с ним, я думаю)