“-”(대시)가 포함 된 NFS 경로 내보내기


10

NFS 내보내기 파일이 조금 있습니다.

특히 경로 이름에 "-"가 포함 된 디렉토리를 내보내는 방법을 찾을 수 없습니다.

수동 (수출 (5)) 상태 :

Also, each line may have one or more specifications for default options 
after the path name, in the form of a dash ("-") followed by an option 
list. The option list is used for all subsequent exports on that line 
only.

그런 다음 상태를 나타냅니다.

If an export name contains spaces it should be quoted using double quotes. 
You can also specify spaces or other unusual character in the export name 
using a backslash followed by the character code as three octal digits.

불행히도, 그렇지 않습니다. 특히, 경로 이름에 "-"가 그대로 또는 \ 055로 포함되거나 큰 따옴표로 묶인 경우에도 여전히 "-"가없는 이름을 나타냅니다.

어떤 아이디어? 나는 많은 수의 디렉토리를 가지고 있으며 모든 형태

  • / vol / buildsystem-s3c2440
  • / vol / buildsystem-tao3530

그리고 나는 그것들을 모두 nfs 내보내기로 사용할 수 있기를 원합니다. 스크립트의 어느 곳에서나 "-"를 "_"로 바꾸지 않으면 "-"로 수행 할 수 있습니까?


나는 확실한 대답을 얻지 못했지만 이것은 내 머리에 들렸다. 내보내기 파일을 생성하는 일종의 nfs 관리자 (아마도 치즈가 많은 X 앱)가 있습니까? 어쩌면 테스트 머신에서 구문을 확인한 다음 해당 상자에 구현하십시오. 그냥 생각 ...
英 律 功

나는 그런 유틸리티를 모른다 ...
qdot

1
어떤 버전의 nfs-utils가 있습니까?
Kjetil Jørgensen

에서 데비안 레니 (NFS utils 1.1.2, 커널 2.6.26) /var/tmp/foo-bar localhost(all_squash,async,no_subtree_check)에서 나를 위해 작동합니다 /etc/exports.
Gilles 'SO- 악의를 멈춰라'

어떤 시스템을 사용하고 있습니까? 내 생각 엔 당신이 백 슬래시 리눅스를 사용하여 탈출 할 수 있다는 것입니다 nfs-kernel-server리눅스를,하지만 nfs-user-server.
Mikel

답변:


3

이 텍스트를 바탕으로, 당신이 리눅스에 있다고 가정합니까?

내보내기 이름에 공백이 포함되어 있으면 큰 따옴표를 사용하여 인용해야합니다. 백 슬래시와 문자 코드를 3 개의 8 진수로 사용하여 내보내기 이름에 공백 또는 기타 특수 문자를 지정할 수도 있습니다.

Linux 시스템에는 두 가지 다른 NFS 서버 구현이 있습니다.

  • 사용자 NFS
  • 커널 NFS

ps -ef | grep nfsd당신이 가지고있는 것을보고 실행 하십시오.

사용자 NFS는 nfsd또는로 나타나고 unfsd커널 NFS는로 나타납니다 [nfsd].
(하나는 대괄호가 있지만 다른 하나는 그렇지 않습니다.)

커널 NFS에서는 큰 따옴표 또는 8 진 이스케이프를 사용해야합니다. 예 :

"/path/to/mount-point" <options>

또는

/path/to/mount\055point <options>

(참조 : NFS-유틸-1.1.2 xgettok에서 support/nfs/xio.c)

사용자 NFS를 사용하면 내보내기 이름에 공백을 사용할 수 없지만 빼기 기호 ( -)는 이스케이프 처리를 요구하지 않아야합니다.

/path/to/mount-point <options>

(참조 : NFS 유저 서버 2.2beta47, filt_getc내의 auth_init.c)

그것의 바닥에 도달 할 수 없다면 인용 또는 8 진 이스케이프를 사용할 수 있도록 사용자 NFS에서 커널 NFS로 전환하는 것이 좋습니다.

데비안과 우분투에서 :

  • apt-get install kernel-nfs-server

Red Hat과 Fedora에서 :

  • yum install nfs-utils

1

백 슬래시로 탈출 할 수 있습니까?

  • / vol / buildsystem \ -s3c2440
  • / vol / buildsystem \ -tao3530

네, 시도했습니다. 아니오, 이것은 작동하지 않습니다 :(
qdot


1

좋아, 다른 해결 방법 일 수도 있습니다. 약간 번거롭지 만 이전의 모든 디렉토리에 대한 심볼릭 링크가 포함 된 디렉토리를 작성하지 않는 이유는 무엇입니까 (스크립트 또는 while 루프를 사용할 수 있음). 심볼릭 링크의 이름에 대시가 포함되어 있지 않으면 내보낼 수 있어야합니다. 이 방법으로 원하는대로 실제 디렉토리의 이름을 수정할 필요가 없습니다.

나는 그것이 효과가 있을지 확신하지 못하지만, 기회를 줄만한 가치가 있습니까?


1

이것은 약간의 해킹이지만 각 디렉토리에 바인드 마운트를 작성하고 바인드 마운트 대상을 내보낼 수 있습니다. 다음과 같은 것 :

mount -o bind /vol/buildsystem-s3c2440 /vol/buildsystems3c2440
mount -o bind /vol/buildsystem-tao3530 /vol/buildsystemtao3530

그래도 많은 마운트가 파일 액세스 속도를 늦출 지 확실하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.