2012-06-14 2 views
5

상대적으로 간단한 문서 저장 공간을 만들고 싶지만 몇 가지 요구 사항이 있습니다. 필자의 생각은 스토리지에 즉시 도착할 때 파일이 별도의 도구/데몬에 의해 스캔되고 처리된다는 것입니다.파이프처럼 동작하는 Linux에서 디렉토리를 만드는 방법

(의사) DMS는 NFS 및 Samba를 통한 액세스를 제공해야합니다. 지금까지 보았 듯이 들어오는 파일을 일부 후크로 전달할 경우 파이프가 정상적으로 작동합니다. 그러나 파이프로 디렉터리를 만드는 방법이 있는지 궁금해했습니다. 나는 아직 명명 된 파이프 만 보았습니다.

이 디렉토리에서 들어오는 파일을 처리해야하는 프로세스는 MIME 형식 추측, CRC32 확인 (DB의 값과 비교)과 같은 작업을 수행해야하는 PHP 스크립트입니다.이 작업을 수행하는 방법에 대한 힌트가 있습니까?

EDIT : 다음 설명으로 조금 더 명확 해지기를 바랍니다. Samba와 NFS를 통해 "엔드 포인트"를 제공하는 방법을 찾고 있는데, 바이러스 검사 및 메타 프로세스에서 파일을 처리 할 수 ​​있습니다. 즉시 (그리고 마지막으로 저장).

+1

프로세스가 아닌 파일을 파이프합니다. 당신이 "파이프로 디렉토리를 만들자"는 의미가 무엇인지 모르겠다. – Attila

+0

네임드 파이프 (named는'cat [file]> named_pipe'로 데이터를 넣고 데이터를 가져 오는 데 사용할 수있다.)를 생각해 보았다. 어둠 속에서 처음 쐈어. 나는 파일을 배치 할 수있는 Samba와 NFS를 통해 "엔드 포인트"를 제공하는 방법을 찾고 있는데, 바이러스 스캐닝과 메타 프로세스에 의해 즉시 처리됩니다. 이것은 실시간 처리를 제공하고 거대한 메모리 소비를 피할 수 있어야합니다. – rabudde

+0

sendmail * 데몬을 생각 나게합니다. Mail은 sendmail이 처리하는/var/spool/mqueue 폴더에 들어가 결국 결국 이동 (또는 제거)됩니다. –

답변

9

FUSE을 사용하면 실제 파일 시스템 (백엔드 파일 시스템)의 상단에있는 중간 Linux 파일 시스템을 구현할 수 있으며 데이터를 최종적으로 백엔드에 기록하기 전에 필요한 검증이 필요합니다. 그런 다음 NFS/Samba를 통해 해당 파일 시스템을 제공합니다.

또 다른 가능성은 inotify API를 사용하여 일부 파일 시스템 트리에서 변경 사항을 알리고 필요한 작업을 수행하는 것입니다. 이 접근법의 문제점은 처리가 비동기적일 것이므로 맬웨어 파일이 검색되고 삭제 될 때까지 짧은 시간 동안 게시된다는 것입니다.

업데이트 : ClamFS 정확히 일치합니다.

+0

그게 재미있을 것 같아, 다음주에 도구를 시험해 볼게. 탱크. – rabudde

2

실제로 이 (가)으로 SMB 또는 NFS 공유가 필요합니까? 얇은 당신은 아마 더 쓰기/사용자 지정 서버 코드를 사용하여 더 나은 있습니다. SMB 및 NFS는 사용 사례와 상당히 다른 일반 파일을 전송하도록 설계되었습니다.

+1

사실 삼바와 nfs가 필요합니다. 다른 옵션은 없습니다. – rabudde

3

정확하게 이해했다면 최종 사용자에게 파일 시스템에 통합 된 매우 쉬운 인터페이스를 제공하는 것입니다. 운영 체제에서 일반 폴더가 표시되고 파일을 복사 및 이동하고 이름을 바꿉니다. 컴퓨터의 다른 폴더에서 수행중인 작업은 무엇이든 수행합니다.

