Невозможно удалить файл: «Структура нуждается в очистке»

Невозможно удалить файл: «Структура нуждается в очистке»

У меня есть внешний жесткий диск, зашифрованный через LUKS. Он содержит файловую систему ext4.

Я только что получил ошибку от rsync для файла, который находится на этом диске:

rsync: readlink_stat("/home/some/dir/items.json") failed: Structure needs cleaning (117)

Если я попытаюсь удалить файл, то получу ту же ошибку:

rm /home/some/dir/items.json
rm: cannot remove ‘//home/some/dir/items.json’: Structure needs cleaning

Кто-нибудь знает, что можно сделать, чтобы удалить файл и исправить связанные с ним проблемы с диском/фс (если таковые имеются)?

решение1

Это явно указывает на повреждение файловой системы. Вам следует размонтировать диск, сделать резервную копию на уровне секторов, а затем запустить e2fsck, чтобы посмотреть, что происходит. Если есть серьезные повреждения, вы можете быть довольны тем, что сделали резервную копию на уровне секторов, прежде чем позволить e2fsck вмешиваться в данные.

решение2

Если кому-то поможет, у меня была похожая проблема (резервные копии rsync/rsnapshot, на затронутом файле). Я разместил свою проблему/решение здесь:

https://ubuntuforums.org/showthread.php?t=2348768&p=13627299#post13627299

КРАТКОЕ СОДЕРЖАНИЕ:

Ошибка резервного копирования rsnapshot (rsync) в системе Arch Linux x86_64; поврежденный, глубоко вложенный файл вызывал эту ошибку, которая также отображалась при попытке удалить этот файл:

sudo rm -fR hourly.5/

rm: cannot remove 'hourly.5/snapshot_root/mnt/Vancouver/temp/temp - old/temp - 09 (Dec 07, 2014 - Sep 02, 2015)/a_OLD-gmail/[email protected]/[Gmail]/LINUX/rsync, rsnapshot; Other backups/19.bak': Structure needs cleaning

Вот в чем проблема:

cd mnt/Vancouver/temp/temp\ -\ old/temp\ -\ 09\ \(Dec\ 07\,\ 2014\ -\ Sep\ 02\,\ 2015\)/a_OLD-gmail/[email protected]/\[Gmail\]/LINUX/rsync\,\ rsnapshot\;\ Other\ backups/

ls -l

ls: cannot access '19.bak': Structure needs cleaning
total 0
-????????? ? ? ? ?  ? 19.bak        ## << THAT IS THE PROBLEM!!

[ Смотрите также: https://www.reddit.com/r/linuxquestions/comments/4b47r2/has_anyone_ever_gotten_structure_needs_cleaning/ ]

Мой резервный диск — /dev/sda1.

sudo umount /dev/sda1

sudo fsck.ext4 /dev/sda1  ## << accepted suggested fixes
  • Редактировать (2023-02): предупредительное замечание: вы не можете работать fsckна NAS - сетевых (RAID) жестких дисках - обычно продаются в Интернете (Amazon; ...), и которые выглядят как обычные HDD; ремонт дисков NAS требует специального программного обеспечения. Если вы применяете fsckк NAS HDD, вы, скорее всего, повредите его.

Перезагрузил: все вроде нормально. Зашел в резервные копии, удалил проблемный файл:

/mnt/Backups/rsnapshot_backups/hourly.5/snapshot_root/mnt/Vancouver/temp/temp - old/temp - 09 (Dec 07, 2014 - Sep 02, 2015)/a_OLD-gmail/[email protected]/[Gmail]/LINUX/rsync, rsnapshot; Other backups/19.bak

ЧТО НУЖНО?!

[Обновление: да; это сработало: мои резервные копии снова работают нормально! :-) ]

решение3

Файловые системы иногда не в порядке и нуждаются в очистке. Это можно сделатьfsckкоманда. Но помните, что fsck следует запускать только для размонтированных разделов, чтобы избежать риска повреждения файлов.

Если ваша файловая система ext4, попробуйте выполнить следующую команду:

fsck -AR -t ext4 -y

решение4

Я получил то же самое сообщение об ошибке от rsync и то же самое сообщение об ошибке от rm, когда я попытался удалить файл. Поскольку файловая система была корневой, не было возможности использовать fsck. Но когда я просто перезагрузил систему, файл исчез, и резервное копирование прошло успешно. Я понятия не имею, почему это сработало, но, по крайней мере, это простое решение, и стоит сначала попробовать перезагрузиться.

Связанный контент