Bagaimana cara me-mount direktori lokal?

16

Di linux, salah satu hal hebat yang dapat Anda lakukan (untuk pengembang, khususnya) adalah memasang folder dan secara lokal mengikatnya ke folder lain di sistem.

Ini memiliki keunggulan dibandingkan symlink karena alat fakta seperti Git tidak mendeteksinya sebagai tipe node yang berbeda, dan Anda tidak perlu menghapus konten asli. Ketika Anda selesai, Anda bisa meng-unmount secara sederhana dan Anda dibiarkan dengan konten sistem file yang asli.

Namun, mount -bindatau mount.localsepertinya tidak ada pada Mac (pada OS X 10.10.2, Yosemite).

Bagaimana Anda melakukannya?

Qix - MONICA DISEBUTKAN
sumber

Jawaban:

10

Seperti yang disebutkan oleh pengguna lain di StackOverflow , Anda bisa menggunakan NFS mount do to this. Namun, itu membutuhkan sedikit pengaturan satu kali.

Pertama, Anda perlu mengatur /etc/exportsfile (jika Anda belum melakukannya).

$ sudo tee -a /etc/exports <<< "/ -alldirs -mapall=$USER localhost"

Kedua, Anda harus memulai layanan rpc dan nfsd .

$ sudo launchctl start com.apple.rpcbind
$ sudo nfsd start

Dari sana, beri NFSd sedikit untuk bangun dan sarapan, dan Anda harus baik untuk mount:

$ sudo mount localhost:/path/to/target ./mnt

Untuk mengembalikan konten asli, lakukan saja

$ sudo umount ./mnt
Qix - MONICA DISEBUTKAN
sumber
Saya mencoba memasang drive usb exfat saya$ sudo mount localhost:/Volumes/Aren/Movies /Users/me/Movies/
Necktwi
mount_nfs: can't mount /Volumes/Aren/Movies from localhost onto /Users/me/Movies: No such file or directory
Necktwi
Ini bekerja dengan baik Jika saya melakukannya dengan cara lain!
Necktwi
Jika Anda mendapatkan "Tidak ada file atau direktori", cobalah membuat folder untuk dipasang ke tujuan terlebih dahulu. Jika Anda mendapatkan kesalahan "Permission Denied", coba "sudo nfsd restart" (bagi saya, nfsd sudah dimulai, jadi saya perlu memulai kembali untuk mengambil jalur ekspor baru, saya pikir)
Nick
1
@ Jayee, saya OP. Itu bekerja untuk saya pada saat itu, kesalahan apa yang dimiliki Git? Sudahkah Anda cdmengedit lalu kembali sebelum menggunakan Git? Shell cenderung bekerja dengan deskriptor file yang terikat pada inode, bukan jalur string penuh - jadi jika Anda memasang dan tetap berada di direktori "sama", shell akan tetap beroperasi menggunakan direktori yang mendasarinya alih-alih yang terpasang. Tidak ada alasan Git melihat sesuatu sebagai mount - pemasangan tidak berfungsi seperti itu. Untuk semua maksud dan tujuan itu adalah sama jenis filesystem.
Qix - MONICA DISEBUTKAN
9

Ada opsi lain - bindf . Ini mengharuskan Anda untuk menginstal FUSE tetapi memberikan alternatif untuk menggunakan NFS.

Anda mungkin perlu mengkompilasi dari sumber tetapi saya melihatnya juga tersedia di MacPorts .

mjturner
sumber
2
Homebrew: Instal osxfuse , lalu brew install homebrew/fuse/bindfs(Diuji pada El Capitan; tidak perlu sudosebelumnya bindfsuntuk tunggangan berorientasi pengguna)
dhchdhd
Kerugian dari sekering adalah bahwa ia tidak mendukung acara inotify. Jika sumber diperbarui, saat App mengawasi pembaruan di tujuan, ia tidak akan menerima pembaruan.
diimdeep
Juga agak sulit bagi saya ketika menyusun hal-hal di dalam volume bindfs. Secara khusus saya secara konsisten mendapatkan "terlalu banyak file terbuka" untuk satu proyek tertentu di Xcode tanpa alasan yang jelas. Jika saya hanya menyalin konten tanpa pemasangan, itu membangun dengan baik.
Grishka