Назад | Перейти на главную страницу

отключить объект рециркуляции samba vfs для определенного ресурса

Я использую плагин samba recycle, и в моем разделе [global] есть следующее

recycle:exclude = *.~lock*
recycle:repository = .recycled
recycle:versions = yes
recycle:keeptree = yes
vfs objects = recycle

Я хотел бы отключить эту функцию для определенного ресурса. Я пробовал поставить vfs objects = в определении доли, но это не имеет никакого значения. Я также пробовал поставить recycle:exclude = * внутри определения общего ресурса, но это тоже не сработало. И наконец я попробовал установить (в разделе [global]) recycle:exclude_dir = /home/path/to/my/dir/ что выглядело многообещающим со стороны страница руководства

Я понимаю как полностью отключить .recycle но я не этого хочу.

[правка предложена полезным комментатором ниже!]

Рассматриваемый путь отслеживается демоном Dropbox. Вот почему мне не нужна корзина - это фактически вызовет вторую загрузку с перегрузкой, а .recycled / copy не нужен, потому что файлы версий Dropbox в любом случае.

Есть небольшая работа, просто назначьте разрешения 000 для папки корзины на вашем общем ресурсе, она все еще будет там, но в нее не будут записаны файлы. Мне пришлось сделать это в моей папке с резервными копиями, потому что Windows записывает, а затем удаляет очень много файлов при резервном копировании.

Я не думаю, что это возможно только для 1 общего ресурса с использованием плагина корзины samba, вам может быть лучше, если скрипт, используемый в cron, запускается каждую минуту или около того, который очищает эту папку внутри общего ресурса корзины.

Что-то вроде rm -rf / home / path / to / my / dir / *, добавленное в cron, избавит вас от беспокойства о конфигурации samba.

Запланировать работу с cron, используя crontab -e и добавьте строку

*/10 * * * * /bin/rm -rf /home/path/to/my/dir/*

чтобы он запускался каждые 10 минут и очищал все внутри /home/path/to/my/dir/.

Если это действительно ограничение плагина, что он может работать только глобально, решение, специфичное только для этой ситуации, будет заключаться в изменении пути .recycled на /where / else /, а затем, при необходимости, символической ссылки на /where / else / ... с других путей. Это явно беспорядочно, и символические ссылки вызывают проблемы в смешанной среде ОС (например, Linux будет пытаться разрешить локально, в то время как Windows заставляет сервер разрешать удаленно).

Просто вставьте определение доли:

    recycle:exclude = *.*

По крайней мере, это сработало для меня с использованием Samba 4.1.17 на машине Debian 8.0 x86_64.

Что со мной случилось

Я активировал корзину Samba для всех общих папок на нашем файловом сервере. Например:

[global]

...

    recycle:exclude = *.tmp, *.log, *.obj, ~*.*, *.bak, *.iso
    recycle:exclude_dir = tmp, cache
    recycle:keeptree = yes
    recycle:repository = /var/samba/trash/%S
    recycle:versions = yes

...

И я установил общий ресурс RECYCLE, чтобы упростить восстановление случайно удаленных файлов:

[RECYCLE]
    path = /var/samba/trash
    writable = yes

Затем я понял, что если с клиентской машины я удалил файл из любого общего ресурса, а затем вырезал и вставил этот файл из общего ресурса RECYCLE в его исходный общий ресурс, Samba создаст резервную копию общего ресурса RECYCLE с восстановленным файлом внутри него. (т.е. мусорная корзина самой корзины).

Решение, которое я нашел, исключало долю RECYCLE из функции корзины Samba:

[global]

...

    recycle:exclude = *.tmp, *.log, *.obj, ~*.*, *.bak, *.iso
    recycle:exclude_dir = tmp, cache
    recycle:keeptree = yes
    recycle:repository = /var/samba/trash/%S
    recycle:versions = yes

...

[RECYCLE]
    path = /var/samba/trash
    recycle:exclude = *.*
    writable = yes

Чтобы отключить рециркуляцию vfs для определенного ресурса, просто поместите его в общий ресурс:

vfs objects =

Итак, чтобы разрешить повторный запуск vfs для всех общих ресурсов, но не для "norecyclebin", ваша конфигурация должна выглядеть так:

[global]
...
   vfs objects = recycle
   recycle:repository = RECYCLER
   recycle:keeptree = Yes
   recycle:versions = Yes
   ...


[share]
   ...

[anothershare]
   ...

[norecyclebin]
   ...
   # disable recycle bin for this share
   vfs objects =