原创文章,欢迎转载。转载请注明:转载自 祥的博客
原文链接:https://cloud.tencent.com/developer/article/1596458
文章目录
代码语言:txt复制- @[toc]1.原因情况说明将硬盘挂在到FTP服务器共享目录中3.1. 新建目录3.2. 挂载目录说明3.3. 取消挂载取消挂载可能出现的问题
1.原因
我有一个移动硬盘
,里面存放了许多电影,有时候插在做FTP服务器
的Linux电脑
上,想直接用iPad
去访问移动硬盘,所以必须要把移动硬盘挂在FTP服务器
上(不挂在Samba服务器
的原因是,我的FTP服务器
只读不可写,而Samba服务器
可读可写),所以就有了这个需求。
但是FTP服务器
不支持软连接,所以只能另寻他法了。
2. 情况说明
我的FTP服务器
的共享目录是 /srv/qfxFtp/
。
我的 移动硬盘
的挂在点目录是 /media/qfx/Qfx_01/
,具体情况如下所示:
root@qfx-HP-xw4600-Workstation:/srv/qfxFtp# df -h
文件系统 容量 已用 可用 已用% 挂载点
udev 3.9G 0 3.9G 0% /dev
... ...
/dev/sdc1 932G 847G 86G 91% /media/qfx/Qfx_01
root@qfx-HP-xw4600-Workstation:/srv/qfxFtp# ls -lF /media/qfx/Qfx_01/
总用量 32
drwxrwxrwx 1 qfx qfx 4096 10月 18 17:39 电视剧/
drwxrwxrwx 1 qfx qfx 28672 11月 2 22:50 电影/
3. 将硬盘挂在到FTP服务器共享目录中
3.1. 新建目录
在FTP服务器
共享目录中新建一个目录用于挂载移动硬盘的目录,这里这个目录我就直接起名为Q_rmDisk
。
root@qfx-HP-xw4600-Workstation:/srv/qfxFtp# mkdir Q_rmDisk
root@qfx-HP-xw4600-Workstation:/srv/qfxFtp# ls -lF
总用量 3360
...
drwxrwxrwx 2 root root 4096 2月 23 22:58 Q_rmDisk/
...
3.2. 挂载目录
代码语言:javascript复制mount --bind 源目录 目标目录
代码语言:javascript复制root@qfx-HP-xw4600-Workstation:/srv/qfxFtp# mount --bind /media/qfx/Qfx_01/ /srv/qfxFtp/Q_rmDisk/
root@qfx-HP-xw4600-Workstation:/srv/qfxFtp# cd Q_rmDisk/
root@qfx-HP-xw4600-Workstation:/srv/qfxFtp/Q_rmDisk# ls -lFa
总用量 40
drwxrwxrwx 1 qfx qfx 4096 11月 2 22:42 ./
drwxr-xr-x 6 qfxFtp qfxFtp 4096 2月 23 23:29 ../
drwxrwxrwx 1 qfx qfx 4096 10月 18 17:39 电视剧/
drwxrwxrwx 1 qfx qfx 28672 11月 2 22:50 电影/
说明
vsftpd
本身不支持软连接
,而在用FTP共享
的时候又不想移动文件位置,这是一个变通方案。
Linux
内核从2.4.0
开始支持把一部分文件系统挂载到文件系统中的其他位置,mount
命令的--bind
选项正好提供了这个功能。
可以把需要共享的文件夹media/qfx/Qfx_01/
挂载到FTP目录
中的一个子目录
上/srv/qfxFtp/Q_rmDisk/
。这个目录对于vsftpd
而言是一个正常文件系统的目录
,于是就可以被共享了
。当不需要共享目录时,直接umount
即可。
mount --bind
命令本身支持单个文件的挂载,可以把目标文件挂载到另外一个文件上,起到类似于软链接
的功能。同目录的挂载类似,这也是vsftpd
支持的。
3.3. 取消挂载
强行解除挂载
代码语言:javascript复制umount /srv/qfxFtp/Q_rmDisk/
取消挂载可能出现的问题
取消挂载/srv/qfxFtp/Q_rmDisk/
时出现 umount: /srv/qfxFtp/Q_rmDisk/: device is busy
原因是因为有程序在使用 /srv/qfxFtp/Q_rmDisk/
目录,我们可以使用 fuser
命令查看挂载目录被哪些进程占用:
fuser -kvm /srv/qfxFtp/Q_rmDisk/
然后 kill 就可以了。
代码语言:javascript复制命令:kill -9 pid
如果还是不行,还可以强行解除挂载
# 强行解除挂载
umount -l /srv/qfxFtp/Q_rmDisk/
OK!
以上,Enjoy~