mount --bind可将同一目录实时映射到多个路径,所有挂载点内容完全同步且不复制数据;需预先创建空目标目录,支持跨文件系统,重启后需通过/etc/fstab配置持久化。

可以用 mount --bind 把一个目录同时挂载到多个路径,所有挂载点内容实时一致,修改任一位置都会同步反映到其他位置。关键在于理解 bind 是 VFS 层的路径映射,不复制数据,也不依赖文件系统类型。
准备目标挂载点
每个挂载目标目录必须事先存在,且建议为空——否则原内容会被遮盖(像窗帘盖住窗户,卸载后就恢复)。例如要将 /var/www/site1 同时暴露在三个位置:
sudo mkdir -p /mnt/web-a /mnt/web-b /mnt/web-c- 确保这些目录当前为空或可接受被临时隐藏原有内容
执行绑定挂载
用 --bind 将源目录映射过去,支持跨文件系统,也支持源目录本身已是挂载点:
sudo mount --bind /var/www/site1 /mnt/web-asudo mount --bind /var/www/site1 /mnt/web-bsudo mount --bind /var/www/site1 /mnt/web-c
此时访问任意 /mnt/web-* 都等同于操作 /var/www/site1,写入、删除、权限变更全部实时同步。
开机自动挂载
重启后绑定会失效,需写入 /etc/fstab 持久化:
- 在
/etc/fstab末尾添加三行(每行格式统一):
/var/www/site1 /mnt/web-a none bind 0 0
/var/www/site1 /mnt/web-b none bind 0 0
/var/www/site1 /mnt/web-c none bind 0 0 - 执行
sudo mount -a测试配置是否有效,无报错即生效
注意事项与常见问题
非递归是默认行为:如果 /var/www/site1 下有子挂载(比如 tmpfs 或另一个 bind),它们不会自动出现在挂载点中。需要递归绑定请改用 --rbind;卸载失败通常因进程正在使用目标路径,可用 lsof +D /mnt/web-a 查找并终止相关进程;符号链接不能替代 bind,FTP 等服务常不识别软链,而 bind 在 vfs 层生效,兼容性更好。


















