- Вопрос или проблема
- Ответ или решение
- Проблема удаления файлов и использование корзины на подтомах Btrfs
- 1. Причины проблемы с корзиной
- 2. Решение проблемы с корзиной для различных подтомов
- Использование параметра x-gvfs-trash
- 3. Вопросы о файловых менеджерах и программном обеспечении
- Подбор файлового менеджера
- Предотвращение скрытого удаления в Calibre
- 4. Заключение
Вопрос или проблема
В 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-специалистам или разработчикам программного обеспечения.