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 "-"?
linux
networking
unix
nfs
qdot
sumber
sumber
/var/tmp/foo-bar localhost(all_squash,async,no_subtree_check)
in/etc/exports
.nfs-kernel-server
, tetapi bukan Linuxnfs-user-server
.Jawaban:
Berdasarkan teks ini, saya menganggap Anda berada di Linux?
Ada dua implementasi server NFS yang berbeda pada sistem Linux:
Silakan coba berlari
ps -ef | grep nfsd
untuk melihat mana yang Anda miliki.Saya pikir pengguna NFS akan muncul sebagai
nfsd
atauunfsd
, 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
atau
(Referensi: nfs-utils-1.1.2,
xgettok
dalamsupport/nfs/xio.c
)Dengan NFS pengguna, spasi tidak diizinkan dalam nama ekspor, tetapi tanda minus (
-
) seharusnya tidak mengharuskan pelarian, misalnya(Referensi: nfs-user-server-2.2beta47,
filt_getc
inauth_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
sumber
Apakah melarikan diri dengan backslash bekerja?
sumber
Sudahkah Anda mencoba melarikan diri
\-
? Saya bukan ahli NFS - tetapi patut dicoba. Ini berfungsi dalam banyak situasi lain ...sumber
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?
sumber
Ini sedikit meretas tetapi Anda dapat membuat bind mounts ke setiap direktori dan mengekspor tujuan bind mounts. Sesuatu seperti:
Saya tidak yakin jika memiliki banyak mount akan memperlambat akses file.
sumber