Ekspor jalur NFS yang mengandung "-" (tanda hubung)

10

Saya sedikit kesulitan dengan file ekspor NFS.

Secara khusus, saya tidak dapat menemukan cara untuk mengekspor direktori yang berisi "-" pada nama path.

Manual (ekspor (5)) menyatakan:

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.

Itu kemudian menyatakan:

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.

Sayangnya, itu bukan masalahnya. Khususnya, jika pathname berisi "-", baik kata demi kata, atau dengan \ 055 atau dilampirkan dalam tanda kutip ganda, itu masih merujuk pada nama tanpa "-"

Ada ide? Saya memiliki sejumlah besar direktori, semuanya dalam bentuk

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

Dan saya lebih suka memiliki semuanya tersedia sebagai ekspor nfs. Pendeknya mengganti "-" dengan "_" di mana saja dalam skrip, dapatkah itu dilakukan dengan "-"?

qdot
sumber
Saya tidak memiliki jawaban yang jelas, tetapi ini benar-benar muncul di kepala saya: Apakah Anda memiliki semacam nfs manager yang tersedia (mungkin beberapa aplikasi X cheesy) yang akan menghasilkan file ekspor untuk Anda? Mungkin mencobanya di mesin uji hanya untuk memeriksa sintaks dan kemudian menerapkan pada kotak yang dimaksud. Hanya pemikiran ...
英 律 功
Saya tidak tahu utilitas seperti itu ...
qdot
1
Versi nfs-utils apa yang Anda miliki?
Kjetil Jørgensen
Bekerja untuk saya di bawah Debian lenny (NFS utils 1.1.2, kernel 2.6.26) dengan /var/tmp/foo-bar localhost(all_squash,async,no_subtree_check)in /etc/exports.
Gilles 'SO- stop being evil'
Sistem apa yang Anda pakai? Dugaan saya adalah Anda dapat menggunakan backslash untuk melarikan diri menggunakan Linux nfs-kernel-server, tetapi bukan Linux nfs-user-server.
Mikel

Jawaban:

3

Berdasarkan teks ini, saya menganggap Anda berada di Linux?

Jika nama ekspor berisi spasi, itu harus dikutip dengan menggunakan tanda kutip ganda. Anda juga dapat menentukan spasi atau karakter tidak biasa lainnya dalam nama ekspor menggunakan backslash diikuti oleh kode karakter sebagai tiga digit oktal.

Ada dua implementasi server NFS yang berbeda pada sistem Linux:

  • pengguna NFS
  • kernel NFS

Silakan coba berlari ps -ef | grep nfsduntuk melihat mana yang Anda miliki.

Saya pikir pengguna NFS akan muncul sebagai nfsdatau unfsd, dan kernel NFS akan muncul sebagai [nfsd].
(Perhatikan bagaimana yang satu memiliki tanda kurung siku, tetapi yang lain tidak.)

Dengan kernel NFS Anda harus menggunakan tanda kutip ganda atau lolos oktal, misalnya

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

atau

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

(Referensi: nfs-utils-1.1.2, xgettokdalam support/nfs/xio.c)

Dengan NFS pengguna, spasi tidak diizinkan dalam nama ekspor, tetapi tanda minus ( -) seharusnya tidak mengharuskan pelarian, misalnya

/path/to/mount-point <options>

(Referensi: nfs-user-server-2.2beta47, filt_getcin auth_init.c)

Jika Anda tidak bisa mendapatkan bagian bawahnya, saya akan menyarankan beralih dari pengguna NFS ke kernel NFS sehingga Anda dapat menggunakan kutipan atau oktal lolos.

Di Debian dan Ubuntu:

  • apt-get install kernel-nfs-server

Di Red Hat dan Fedora:

  • yum install nfs-utils
Mikel
sumber
1

Apakah melarikan diri dengan backslash bekerja?

  • / vol / buildsystem \ -s3c2440
  • / vol / buildsystem \ -tao3530
nick3216
sumber
Ya, saya mencobanya. Tidak, ini tidak berfungsi :(
qdot
1

Sudahkah Anda mencoba melarikan diri \-? Saya bukan ahli NFS - tetapi patut dicoba. Ini berfungsi dalam banyak situasi lain ...

Danny Staple
sumber
Ya, saya mencobanya. Tidak, ini tidak berhasil.
qdot
Di sini - alat NFS grafis untuk dipertimbangkan: dailypackage.fedorabook.com/index.php?/archives/…
Danny Staple
1

Oke, mungkin solusi lain. Agak merepotkan, tetapi mengapa tidak membuat direktori yang berisi tautan simbolik ke semua direktori sebelumnya (skrip atau loop sementara dapat digunakan untuk ini). Jika nama tautan simbolis tidak mengandung tanda hubung apa pun, Anda harus dapat mengekspornya. Dengan cara ini, seperti yang Anda inginkan, Anda tidak perlu mengubah nama direktori asli Anda.

Saya tidak yakin apakah itu akan berhasil, tapi mungkin patut dicoba, bukan?

Christian Vincenot
sumber
1

Ini sedikit meretas tetapi Anda dapat membuat bind mounts ke setiap direktori dan mengekspor tujuan bind mounts. Sesuatu seperti:

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

Saya tidak yakin jika memiliki banyak mount akan memperlambat akses file.

Sinar Matahari Paskah
sumber