Перевод статьи.
Можно ли сделать так, чтобы в Samba была Корзина вроде той, что есть на Рабочем Столе?
Да. У Samba есть возможность перемещать удаленные объекты в специально
созданную папку вроде той, которая используется для удаленных объектов
на локальной машине. Что является преимуществом по сравнению с обычной
конфигурацией Samba, поскольку обычно, если файл удаляется
пользователем, то удаляется окончательно. Единственный очевидный
недостаток — это увеличение количества дискового пространства в связи с
хранением удаленных файлов. Для решения этой проблемы будет необходимо
периодически очищать эту Корзину.
В этой статье предполагается, что у становлена samba 3-x.x. Это можно проверить следующей командой:
rpm -q samba
Если необходимая версия Samba не установлена, обратитесь к статьям, коих множество, описывающих установку/обновление корректной версии Samba.
Для реализации сетевой корзины Samba используется модуль Virtual File System (VFS). Различные модули VFS, которые могут использоваться Samba, расположены в локальной директории: /usr/lib/samba/vfs.
Документация по опциям модуля recycle.so, а также другим модулям VFS, может найдена в директории /usr/share/doc/samba-x.x/docs/Samba-HOWTO-collection.pdf в главе 19 или на сайте http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/VFS.html.
Для реализации Корзины Samba необходимо просто отредактировать один из ваших общих ресурсов, пример такой редакции указан ниже:
/etc/samba/smb.conf
#============= Share Definitions =============
[SambaShare]
path = /home/scripts
public = yes
writable = yes
browsable = yes
vfs object = recycle
recycle:repository = .deleted/%U
recycle:keeptree = Yes
recycle:touch = Yes
recycle:versions = Yes
recycle:maxsize = 0
recycle:exclude = *.tmp
recycle:exclude_dir = /tmp
recycle:noversions = *.doc
Эти настройки только осуществляют создание Корзины в каталоге «Samba
Share». Эти опции должны быть указаны для каждой расшаренной папки
Samba, для которой необходимо включить данную функциональность.
Самая интересная опция указана на самом верху:
recycle:repository = .deleted/%U
В этой строке определяется, где будут храниться удаленные файлы. Указывается относительный путь касательно расшаренного каталога. В указанном примере — это /home/scripts. Таким образом, все удаленное будет перемещено в директорию .deleted по этому пути. Переменная %U — имя пользователя, в данное время просматривающего данный расшаренный каталог. Для каждого пользователя, удаляющего файл, существует каталог с его именем пользователя, в котором хранятся все файлы, которые он удалил.
Например:
Скотт просматривается каталог «Samba Share» и удаляет файл. Удаленный файл можно будет найти в /home/scripts/.deleted/Scott.
Брэд просматривает каталог «Samba Share» и удаляет файл. Удаленный файл можно найти в /home/scripts/.deleted/Brad.
Важно заметить, что каталог .deleted должен быть создан заранее. Это позволит затем пользователям записывать в эту директорию. Это просто пример и настройка может быть изменена в зависимости от конкретной ситуации.