Сетевая корзина Samba
26 марта 2025
При удалении файлов из общей папки они удаляются безвозвратно. Однако можно настроить сетевую корзину, которая будет представлять собой скрытый каталог для временного хранения удаленных объектов с Samba.
Для этого необходимо отредактировать файл конфигурации Samba: /etc/samba/smb.conf
К необходимой шаре/ам необходимо добавить следующие строки:
vfs objects = recycle recycle:repository = .recycle/%U recycle:keeptree = Yes recycle:touch = Yes recycle:versions = Yes recycle:maxsize = 0 recycle:exclude = *.tmp, ~$*, ~~$*, .~lock* recycle:exclude_dir = /tmp
Параметры означают следующее:
- vfs objects = recycle — включаем подсистему recycle.
- recycle:repository — где хранить удаленные объекты. В данном случае удаленные файлы попадут в скрытый каталог .recycle, в котором будет создан каталог с именем пользователя, который удалил файл или папку.
- recycle:keeptree — сохранять дерево каталогов.
- recycle:touch — изменять дату изменения файла при перемещении в корзину.
- recycle:versions — добавлять номер версии файла при совпадении имён.
- recycle:maxsize — максимальный размер файлов, которые необходимо помещать в корзину. 0 — без ограничений.
- recycle:exclude — исключить файлы.
- recycle:exclude_dir — исключить каталоги.
Пример:
[public] comment = Public directory path = /path/to/public public = yes browseable = yes writable = yes vfs objects = recycle recycle:repository = .recycle/%U recycle:keeptree = Yes recycle:touch = Yes recycle:versions = Yes recycle:maxsize = 0 recycle:exclude = *.tmp, ~$*, ~~$*, .~lock* recycle:exclude_dir = /tmp
Для вступления изменений в силу перезапустим Samba:
sudo service smbd restart
Символы подстановки переменных в Samba
- %S — Имя текущей службы
- %P — Корневой каталог текущей службы
- %u — Пользователь текущей службы
- %g — Основная группа %u
- %U — Имя пользователя для сеанса (может отличаться от имени,запрошенного клиентом)
- %G — Основная группа %U
- %H — Домашний каталог пользователя
- %v — Версия Samba
- %h — Имя хоста, на котором работает Samba
- %m — NetBIOS-имя компьютера-клиента
- %L — NetBIOS имя сервера
- %M — Имя хоста для компьютера-клиента
- %N — Имя NIS-сервера домашних каталогов. Значение определяется при помощи файла настройки системы NIS auto map. Если вы скомпилировали Samba без automount, то значение совпадает с установленным для сервера NetBIOS именем
- %p — Путь к домашнему каталогу службы. Определяется при помощи файла настройки
- системы NIS auto map, как %N:%p
- %R — Выбранный после установления соединения уровень протокола
- %d — Номер текущего серверного процесса
- %a — Операционная система клиента (значение может быть неверным)
- %I — IP-адрес клиентской машины
- %T — Текущие дата и время
Строка recycle:repository = .recycle/%I/%U будет помещать удалённые файлы в каталог с именем IP-адреса компьютера, с которого было произведено удаление, и именем пользователя.
Каталог корзины необязательно размещать внутри шары. Она может находиться в любом другом диске за её пределами, например если вы не хотите чтобы пользователи могли просматривать её содержимое.
