Удаление файлов обходит корзину в подтомах Btrfs.

Вопрос или проблема

В Nautilus корзина не перемещает файлы в корзину на файловой системе btrfs, а вместо этого удаляет их навсегда. Похоже, что Thunar делает то же самое, и это связано с реализацией библиотеки низкого уровня для корзины.

Я добавил новый каталог ~/.local/share/Trash/, который позволяет файловым менеджерам Nautilus и Thunar использовать корзину, однако это работает только для удаления, которое происходит из того же субтома. Удаление из любого другого субтома или раздела btrfs приводит к постоянному удалению.

Kalibre, менеджер электронной библиотеки, имеет другое поведение. Моя библиотека Calibre находится на другом субтоме, чем мой домашний каталог. Когда я удаляю книги через менеджер Calibre, он перемещает книги в скрытый каталог .Trash-1000 под корнем субтома, где хранится библиотека Calibre. Однако этот скрытый каталог не учитывается корзиной, и поэтому книги остаются скрытыми, занимая место, пока я не обнаружу их случайно. Я не думаю, что Calibre неправ здесь, потому что это похоже на то, как управляются корзины на внешних носителях в файловых системах ext3/4.

Функция Emacs (delete-file) умеет использовать корзину для разных субтомов и даже более удивительно, она использует корзину ~/.local/share/Trash/ для других разделов на разных дисках. Так что она выполняет свою работу прекрасно.

  • Вы знаете файловый менеджер рабочего стола, который мог бы работать с корзиной на разных субтомах btrfs?
  • Вы знаете способ предотвратить некоторым программам, таким как Calibre, перемещение файлов в скрытое место, в то время как вы думаете, что они удалены?
  • Похоже, что библиотеки gvfs и glib/gio используются для управления корзиной. Упомянутые мной программы все вызывают разные функции ОС, когда дело доходит до удаления файлов, и результат оказывается непоследовательным. Есть у кого-нибудь идеи о том, как корзины можно было бы правильно управлять?

Насколько я могу судить из своих исследований, проблема кажется более чем 5-летней давности https://bugs.launchpad.net/glib/+bug/1442649. Я уже долгое время использую btrfs с этим недостатком, но мне любопытно видеть, как другие люди справляются с этой проблемой, особенно поскольку btrfs становится все более популярным и, похоже, предлагается в некоторых установщиках дистрибутивов Linux.

GNU/Linux 5.15.2-2 Manjaro Gnome: 41.1

Я наконец нашел решение для Gnome⩾47, смонтируйте ваш субтом с опцией x-gvfs-trash, например

sudo mount -t btrfs -o defaults,subvol=data,x-gvfs-trash /dev/sda1 /media/data

Ответ или решение

Проблема удаления файлов и использование корзины на подтомах Btrfs

На файловых системах Btrfs, в отличие от обычных файловых систем ext4, есть ряд особенностей, касающихся работы с корзиной. Как вы отметили, файлы могут быть удалены без возможности восстановления, если это происходит из разных подтомов. Рассмотрим основную проблему, влияние различных файловых менеджеров и программного обеспечения, а также возможные решения.

1. Причины проблемы с корзиной

Файловая система Btrfs поддерживает создание подтомов, что позволяет организовать данные более гибко. Однако большинство файловых менеджеров и приложений не поддерживают перемещение файлов в корзину на уровне подтомов. Вы правильно указали, что программы, такие как Nautilus и Thunar, удаляют файлы, вместо перемещения их в корзину, если операция производится в другом подтоме.

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

2. Решение проблемы с корзиной для различных подтомов

Использование параметра x-gvfs-trash

Ваше решение с настройкой монтирования подтома с параметром x-gvfs-trash является отличным подходом. Это позволяет GIO/GVfs — библиотекам, ответственным за управление корзиной в Gnome — правильно определять местоположение для хранения удаляемых файлов. В вашем случае команду можно записать следующим образом:

sudo mount -t btrfs -o defaults,subvol=data,x-gvfs-trash /dev/sda1 /media/data

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

3. Вопросы о файловых менеджерах и программном обеспечении

Подбор файлового менеджера

На данный момент нет единственно лучшего файлового менеджера, который гарантированно будет работать с корзиной на различных подтомах Btrfs. Однако, программы, соответствующие вашему описанию, такие как Dolphin или Nemo, могут предоставить лучшую поддержку функций работы с корзиной, чем другие. Рекомендуется экспериментировать с разными файловыми менеджерами, чтобы определить, какой из них работает наилучшим образом в вашей конкретной среде.

Предотвращение скрытого удаления в Calibre

По поводу Calibre, можно рассмотреть несколько вариантов:

  • Внутренние настройки приложения: Проверьте, есть ли в Calibre параметры, касающиеся перемещения удалённых книг. Возможно, существует возможность указывать поведение удаления через настройки.
  • Написание скрипта: Можно рассмотреть возможность создания пользовательского скрипта, который будет перехватывать вызовы удаления и перенаправлять их в корзину.

4. Заключение

Хотя проблема поддержки корзины в Btrfs остаётся актуальной, использование параметра x-gvfs-trash при монтировании подтомов представляет собой эффективное решение. Независимо от ваших нужд, рекомендуется оставаться в курсе обновлений в библиотеках GIO/GVfs и тестировать новые версии файловых менеджеров, поскольку сообщество активно работает над улучшением поддержки современных файловых систем, таких как Btrfs.

Если у вас есть дополнительные вопросы или требуется помощь, не стесняйтесь обратиться за помощью к IT-специалистам или разработчикам программного обеспечения.

Оцените материал
Добавить комментарий

Капча загружается...