Несмотря на то, что я опаздываю на пир, все же, вот рецепт, и я считаю, что это практичный метод, с некоторыми предварительными условиями.
Основная идея заключается в том, чтобы попросить сервер переместить объекты в определенном месте (которое, конечно, находится в одном общем ресурсе Samba) в другое место (которое, конечно же, находится в другом общем ресурсе Samba).
inotifywait
- шеф-повар, с поварами, которые называются while
, read
и mv
. Это команда на наш ужин.
И кухня (или, возможно, столовая) выглядит так:
Samba shares
├─share.1
│ ├─recv
│ ├─to.share.2
│ ├─to.share.3
│ └─[...]
├─share.2
│ ├─recv
│ ├─to.share.1
│ ├─to.share.3
│ └─[...]
├─share.3
│ ├─recv
│ ├─to.share.1
│ ├─to.share.2
│ └─[...]
└─[...]
Вход пользователя в систему, скажем, на share.x Если пользователь хочет переместить / скопировать что-то внутри share.x в share.y, вот операция:
Выберите объекты внутри share.x, переместите / скопируйте их в share.x/to.share.y
.
Сервер отслеживает эти to.share.*
помощью inotifywait
, поэтому он знает, что пора работать.
Сервер перемещает объекты внутри share.x/to.share.y
в share.y/recv
.
Готово!
Предварительные условия включают в себя определенную структуру папок, как указано выше, задание / сервис / скрипт, выполняемый на сервере для выполнения реальной операции mv
.
У меня есть собственный код скрипта, которым я могу поделиться с вами, но есть много улучшений:
inotifywait -m "$source_dir" --format '%w%f' -e moved_to,create,modify |
while read file; do
mv -v "$file" "$dest_dir";
done
Измените эти $source_dir
и $dest_dir
в соответствии со своими потребностями.
Я использую supervisor
чтобы управлять кучей сценариев, таких как выше, чтобы сделать мою "телепортацию Samba". Если вы не знакомы с supervisor
, пожалуйста, обратитесь к http://supervisord.org/ и другим ответам об этом.