«Ошибка обхода: u: Плохое сообщение» при удалении очень большого каталога в Linux

Используйте mvс Расширение скобки внутри контура.

for N in {1..100}; do
     mv {,new_}file$N.txt
done

Перед запуском команды mvоболочка расширит ее до такой команды для каждого файла, где $Nзаменит соответствующий порядковый номер.

mv file$N.txt new_file$N.txt

, поэтому к имени файла добавляется префикс .

-121 ---124642 ​​-

Возможно, вы сможете обойти требования к пространству для этой операции, отключив резервное копирование метаданных с помощью параметра -A|--autobackup:

lvextend -An -L+5G /dev/mapper/vg08_root

Если вы сделаете это, выполните операцию с vgcfgbackup, чтобы зафиксировать новое состояние.

Пост -Вскрытие:

Поскольку конечной целью было расширение логического тома и изменение размера инкапсулированной файловой системы, можно было использовать одноэтапную -операцию:

lvextend -An -L+5G --resizefs /dev/mapper/vg08_root

В этом случае тип файловой системы был бы выведен автоматически, что позволило бы избежать попыток использовать resize2fsвместо `xfs _Growfs'.

15
18.10.2019, 18:27
3 ответа

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

Я решил проблему, используя живой USB, так как повреждена файловая система /. Исправление заключалось в простом применении sudo fsck -cfk /dev/sda2, где dev/sda2— поврежденный диск.

19
27.01.2020, 19:49

Вы можете попробовать find /u -type f | while read f; do rm -f $f; doneЭто займет некоторое время, но может сработать. По какой-то причине циклы в bash хорошо работают, когда другие подходы терпят неудачу.

2
27.01.2020, 19:49

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

find u/ -type f -print0 | xargs -r -0 rm -f

это приведет к удалению только файлов; чтобы удалить все, используйте

find u/ -print0 | xargs -r -0 rm -rf

вы, вероятно, можете использовать опцию --deleteдля find, если она есть в вашей системе:

find u/ -type f --delete

или фанковый метод сrsync:

mkdir emptyfolder
rsync -r --delete emptyfolder/ u/

rsyncнамного быстрее, чем rmпри удалении вещей, поскольку он обходит некоторые проверки.

6
27.01.2020, 19:49

Теги

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