SCROLL
Среднее время на прочтение: 1 мин.

Сетевая корзина (Recycle Bin) на файловом сервере в Samba 4.5

По различными причинам, случается так что какой то файл может быть удален с файлового сервера и в этом случае он будет потерян на всегда. Для того чтобы иметь возможность восстановить удаленный файл на файловом сервере samba предусмотрен модуль VFS (Virtual File System) — recycle (сетевая корзина), рассмотрим его применение.

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

В файле конфигурации samba /etc/samba/smb.conf в секцию [global] добавим следующие параметры:

/etc/samba/smb.conf
vfs object = recycle

recycle:repository = /samba/recycle/%S
recycle:keeptree = yes
recycle:versions = yes
recycle:touch = yes
recycle:exclude = ~$* *.tmp *.TMP *.temp *.bak *.log .DS_Store

[RECYCLE$]
path = /samba/recycle
read only = no

recycle:exclude = *.*

Пояснения по параметрам:

  • recycle:repository — задаем каталог расположения сетевой корзины. Если параметр не задан, то по-умолчанию сетевая корзина (.recycle) будет располагаться в корне каждой общей папки.
  • recycle:keeptree — сохранять структуру каталогов для удаленных файлов.
  • recycle:versions — в случае если у удаленных файлов их имена совпадают, то к удаленном файлу в начале имени будет добавляться Copy #N of.
  • recycle:touch — задавать дату изменения файла на время удаления файла.
  • recycle:exclude — список исключений для файлов.
Если уже используется какой-то модуль VFS, то в vfs object перечисляем все объекты через пробел
Сетевая корзина может располагаться только в той же FS что и общая папка для которой задается сетевая корзина. В случае если указать путь к сетевой корзине на другом диске, то в этом случае удаленные файлы не будут туда помещены, так как хард-линк можно сделать только в рамках одной FS.

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

Скрипт очистки

Что бы сетевая корзина не разрасталась, ее необходимо чистить. Для примера создадим скрипт (прим. recycle-clean.sh) для автоматического удаления файлов старше 30 дней.

/root/recycle-clean.sh
#!/bin/bash
find /samba/recycle/ -type f -mtime +30 -exec rm -rf {} \;

Добавим в cron выполнение созданного скрипта каждый день в 21:00:

7 21 * * * root /root/recycle-clean.sh
 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

0 комментариев

Нет комментариев.