เอ็กซ์พอร์ตพา ธ 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 หรืออยู่ในเครื่องหมายคำพูดคู่ก็ยังคงหมายถึงชื่อโดยไม่ต้อง "-"

ความคิดใด ๆ ฉันมีไดเรกทอรีจำนวนมากทุกรูปแบบ

  • / ปริมาตร / buildsystem-S3C2440
  • / ปริมาตร / buildsystem-tao3530

และฉันต้องการให้พวกเขาทั้งหมดพร้อมใช้งานในฐานะการส่งออก nfs ย่อมาจากการแทนที่ "-" ด้วย "_" ทุกที่ในสคริปต์สามารถทำได้ด้วย "-" หรือไม่?


ฉันไม่มีคำตอบที่ชัดเจน แต่สิ่งนี้ได้ปรากฏในหัวของฉัน: คุณมีผู้จัดการ nfs บางประเภท (อาจเป็นแอพ cheesy X) ที่จะสร้างไฟล์ส่งออกให้คุณหรือไม่? อาจลองใช้กับเครื่องทดสอบเพื่อตรวจสอบไวยากรณ์แล้วนำไปใช้กับคำถาม แค่คิด ...
英律功

ฉันไม่รู้สิ่งที่เป็นประโยชน์เช่นนี้ ...
qdot

1
คุณมี nfs-utils รุ่นใด
Kjetil Jørgensen

การทำงานสำหรับฉันภายใต้ Debian Lenny (NFS Utils 1.1.2 เคอร์เนล 2.6.26) ที่มีใน/var/tmp/foo-bar localhost(all_squash,async,no_subtree_check) /etc/exports
Gilles 'ดังนั้นหยุดความชั่วร้าย'

คุณใช้ระบบอะไร ฉันเดาว่าคุณทับขวาสามารถหลบหนีโดยใช้ลินุกซ์แต่ไม่ลินุกซ์nfs-kernel-server nfs-user-server
Mikel

คำตอบ:


3

จากข้อความนี้ฉันคิดว่าคุณใช้ Linux?

หากชื่อการส่งออกมีช่องว่างควรเสนอราคาโดยใช้เครื่องหมายคำพูดคู่ คุณยังสามารถระบุช่องว่างหรืออักขระผิดปกติอื่น ๆ ในชื่อการส่งออกโดยใช้เครื่องหมายทับขวาตามด้วยรหัสอักขระเป็นตัวเลขฐานแปดสามตัว

มีการปรับใช้เซิร์ฟเวอร์ NFS สองแบบบนระบบ Linux:

  • ผู้ใช้ NFS
  • เคอร์เนล NFS

โปรดลองเรียกใช้ps -ef | grep nfsdเพื่อดูว่าคุณมี

ผมคิดว่า NFS ผู้ใช้จะปรากฏเป็นnfsdหรือunfsdและเคอร์เนล NFS [nfsd]จะปรากฏเป็น
(โปรดทราบว่ามีวิธีหนึ่งคือวงเล็บเหลี่ยม แต่อื่น ๆ ไม่ได้)

ด้วยเคอร์เนล NFS คุณควรใช้เครื่องหมายอัญประกาศคู่หรือ escal octal เช่น

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

หรือ

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

(การอ้างอิง: nfs-utils-1.1.2 xgettokในsupport/nfs/xio.c)

ด้วยผู้ใช้ NFS ไม่อนุญาตให้ใช้ช่องว่างในชื่อการส่งออก แต่เครื่องหมายลบ ( -) ไม่ควรต้องมีการหลบหนีเช่น

/path/to/mount-point <options>

(การอ้างอิง: nfs-user-server-2.2beta47, filt_getcในauth_init.c)

หากคุณไม่สามารถไปถึงจุดต่ำสุดได้ฉันขอแนะนำให้เปลี่ยนจากผู้ใช้ NFS เป็นเคอร์เนล NFS เพื่อให้คุณสามารถใช้ quoting หรือ octal escapes ได้

บน Debian และ Ubuntu:

  • apt-get install kernel-nfs-server

บน Red Hat และ Fedora:

  • yum install nfs-utils

1

การหลบหนีด้วยแบ็กสแลชทำงานได้หรือไม่

  • / ปริมาตร / buildsystem \ -s3c2440
  • / ปริมาตร / buildsystem \ -tao3530

ใช่ฉันลองแล้ว ไม่ไม่ทำงาน :(
qdot

1

\-คุณได้ลองก็หนีออกมาด้วย ฉันไม่ใช่ผู้เชี่ยวชาญของ NFS แต่ควรลองใช้ดู มันใช้งานได้ในหลาย ๆ สถานการณ์ ...


ใช่ฉันลองแล้ว ไม่มันไม่ทำงาน
qdot

ที่นี่ - เครื่องมือ NFS แบบกราฟิกที่ต้องพิจารณา: dailypackage.fedorabook.com/index.php?/archives/ ......
Danny Staple

1

ตกลงอาจเป็นวิธีแก้ปัญหาอื่น เป็นปัญหาเล็กน้อย แต่ทำไมไม่สร้างไดเรกทอรีที่มีลิงก์สัญลักษณ์ไปยังไดเรกทอรีก่อนหน้านี้ทั้งหมด (สคริปต์หรือห่วงในขณะที่สามารถใช้สำหรับสิ่งนี้) หากชื่อของลิงก์สัญลักษณ์ไม่มีขีดใด ๆ คุณควรจะสามารถส่งออกได้ วิธีนี้ตามที่คุณต้องการคุณไม่จำเป็นต้องแก้ไขชื่อของไดเรกทอรีจริงของคุณ

ฉันไม่แน่ใจว่ามันจะใช้งานได้หรือเปล่า


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.