Невозможно удалить файл в Linux

Невозможно удалить файл в Linux

После резервного копирования моего домашнего каталога с ext4 на btrfs с помощью 'rsync --archive --update' rsync сообщает об ошибках следующего вида:

rsync: readdir("/mnt/backup/home/me/.mozilla/firefox/qbdcaxwe.default/sessions/????????? ??????"): Not a directory (20)                
rsync: rename "/mnt/backup/home/me/.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN" ->                           
+"home/me/.mutt/cache/bodies/imaps:[email protected]/INBOX/3-13228": Not a directory (20) 

Когда я пытаюсь удалить эти элементы с помощью 'rm' - появляется сообщение об ошибке, что этот элемент является каталогом. Но 'rm -d' завершается с сообщением "невозможно удалить ...: нет такого файла или каталога.". 'btrfs check' и 'btrfs scrap' не обнаружили никаких ошибок файловой системы.

Вот вывод команд «file», «rm» и «rmdir»:

$ file /.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN
/.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN: SMTP mail, Non-ISO extended-ASCII text, with very long lines
$ rm /.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN
rm: remove regular file ‘/.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN’? y
rm: cannot remove ‘/.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN’: Not a directory
$ rmdir /.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN
rmdir: failed to remove ‘/.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN’: Not a directory

Как можно удалить такие элементы файловой системы?

решение1

Резервное копирование домашнего каталога пользователя может вызвать проблемы, если пользователь выполняет его во время работы приложений, поскольку приложения могут держать файлы открытыми и/или добавлять/удалять файлы и каталоги, мешая процессу резервного копирования.

Гораздо лучше (если это возможно) создать резервную копию от имени пользователя root, пока он не вошел в систему.

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

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

решение2

Если вы используете btrfs, почему бы не воспользоваться ее возможностями?

сделайте снимок:

sudo btrfs sub snap /home/me /home/me/.$(date +%Y-%m-%d_%H%M%S)_snapshot

rsync-синхронизируем старую резервную копию со снимком, а не с реальными данными:

rsync --archive --update /mnt/backup/home/me/ /home/me/$(sudo btrfs subvolume list -c /home/me|tail -n1|awk '{print $NF}')/

(Я в основном использую rsync -mauvPAX from/ to/ # но вам может не понадобиться все это.)

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

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