У меня есть небольшой сервер Linux (Debian Squeeze), на котором работает сервер Samba, который настроен на совместное использование некоторых папок с некоторыми машинами Windows. При попытке удалить один из каталогов из Windows я получил ошибку «Не удается удалить папку».
Я попытался удалить каталог из консоли Linux, у меня возникла аналогичная ошибка:
# rm dir-name -rf
rm: cannot remove `dir-name': Directory not empty
Я перечислил содержимое каталога и нашел файл с именем .fuse_hidden, за которым следует шестнадцатеричное число (000bd8c100000185).
# ls -la dir-name
-rwxrwxrwx 1 root root 5120 Feb 13 11:46 .fuse_hidden000bd8c100000185
Я попытался удалить файл .fuse_hidden, но новый файл был создан мгновенно (обратите внимание на изменение шестнадцатеричного числа).
# rm dir-name/.fuse_hidden000bd8c100000185
# ls -la dir-name
-rwxrwxrwx 1 root root 5120 Feb 13 11:46 .fuse_hidden000bd8c100000186
Я также попытался удалить файл с помощью Midnight Commander, но безуспешно.
Другие решения, которые я нашел до сих пор, включают графический интерфейс, а у меня есть только console.
Любые предложения приветствуются.
Это похоже на то, что происходит, когда вы удаляете файл, открытый другой системой при монтировании NFS. Проблема в том, что файл был удален из файловой системы, в то время как его «счетчик ссылок» был> 1, что означает, что другие процессы все еще держат его открытым.
lsof dir-name/.fuse_hidden000bd8c100000185
чтобы узнать, какие процессы удерживают дескриптор файла открытым.Обычно, когда вы удаляете файл в своей локальной файловой системе, открытый другим процессом, ОС выполняет ваш запрос и удаляет его из дерева каталогов, но индексный дескриптор, на который указывает дерево, по-прежнему считается используемым операционной системой. Каждый раз, когда файл открывается, его «счетчик ссылок» увеличивается на единицу, и пространство действительно освобождается только тогда, когда счетчик ссылок достигает нуля.
Когда вы сталкиваетесь с проблемой такого рода, это означает, что ОС по какой-либо причине решила не удалите этот файл из дерева каталогов: обычно потому, что у него есть основания полагать, что к нему по-прежнему должны обращаться вещи, которые не могут использовать прямой номер inode. Сначала может показаться, что он соответствует, но за кулисами ОС переименовывает его, чтобы он имел скрытый префикс точки, чтобы он все еще был доступен с некоторой формой адресации пути к файловой системе. Пространство все равно будет освобождено, когда счетчик ссылок достигнет нуля, но этот объект останется в каталоге до тех пор, пока ссылки не исчезнут.
Спасибо за предложения, но у меня ничего не помогло. Но я нашел решение: я переместил внешний SSD на ПК с Windows. Используя проводник (с установленным флажком «Скрытые элементы»), я перешел к .Trashes
каталог смог удалить .fuser_hidden
файл.
Надеюсь это поможет!