Apa perbedaan antara:
ln -s /mnt/extra/home /
dan
mkdir /home
mount --rbind /mnt/extra/home /home
mount --rbind /mnt/extra/home
sudah menjadi direktori yang dipasang
Apa perbedaan antara:
ln -s /mnt/extra/home /
dan
mkdir /home
mount --rbind /mnt/extra/home /home
mount --rbind /mnt/extra/home
sudah menjadi direktori yang dipasang
Jawaban:
mount --rbind
membuat bind-mount rekursif; artinya, hierarki sistem file yang dipasang /mnt/extra/home
juga akan dapat diakses /home
.
Dalam praktiknya perbedaan utama antara ln -s
solusi dan mount --rbind
solusinya adalah bahwa with ln -s
/home
adalah symlink sedangkan dengan mount --rbind
itu adalah direktori; ini mempengaruhi alat-alat seperti find
, df
, test
/ [
dll
Juga, ln -s
akan gagal jika /home
ada, sementara mount --rbind
akan gagal jika tidak ada, atau itu bukan direktori kosong.
Komentar Mark di bawah ini juga penting: ln -s
memerlukan sistem file yang dapat ditulis untuk membuat symlink.
ln -s
memodifikasi sistem file, sementara mount --rbind
tidak. Ini berarti Anda dapat memasang direktori home pada root read-only (mis. CD boot), tetapi Anda tidak dapat membuat tautan simbolis di dalamnya.
--bind
dan --rbind
tidak peduli jika direktori target saya kosong, mereka hanya memasang "di atas" file apa pun yang ada, membuat mereka tidak dapat diakses
Dalam hal ini baik bind mount dan link simbolik akan bekerja sama untuk sebagian besar tujuan, tetapi mereka memiliki perbedaan penting.
Tautan simbolik sedikit lebih ringan. Anda dapat memiliki ratusan atau ribuan tautan simbolik tanpa menjadi masalah manajemen. Mereka duduk di sistem file daripada membutuhkan pengaturan tingkat sistem khusus.
Tautan simbolik dapat dicadangkan dan disalin dengan benar oleh alat-alat seperti cp dan rsync. Artinya, alat dapat mengenali dan menyalin tautan simbolik, memastikan bahwa pada restorasi di tempat lain tautan dikembalikan dan menunjuk ke tujuan yang benar. Semuanya akan berfungsi "dengan benar" secara default. Sebaliknya, ketika mencadangkan atau menyalin bind mount mount akan diperlakukan secara transparan, menyebabkan file itu sendiri akan disalin, yang dapat menyebabkan duplikasi jika Anda juga mendapatkan file yang sama di lokasi lain, dan memerlukan kerja ekstra jika Anda ingin untuk mereplikasi bind mount di tujuan.
Tautan simbolis dapat dimodifikasi atau dihapus oleh pengguna mana pun yang memiliki akses ke tautan, sehingga mudah membuatnya hanya pengguna super, atau membukanya untuk pengguna tertentu. Bind mounts hanya dapat diatur atau dimodifikasi oleh superuser.
Jika ini terdengar seperti dukungan tautan simbolik yang bersinar, itu benar. Mereka adalah cara yang lebih mudah menghubungkan antara file dan direktori. Anda akan menggunakan bind mounts hanya untuk situasi di mana tautan simbolis tidak berfungsi, yang mungkin lebih sedikit situasi daripada yang Anda pikirkan. Sebagian besar alat, termasuk cadangan dan alat sinkronisasi, memiliki perilaku default yang masuk akal untuk tautan simbolik dan penanganannya terhadap tautan simbolik dapat dikonfigurasi. Bind mounts transparan untuk alat-alat tersebut sehingga Anda kehilangan fleksibilitas itu dan mungkin kehilangan perilaku yang masuk akal (misalnya seperti yang disebutkan di atas, duplikasi direktori dalam cadangan Anda).
Satu lagi perbedaan adalah bahwa tautan simbolik adalah simbolis , yaitu hanya mereferensikan path - string karakter, dan itu ditereferensi setiap kali Anda membuka subdirektori / file di path target. Sebaliknya, mount --rbind
berperilaku lebih seperti tautan keras, yang jalurnya tidak dievaluasi ulang pada setiap dereferensi.
Ini membuat perbedaan dalam beberapa skenario seperti chroot
. Misalnya vsftpd chroot
ke direktori home dari akun pengguna FTP yang Anda masuki. Dengan demikian, jika Anda memasukkan symlink ke direktori itu, vsftpd
tidak akan dapat melakukan dereferensi, dan dengan demikian target tidak akan dapat diakses melalui FTP. Jika Anda melakukannya mount --rbind
, maka vsftpd
hanya akan mengakses subtree itu seolah-olah benar-benar ada di sana, sama seperti ketika Anda menghubungkan file di sana.
ln
membuat tautan; khususnya,ln -s
membuat tautan simbolik.mount
me-mount sistem file ke direktori. Mereka tidak memiliki kesamaan.