감사해요sshfs
마술처럼 원격 서버에서 홈 디렉토리를 마운트할 수 있습니다.
sshfs user@server:/home/user ~/remote
낙관적으로는 로컬 네트워크를 설정해야 한다고 생각합니다.inotify
-훅on ( 마운트 ~/remote/logFile
에서 ) 로컬 프로그램이 원격 로그 변경 사항에 반응할 수 있도록 합니다.sshfs
cd ~/remote
touch logFile # create remote file
inotifywait logFile & # set up local inotify-hook
ssh user@server -x touch /home/user/logFile # touch file from remote
아무 일도하지. 파일을 로컬에 저장 inotifywait
하지 않으면 소리가 나지 않습니다. touch
명명된 파이프에 쓰는 것도 실패합니다.
왜 이런거야?
이 격차를 어떻게 메울 수 있습니까?
나할 수 있다원격으로 실행하여 inotifywait
파일 시스템을 수정하면 직렬화 정책이 변경되고 로컬에 대한 연결이 유지되지만기본적으로 SSHFS의 재구현. 추상화를 완전히 제거합니다.
답변1
SSHFS 파일 시스템은 다음을 기반으로 구축되었습니다.SFTP규약. SFTP는 "클래식" 방식으로 파일을 조작하기 위한 도구만 제공합니다. 클라이언트가 서버에 요청(디렉토리 나열, 파일 업로드 등)을 하면 서버가 응답합니다. 서버가 클라이언트에게 어떤 일이 발생했음을 자발적으로 알리는 것을 허용하는 프로토콜에는 아무것도 없습니다.
이로 인해 SSHFS 내에서 inotify와 같은 기능을 제공하는 것이 불가능해졌습니다. 독점 확장으로 SSHFS를 확장하거나 완전한 SSH 연결로 보완하는 것이 가능하지만 SSHFS에 대한 그러한 확장은 알지 못합니다.
같은 이유로 명명된 파이프는 SSHFS 위에 구현할 수 없습니다. 전통적인 네트워크 파일 시스템인 NFS에는 시스템 전체에 걸쳐 명명된 파이프를 지원하는 기능도 없습니다. 네트워크 파일 시스템에서 명명된 파이프는 설치된 각 컴퓨터(서버 제외)에 독립적인 통신 지점을 만듭니다.
팸(SGI IRIX의 inotify 아날로그가 Linux로 포팅되었습니다.) 네트워크를 통해 알림을 보낼 수 있는 데몬을 제공합니다. Linux는 inotify 출현 이후 FAM을 거의 사용하지 않으므로 FAM을 실행하는 것이 자체 앱별 알림 시스템을 롤링하는 것보다 쉬운지는 모르겠습니다. FAM 및 NFS에 대한 네트워크 링크를 보호하려면 일부 포트 전달을 설정하거나 SSH를 통해 VPN을 설정해야 합니다.
직접 배포하기로 선택한 경우 클라이언트에 셸 액세스를 제공하는 데 동의한다고 가정하면 클라이언트를 대신하여 inotify 모니터를 실행하는 것은 매우 쉽습니다. 클라이언트가 SSH 연결을 열고 inotifywait
서버에서 명령을 실행하여 구문 분석합니다. 클라이언트에서 출력합니다. 당신은 할 수기본 연결 설정동일한 클라이언트에서 동일한 서버로의 여러 연결을 더 빠르게 엽니다.