그러나이 폴더는 백그라운드에서 실제 폴더가 아닙니다. 이 폴더의 작업을 완벽하게 제어하려고합니다. 파일을이 폴더에 복사하면 PHP 스크립트가이를 처리하기를 원합니다. 이 특별한 스크립트를 사용하여 새 폴더를 만들면 다른 PHP 스크립트가이를 처리합니다.

salva가 제안했듯이 파일 시스템 인터페이스를 직접 만드는 것은 좋은 해결책입니다. 그러나 그것은 쉽지도 쉽지도 않다. PHP를 백엔드로 언급 했으므로 더 높은 수준의 접근 방식을 원한다고 생각합니다.

문제점에는 클라이언트와 서버의 두 가지 측면이 있습니다. 클라이언트 측에서는 posix 시스템의 폴더 또는 Windows의 드라이브로 쉽게 마운트 할 수있는 파일 시스템이 필요합니다. 이것에 대한 많은 대안이 있습니다. Samba와 NFS는 여러분이 언급 한 두 가지입니다.

내가 이해 한대로 PHP로 서버 측을 처리하게 될 것입니다. 이것을 고려하여 Samba 나 NFS 대신 WebDav를 사용할 것을 제안합니다. 서버 측에서 구현하는 것이 훨씬 쉽습니다. 거의 모든 최신 운영 체제에서 사용할 수 있습니다.webdav 액세스를위한 브라우저 플러그인도 있으므로 클라이언트에 대해 여러 인터페이스를 매우 쉽게 제공 할 수 있습니다.

PHP를 사용하는 경우 서버 측에 sabredav이라는 오픈 소스 PHP 라이브러리가 있습니다. Google에 대한 빠른 검색만으로도 나는 a tutorial을 발견했습니다.

이 설정에서는 원하는 방식으로 파일을 처리 할 수 ​​있습니다. 이것은 nginx 또는 Apache와 같은 웹 서버를 PHP 측에서 시스템에 임베드하거나 서버에서 실행되는 서비스로 제공함으로써 단일 시스템 시스템이 될 수 있습니다.

나는 귀하의 질문을 올바르게 이해하고 이것이 귀하가 찾고자하는 해결책이라고 생각합니다.

업데이트 : 내가 제안한 것과 같은 다른 솔루션을 사용할 기회가 없다면 정말 삼바와 NFS 여야합니다. 두 프로토콜 모두 PHP로 구현하기에는 너무 많습니다. 그것은 큰 짐과 장기간의 두통이 될 것입니다.

그러나 일반적인 NFS/Samba 서버를 사용하고 응용 프로그램을 사용하여 백그라운드에서 파일 업데이트를 모니터 할 수 있습니다. 즉, 파일 태깅이나 바이러스 검색과 같이 제공하려는 특수 기능을 수용 할 수있는 대기 시간이 제공됩니다. 이를 구현하려면 시스템의 모든 파일과 폴더를 확인하고 수정 된/수정 된 파일에 대해 작업하십시오. 더 쉬운 방법은 모든 작업에 대한 로깅 메커니즘이 있고 해당 로그를 따르는 서버를 사용하는 것입니다. 클라이언트 시스템을 직접 인터페이싱하는 것보다 훨씬 낫습니다. 시스템을 올바르게 설계하면 파일 수정과 처리 사이의 대기 시간이 매우 큰 시스템에서도 매우 합리적입니다. 이를 위해 nas4free은 단일 시스템에서 많은 인터페이스를 제공하고 its features page에 따라 syslog 기능을 제공하므로 정말 좋은 솔루션이 될 수 있습니다.

+0

대단히 감사합니다. WebDAV는 매우 흥미로운 것으로 들립니다. 그러나이 솔루션을 우리 회사에서 구현해야하기 때문에 salvas 솔루션은보다 견고합니다 (메타 정보 검색과 같은 다른 포스트 후크가 포함될 수 없다는 점을 제외하고는). 나는 당신의 솔루션을 시험해 볼 것이지만 지금은 실험을위한 시간이별로 없기 때문에. 정말 고마워. – rabudde

관련 문제