最近遇到程序代码在windows, 用到的数据在linux的问题,想着让linux把数据传到windows上,使用了Linux使用mount挂载Windows共享文件夹。
1.在windows主机上添加共享文件夹
共享设定完成后,客户端访问共享文件夹
Windows系统直接使用
\IP的方式访问即可
或者用net share,在windows上打开命令面板,查看共享
2.linux主机上利用 mount 命令进行挂载
例如,我想将windows的192.168.5.59的datasets目录挂载到linux的192.168.5.74的 /opt/xxx/data/adc_datasets 目录:
mkdir adc_datasets
sudo mount -t cifs -o username=xxx,password=xxxxxx,gid=1000,uid=1000,dir_mode=0777,file_mode=0777 //192.168.5.79/datasets /opt/xxx/data/adc_datasets
属性中的
- username、password是windows主机的登录账号和密码;
- gid、uid 是你想要让挂载属于哪个用户的gid和uid。至于这个gid和uid,你可以使用
id username
来获得,其中 username是linux上的用户名。比如说我的xxx,用户获得的gid和uid就是1000; - ** dir_mode、file_mode用于设定挂载目录的读写权限。** 如果不添加这两个参数,会在挂载成功之后在Linux中发现可以访问挂载目录,但不能修改。同时使用
ls -l adc_datasets
会发现adc_datasets目录所有者和用户组均是root,即使使用sudo chmod
和sudo chown
修改权限也提示权限不够。这样修改挂载以后,该gid用户可以正常读写目录adc_datasets了;
3.查看挂载在状态
使用
df -h
#或
mount
查看挂载是否成功
4. 卸载mount文件
如果想取消挂载,可以
# umount /xjl/share/data
5.可能遇到的错误
① 问题: umount 时提示错误 target is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))
解决办法: 你可以先切换到别的目录再试一次 , 原因也可能是其他进程可能在使用目录 , 可以先关闭使用该目录的进程 , 然后再 umount
命令如下:
(使用 fuser 需安装 psmisc # yum install psmisc)
# fuser -m /usr/local/bin/code
/usr/local/bin/code: 2806c
# ps aux | grep 2806
root 2806 0.0 0.5 116040 2836 pts/0 Ss 11:31 0:00 -bash
root 2925 0.0 0.1 112648 960 pts/0 S+ 14:36 0:00 grep --color=auto 2806
# kill -9 2806
# umount /usr/local/bin/code