2012-06-14 26 views
5

Chúng tôi muốn tạo một lưu trữ tài liệu đơn giản tương đối nhưng có một số yêu cầu. Ý tưởng của tôi là, một tập tin được quét và xử lý bởi một công cụ/daemon riêng biệt khi nó đến kho lưu trữ ngay lập tức.Cách tạo thư mục dưới Linux hoạt động như một đường ống

DMS (giả) phải cung cấp quyền truy cập qua NFS và Samba. Như tôi đã thấy cho đến nay, các đường ống sẽ tốt cho việc truyền tệp đến một số móc. Nhưng tôi tự hỏi nếu có một cách để tạo ra một thư mục như một đường ống. Tôi đã chỉ nhìn thấy các đường ống được đặt tên.

Quy trình cần thực hiện bất kỳ tệp nào trong thư mục này là tập lệnh PHP cần thực hiện điều gì đó như đoán kiểu MIME, kiểm tra CRC32 (so với giá trị trong DB) ... Có ai gợi ý cách thực hiện việc này không?

EDIT: Tôi hy vọng nó rõ ràng hơn một chút với giải thích sau đây - Tôi đang tìm cách cung cấp "điểm cuối" qua Samba và NFS nơi đặt tệp có thể được xử lý bằng quét vi-rút và quá trình meta ngay lập tức (và được lưu trữ cuối cùng).

+1

Bạn đường dẫn giữa các quy trình chứ không phải tệp. Không chắc chắn ý bạn là "tạo thư mục làm đường ống" – Attila

+0

Tôi nghĩ về các đường ống được đặt tên (có thể được sử dụng để đưa dữ liệu vào, tức là với 'cat [file]> named_pipe' và lấy dữ liệu từ) - nhưng đây chỉ là bắn đầu tiên trong bóng tối. Tôi đang tìm một cách để cung cấp một "điểm cuối" thông qua Samba và NFS nơi các tập tin có thể được đặt được xử lý bằng quét virus và quá trình meta ngay lập tức. Điều này sẽ cung cấp xử lý thời gian thực và tránh tiêu thụ bộ nhớ lớn. – rabudde

+0

Nhắc tôi về sendmail * daemon. Thư đi vào thư mục/var/spool/mqueue được xử lý bởi sendmail và được di chuyển (hoặc gỡ bỏ) cuối cùng. –

Trả lời

9

Bạn có thể sử dụng FUSE để triển khai hệ thống tệp trung gian nằm trên hệ thống tệp thực của bạn (hệ thống tệp phụ trợ) và thực hiện bất kỳ xác thực bạn cần trên dữ liệu trước khi cuối cùng ghi nó vào chương trình phụ trợ. Sau đó, bạn phục vụ hệ thống tập tin đó thông qua NFS/Samba.

Một khả năng khác là sử dụng API inotify để được thông báo về các thay đổi trên một số cây hệ thống tệp và thực hiện các thao tác được yêu cầu. Vấn đề với phương pháp này là quá trình xử lý sẽ không đồng bộ, vì vậy các tệp phần mềm độc hại sẽ được xuất bản trong một thời gian ngắn cho đến khi chúng được quét và xóa.

cập nhật: ClamFS thực hiện chính xác điều đó!

+0

Nghe có vẻ thú vị, tôi sẽ thử các công cụ trong tuần tới, xe tăng. – rabudde

2

Bạn có thực sự cần nó là chia sẻ SMB hoặc NFS không? Tôi mỏng bạn có lẽ tốt hơn off bằng văn bản/sử dụng một số mã máy chủ tùy chỉnh. SMB và NFS được thiết kế để chuyển các tệp thông thường, khá xa từ trường hợp sử dụng của bạn

+1

Tôi thực sự cần nó là samba VÀ nfs, không có lựa chọn nào khác cho chúng tôi. – rabudde

3

Nếu tôi hiểu chính xác bạn, những gì bạn muốn làm là cung cấp cho người dùng cuối một giao diện rất dễ dàng được tích hợp vào hệ thống tệp của họ. Họ sẽ thấy một thư mục bình thường trên hệ điều hành của họ, họ sẽ sao chép và di chuyển các tập tin, đổi tên chúng, vv Dù chúng đang làm gì trên bất kỳ thư mục nào khác trên máy tính của họ.

