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

Ответ Кусалананды в целом является лучшим подходом; но в случае netatalk обновление пакета до более новой версии кажется довольно сложным (по крайней мере, в контексте дистрибутива).

Теперь, когда вы установили локально собранную версию netatalk, я бы рекомендовал следующий подход (я предполагаю, что вы извлекли netatalk в каталог под названием netatalk-3.1. 8, и собрали и установили его оттуда):

  • tar распакуйте исходники (и двоичные файлы, собранные в дереве исходников);
  • скопируйте tarball на другой Raspberry Pi;
  • на другом Raspberry Pi установите checkinstall и распакуйте tarball;
  • установите двоичные файлы, используя checkinstall

    checkinstall -D make install
    

    (as root).

Этот последний шаг установит двоичные файлы, скопированные в предварительно собранный исходный код с вашей первой Raspberry Pi (который не должен требовать никакого пакета -dev), и создаст из него пакет .deb. Затем вы можете скопировать пакет .deb на другие системы Raspberry Pi...

Я не уверен, насколько хорошо это будет работать, если какая-либо из необходимых библиотек отсутствует, поэтому вы можете предварительно запустить ldd на двоичных файлах на вашем первом Raspberry Pi и убедиться, что соответствующие lib... пакеты (не -dev!) установлены на второй.

Есть более простой вариант, если в netatalk Makefile есть работающая цель uninstall: в этом случае на первом Raspberry Pi установите

  • install checkinstall;
  • uninstall netatalk:

    make uninstall
    
  • установите его снова, используя checkinstall:

    checkinstall -D make install
    

Таким образом, вы будете знать, что необходимые библиотеки уже установлены, и полученный .deb должен иметь соответствующие зависимости.

Если checkinstall не сработал, всегда есть возможность использовать предварительно собранный tarball:

  • tar загрузите исходники (и двоичные файлы, собранные в дереве исходников);
  • скопируйте tarball на другие Raspberry Pi;
  • на каждом Raspberry Pi запустите make install;
  • запишите библиотеки, которые нужно установить отдельно, чтобы все заработало.

38
16.12.2016, 00:25
6 ответов

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

37
20.08.2021, 11:50

Если это кому-то поможет, у меня была аналогичная проблема (резервное копирование 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/victoria.a.stuart@gmail.com/[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/victoria.a.stuart@gmail.com/\[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

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

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

Q.E.D.?!

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

8
20.08.2021, 11:50

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

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

fsck -AR -t ext4 -y
2
20.08.2021, 11:50

Это обычная ошибка при попытке удалить.Trash -0, если вы пытаетесь удалить окна в файловой системе с кодировкой CP1251 в системе Linux. Итак, fs поврежден, но это не важно. Fs Windows всегда поврежден, как видно из Linux. Но это не так. Вы можете попробовать открыть этот файл из ОС Windows. Все будет хорошо. А потом удалить его в винде. И только после этого убирать мусор.

0
20.08.2021, 11:50

Я исправил эту проблему с помощью этой команды в моей оболочке proxmox:

  • остановить контейнер
    pct stop 100
    
  • Контейнер fsck, это устраняет проблему, в некоторых случаях файлы повреждены в системе контейнера.
    pct fsck 100
    
  • запустить контейнер
    pct start 100
    

Теперь бэкап и все хорошо!

1
20.08.2021, 11:50

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

1
20.08.2021, 11:50

Теги

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