Mặc dù tôi đến trễ bữa tiệc, nhưng đây vẫn là công thức và tôi tin rằng đó là một phương pháp thực tế, với một số điều kiện tiên quyết .
Ý tưởng cốt lõi là bảo máy chủ di chuyển các đối tượng ở một vị trí cụ thể (tất nhiên là trong một chia sẻ Samba) đến một vị trí khác (tất nhiên là trong một chia sẻ Samba khác ).
inotifywait
là đầu bếp, với bếp được gọi là while
, read
và mv
. Đó là đội cho bữa tối của chúng tôi.
Và nhà bếp (hoặc có thể là phòng ăn) trông như thế này:
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
│ └─[...]
└─[...]
Một người dùng đăng nhập vào, giả sử, chia sẻ.x. Nếu người dùng muốn di chuyển / sao chép một cái gì đó bên trong share.x để share.y, thì đây là thao tác:
Chọn các đối tượng bên trong share.x, di chuyển / sao chép chúng vào share.x/to.share.y
.
Máy chủ đang theo dõi các to.share.*
thư mục inotifywait
đó, do đó nó biết đã đến lúc hoạt động.
Máy chủ di chuyển các đối tượng bên trong share.x/to.share.y
đến share.y/recv
.
Làm xong!
Các điều kiện tiên quyết bao gồm, một cấu trúc thư mục cụ thể như trên, một công việc / dịch vụ / tập lệnh chạy trên máy chủ để thực hiện mv
thao tác thực sự .
Tôi có mã script riêng để chia sẻ với bạn, nhưng có rất nhiều cải tiến để thực hiện:
inotifywait -m "$source_dir" --format '%w%f' -e moved_to,create,modify |
while read file; do
mv -v "$file" "$dest_dir";
done
Sửa đổi những điều đó $source_dir
và $dest_dir
để phù hợp với nhu cầu của riêng bạn.
Tôi sử dụng supervisor
để quản lý một loạt các kịch bản như ở trên để thực hiện "dịch chuyển tức thời Samba". Nếu bạn không quen thuộc supervisor
, vui lòng tham khảo http://supervisord.org/ và các câu trả lời khác về nó.