Каждому диску по корзине
KDE, как и многие графические среды, представляет возможность работы с файловой корзиной. Концепт корзины очень удобен как дополнительный инструмент защиты от случайных нажатий и перманентного удаления файлов.
Корзина кардинально отличается от стандартной утилиты rm. Утилита rm просто удалит файлы с диска без элементарной возможности их восстановления. Именно по этой причине появились CLI инструменты навроде trash-cli, которые позволяют получить возможности использования корзины в терминале. В общем случае, можно даже создать алиас rm как trash, т.к. поддерживается достаточная степень схожести опций.
Но есть небольшая загвоздка. И trash, и KDE Dolphin, имеют сложности при работе с монтированными дисками. Эта сложность заключается в настройках по умолчанию и конкретно моего стиля монтирования дисков.
Я монтирую диски для всей системы посредством листинга в /etc/fstab. Так диски доступны для всех пользователей в любой момент времени и не требуют монтирования вручную или через CLI.
Владельцем корня диска назначается root, а для других пользователей и групп я создаю нужные им папки. Сделав chown, получаем аналог /home на системном диске. Ведь /home владеет root, а пользователи владеют всем в их домашних папках.
К примеру, есть точка монтирования /media/backup/, которая принадлежит root, а в ней есть папка /media/backup/projects/, которой владеет мой пользователь. С монтированием, надеюсь, понятно. Теперь к процедуре перемещения в корзину.
При перемещении файла в корзину будет произведён поиск папок .Trash и .Trash-$UID в корне смонтированного диска. В случае их отсутствия, инструменты типа trash-cli и Dolphin попытаются создать нужную папку .Trash-$UID в корне диска. Если это не получилось, то файлы будут перемещены в корзину системного диска. Точнее в папку /home/$USER/.local/share/Trash. Никаких ошибок и информации по данному поводу Вы не увидите, пока не будет использовать опцию verbose, к примеру trash -v.
Пытливый ум уже заметит, что если речь о пользовательском non-root $UID, то trash-cli или Dolphin никогда не смогут создать нужные папки, а всегда будут перемещать файлы на системный диск.
Поскольку мой системный диск “не резиновый” и постоянно записывать “мусор” с других дисков на него я тоже не хочу, стоит решить эту проблему. Решается она элементарно, путём создания той самой папки .Trash-$UID в корне диска, определением владельца и выдачей соответствующих прав. Резюмировать это можно всего 3 командами (их можно объединить через &&, если Вам удобнее):
$ sudo mkdir .Trash-$UID
$ sudo chown $USER: .Trash-$UID
$ chmod 700 .Trash-$UID
Эти действия нужно произвести для каждого диска, находящегося в /etc/fstab. В результате получим полностью рабочую корзину на каждом отдельном диске. При этом графический интерфейс Dolphin и trash-list дают сводную информацию по всем корзинам на всех дисках, что бывает очень удобно.