Tuy nhiên, thư mục này sẽ không phải là thư mục thực trong nền. Bạn muốn có toàn quyền kiểm soát các thao tác trên thư mục này. Khi họ sao chép một tệp vào thư mục này, bạn muốn có một Tập lệnh PHP để xử lý. Khi họ tạo một thư mục mới trong thư mục đặc biệt này, một tập lệnh PHP khác sẽ xử lý nó.

Như salva đã đề xuất, việc tạo giao diện hệ thống tệp của riêng bạn thực sự là một giải pháp tốt; nhưng nó không phải là một cách nhanh chóng cũng không dễ dàng. Vì bạn đã đề cập đến PHP như là phụ trợ của bạn, tôi nghĩ bạn muốn có một cách tiếp cận mức cao hơn.

Sự cố của bạn có hai khía cạnh cần được xử lý: máy khách và máy chủ. Về phía máy khách, bạn cần một hệ thống tệp dễ dàng gắn kết như một thư mục trên hệ thống posix hoặc dưới dạng ổ đĩa trên Windows. Có rất nhiều lựa chọn thay thế cho điều này, Samba và NFS là hai trong số họ như bạn đã đề cập.

Bạn sẽ làm phía máy chủ của nó bằng PHP, như tôi đã hiểu. Xem xét điều này, tôi sẽ đề nghị sử dụng WebDav thay vì Samba hoặc NFS. Triển khai trên máy chủ dễ dàng hơn nhiều. Nó có sẵn trên hầu hết các hệ điều hành hiện đại.Thậm chí còn có các plugin trình duyệt để truy cập webdav để bạn có thể cung cấp nhiều giao diện cho khách hàng của mình rất dễ dàng.

Ở phía máy chủ, nếu bạn sử dụng PHP, có một thư viện php nguồn mở được gọi là sabredav. Chỉ với một tìm kiếm nhanh trên Google, tôi thậm chí còn tìm thấy a tutorial cho việc này.

Trong thiết lập này, bạn có thể xử lý các tệp theo cách bạn muốn. Đây có thể là một hệ thống một máy bằng cách nhúng một máy chủ web như nginx hoặc Apache vào hệ thống của bạn cho phía PHP hoặc được cung cấp như một dịch vụ đang chạy trên các máy chủ của bạn.

Tôi hy vọng tôi đã hiểu chính xác câu hỏi của bạn và đây là giải pháp bạn đang tìm kiếm.

CẬP NHẬT: Nếu bạn không có cơ hội sử dụng giải pháp khác như tôi đã đề xuất và nó thực sự phải là Samba và NFS; cả hai giao thức thực sự là quá nhiều để thực hiện trong PHP. Nó sẽ là một gánh nặng lớn và đau đầu lâu dài.

Tuy nhiên, bạn có thể sử dụng các máy chủ NFS/Samba bình thường và cố gắng theo dõi các cập nhật tệp trong nền bằng ứng dụng của bạn. Điều này có nghĩa là các tính năng đặc biệt bạn muốn cung cấp như gắn thẻ tệp hoặc quét vi-rút sẽ khả dụng với độ trễ có thể chấp nhận được. Để thực hiện điều này, bạn có thể kiểm tra tất cả các tệp và thư mục trên hệ thống và làm việc trên các tệp/thư mục mới/sửa đổi. Một điều dễ dàng hơn sẽ là sử dụng các máy chủ có cơ chế ghi nhật ký cho mọi hành động và theo dõi nhật ký của chúng. Điều này thậm chí có thể tốt hơn là giao tiếp trực tiếp với máy khách. Nếu bạn kiến ​​trúc hệ thống của bạn một cách chính xác, độ trễ giữa các sửa đổi tệp và xử lý chúng sẽ thực sự hợp lý ngay cả trên một hệ thống rất lớn. Đối với điều này, nas4free có thể là một giải pháp thực sự tốt vì nó cung cấp nhiều giao diện từ một hệ thống duy nhất và theo its features page, nó có khả năng nhật ký hệ thống.

+0

Cảm ơn rất nhiều vì câu trả lời tuyệt vời của bạn. WebDAV nghe rất thú vị. Nhưng vì giải pháp này phải được thực hiện trong công ty của chúng tôi, tôi nghĩ rằng giải pháp salvas là vững chắc hơn (ngoài ra không thể bao gồm một số bài đăng khác như quét thông tin meta). Tôi sẽ thử giải pháp của bạn, nhưng không phải vì bây giờ không có nhiều thời gian cho các thí nghiệm. Rất cảm ơn – rabudde

Các vấn đề liên quan