从http://man7.org/linux/man-pages/man2/mount.2.html
mount() 附加由 source 指定的文件系统(通常是指设备的路径名,但也可以是目录或文件的路径名,或者是虚拟字符串) 到目标中路径名指定的位置(目录或文件)。
我测试了一下,其中 test.ext4 是一个 ext4 图像文件,mnt 只是一个普通的普通文件。
在任何事情发生之前
xtricman@archlinux ~ ls mnt test.ext4 -ali
1093586 -rw-r--r-- 1 xtricman users 0 2月 27 10:13 mnt
1085615 -rw-r--r-- 1 xtricman users 16777216 2月 24 19:35 test.ext4
将挂载目录绑定到文件,失败
xtricman@archlinux ~ sudo mount --bind /var mnt
mount: /home/xtricman/mnt: mount point is not a directory.
让mount
创建一个循环设备并(不是绑定)将设备安装到文件,失败
xtricman@archlinux ~ sudo mount test.ext4 mnt
mount: /home/xtricman/mnt: mount point is not a directory.
将挂载文件绑定到目录,失败
xtricman@archlinux ~ sudo mount --bind test.ext4 /mnt
mount: /mnt: mount(2) system call failed: 不是目录.
将挂载文件绑定到文件,成功!
xtricman@archlinux ~ sudo mount --bind test.ext4 mnt
xtricman@archlinux ~ ls -ali mnt test.ext4
1085615 -rw-r--r-- 1 xtricman users 16777216 2月 27 10:16 mnt
1085615 -rw-r--r-- 1 xtricman users 16777216 2月 27 10:16 test.ext4
xtricman@archlinux ~ sudo umount mnt
xtricman@archlinux ~ echo "Trash" > new_file
xtricman@archlinux ~ ls -ali new_file mnt test.ext4
1093586 -rw-r--r-- 1 xtricman users 0 2月 27 10:13 mnt
1093810 -rw-r--r-- 1 xtricman users 6 2月 27 10:58 new_file
1085615 -rw-r--r-- 1 xtricman users 16777216 2月 27 10:16 test.ext4
xtricman@archlinux ~ sudo mount --bind new_file mnt
xtricman@archlinux ~ ls -ali new_file mnt test.ext4
1093810 -rw-r--r-- 1 xtricman users 6 2月 27 10:58 mnt
1093810 -rw-r--r-- 1 xtricman users 6 2月 27 10:58 new_file
1085615 -rw-r--r-- 1 xtricman users 16777216 2月 27 10:16 test.ext4
那么,我们真的只能绑定挂载目录到目录、文件到文件吗? “虚拟字符串”是什么意思?作为源或目标的不存在的路径不会简单地失败吗?