Почему я не могу удалить папку?

Could not remove the folder [Folder name]. Show more details Error removing file: Directory not empty Cancel-Skip All-Skip 

Я попытался удалить эти папки из терминала с помощью:

 rm -r 

У меня была проблема с папкой в ​​файловой системе btrfs. Проверка точек крепления и lsof – это обычные вещи, которые нужно искать. В моем случае это была коррупция, вызванная старой ошибкой, поскольку исправлено:

Обычные вещи для проверки:

  • lsof + D <путь> – это будет все. Вы не можете удалить папку, содержащую открытые файлы, хотя это также обычно приводит к немного другой ошибке: «Устройство или ресурс занят». Обратите внимание, что если вы не укажете «+ D <путь>», lsof покажет список для всех папок на всех файловых системах, что будет тратить время. 😉
  • mount : Это покажет вам смонтированные в данный момент файловые системы. Вы не можете удалить активно смонтированную точку монтирования или ее родительские папки.
  • btrfs sub list <путь> : Подобно точке монтирования, вы не можете удалить субволок btrfs, кроме как с помощью команды btrfs: btrfs subvolume delete <path> .

Коррупция

В случае с коррупцией, где ее невозможно легко устранить, основным решением является резервное копирование, форматирование файловой системы, а затем восстановление (исключение плохих данных). В зависимости от того, сколько данных у вас есть в файловой системе, это может быть сложной задачей. : – /

В моем случае папка с проблемами находилась внутри subvolume, поэтому я смог выполнить вышеописанное, но удалив только subvolume вместо всей файловой системы. Я выполнил резервное копирование своих данных и удалил subvolume: btrfs sub del <subvolume-path> . Затем я смог восстановить в новый subvolume, оставив папку проблем.

Коррупция i_size

Было обнаружено, что причиной в моем случае было повреждение i_size , где оно было отличным от нуля. Btrfs использует i_size для определения того, пуста ли папка. Чтобы проверить это, запустите:

 stat -c %s <foldername> 

I_размер пустой папки в btrfs должен быть равен нулю. В ext обычно 4k.

Ссылки по теме:

https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#I_cannot_delete_an_empty_directory

Вы пробовали sudo rm -r . Какие файлы есть? Вы также можете удалить все файлы, а затем удалить папку. Это дополнительная работа, но иногда это стоит того, чтобы выполнить работу.

sudo – для действий суперпользователя.

Попробуйте cd в каталог, затем удалите все файлы с помощью rm -rf * . Затем попробуйте выйти из каталога и использовать rmdir для удаления каталога.

Перейдите в папку прямо перед тем, который вы хотите удалить, и выполните эту команду, изменив имя папки по имени вашей папки: rm -rf foldername

R означает рекурсивный, а f означает силу.

Попробуйте: rmdir --ignore-fail-on-non-empty *directory*

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

В приведенном ниже примере, хотя я являюсь владельцем каталога, я не могу его удалить. Как только я добавлю разрешения на запись с помощью chmod – все удастся.

 DIR:/xieerqi skolodya@ubuntu:$ ls -dl TESTDIR/ dr-xr-xr-x 2 xieerqi xieerqi 4096 Jan 24 16:06 TESTDIR// DIR:/xieerqi skolodya@ubuntu:$ rm -rf TESTDIR/ rm: cannot remove 'TESTDIR/one & two': Permission denied rm: cannot remove 'TESTDIR/tom&jerry': Permission denied rm: cannot remove 'TESTDIR/jekyl&hide': Permission denied rm: cannot remove 'TESTDIR/pdfReader.sh': Permission denied DIR:/xieerqi skolodya@ubuntu:$ chmod +w TESTDIR/ DIR:/xieerqi skolodya@ubuntu:$ rm -rf TESTDIR/ DIR:/xieerqi skolodya@ubuntu:$ echo $? 0