Как удалить файл с именем "filen/ame" (с косой чертой) на файловой системе ext4 в debugfs?

Вы не особо много говорите о том, что пытаетесь сделать или что это за данные, но вот моя идея - предполагающая, что все слова уникальный. Вы не говорите, что беспокоитесь об эффективном использовании дискового пространства.

Файловая система Ext4. Храните каждое слово в отдельном файле в одном большом каталоге. Позвольте файловой системе найти их за вас - это очень просто для вас (просто откройте нужный файл по имени), а файловая система имеет эффективный метод поиска файлов.

Вам необходимо убедиться, что в вашей файловой системе достаточно свободных индексных дескрипторов - по одному на файл, поэтому вам потребуется 250 000 свободных индексов: du -i .

Избегайте выполнения ls или других действий, которые должны перечислять файлы (например, открывать их в файловом браузере), и производительность должна быть хорошей.

26
20.03.2017, 19:43
3 ответа

Если вы хотите исправить это, а не просто пробуете debugfs , вы можете использовать fsck . для тебя. Отметьте файловую систему как грязную и запустите fsck -y , чтобы изменить имя файла:

$ debugfs -w -R "dirty" /tmp/ext4fs
$ fsck -y /tmp/ext4fs
 ...
/tmp/ext4fs was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Entry 'filen/ame' in / (2) has illegal characters in its name.
Fix? yes
 ...
$ debugfs -w -R "ls" /tmp/ext4fs
2  (12) .    2  (12) ..    11  (20) lost+found    12  (980) filen.ame   
33
27.01.2020, 19:40

Если вы переместите файл в каталог, вы сможете удалить каталог с файлом.

mkdir foo 
mv filen* foo
rm -rf foo
-1
27.01.2020, 19:40

Поздравляем с запуском fsck; если по какой-то причине это не сработало, ответ будет следующим: ls -i1, за которым следует umount, а затем clri.

Ссылка: http://docstore.mik.ua/orelly/unix/upt/ch23_13.htm

Я действительно проверял этот метод.

3
27.01.2020, 19:40

Теги

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