首先,我们知道基于档案的几种服务:ftp,sftp,这两种服务都是档案传输服务,偏重于互联网传输,并不是实时互访。通常,我们需要在远端和本地 同时操作同一个目录,如:在 Windows 下使用各种强大的 IDE 编辑程式码,在 Linux 下编译和执行该程式码。如果在 Windows 下编写好程式码再拷贝到 Linux 下编译,这样修改时很费事,直接在 Linux 下修改,还要同步回 Windows,相当费事。当然有人会说,所有的工作都在 Linux 下搞 定,VI 、 Linux 命令列足够强大,没有需要使用 Windows 系统的理由,本文的重点不在讨论命令列熟练程度与工作效率的问题。
怎样像访问本地档案系统一样访问远端的档案呢?如果远端的系统与本地系统是不同型别的,又该如何做呢。
我们知道,在 Windows 系统之间,可以通过共享目录的方式,让远端系统直接访问。其实这里是 Windows 提供一种远端档案系统机制,NAS 协 议的一种——CIFS 协议。如果是 Linux 系统呢,同样有另外一种 NAS 协议——NFS 协议来实现远端访问。那么这两种 NAS 协议能否互通呢?答案是否 定的。虽然二者不能互通,但是,在 Linux 系统上面已经有了 CIFS 协议的服务端和客户端的实现,这样,无论是 Linux 给 Windows 共享还是 Windows 给 Linux 共享都可以借助这些已有的实现来做到了。
相反的,Windows 上面有没有 NFS 的客户端或者服务端呢?也有,但是不常用,这里就不详细介绍了。
这里主要围绕著 Linux 上面使用 CIFS 协议来阐述如何实现两个系统之间的跨档案系统,跨操作系统共享。按照上面的描述,有两种方式来实现共享。 Linux 分别作为 CIFS 的服务端和客户端。下面分别就这两种方式来说明操作步骤和简单的原理介绍:
一、 Samba 站群软件实现共享 Linux 档案系统给 Windows 使用者
Samba 站群软件被誉为 10 大最有价值的开源站群软件之第五位。其获取方式非常容易,配置使用也非常简单。下面以 fedora 系统为例,先看一下本地是否 已经安装好 samba,如果/etc/init.d/smb 档案存在,则说明已经安装好了 samba 站群软件,否则使用如下命令安装:
yum install samba
安装完成后,修改配置档案,开启:/etc/samba/smb.conf,在档案末尾加上如下配置:
[root]
comment = root
path = /
creat mask = 64
writeable = yes
browseable = yes
valid users = root
这个配置的意思是,建立一个名为 root 的共享,将根档案目录 “/” 共享给使用者。允许登入的使用者名称是 root 。
然后给 samba 系统新增 root 使用者,使用如下命令:
smbpasswd -a root
按照提示设定 root 使用者的密码。
重新启动 samba 服务。
service smb restart
检查 smb 程序是否已经执行:
root 1787 0.0 0.4 33068 4784 ? Ss 21:51 0:00 smbd
root 1788 0.0 0.2 33068 2580 ? S 21:51 0:00 _ smbd
在需要访问该 Linux 系统的 Windows 客户机上面,开启 Windows 的资源管理器,在位址列输入:192.168.1.110
会发现,提示有一个共享 root,双击访问时,提示输入使用者名称和密码,输入此前配置的 root 使用者和密码即可访问。这里就是 Samba 站群软件实现了 CIFS 的服务端,Windows 资源管理作为客户端访问远端的共享档案系统。为了更为方便的使用该档案系统,还可以将该共享对映成一个本地的碟符,让 Windows 上面的各种工具像使用本地磁碟一样使用该目录。所有在 Windows 上面对该共享做的操作都会实时同步到 Linux 系统上面。
二、 Linux 访问 Windows 的共享
上面的借助于 Samba 的方式是大家常用的。还有一种,Windows 系统天然就是一个 CIFS 的服务端和客户端,既然 Windows 系统可以给 Windows 系统共享目录,那么 Linux 系统能否访问这些共享呢?答案是肯定的,由于有强大的 VFS 支撑,Linux 支援挂载和访问各种档案系统。 mount 工具支援挂在 CIFS 甚至 NTFS 的档案系统。如果是 Windows 本机上面的 Linux 虚拟机器,那么可以直接通过虚拟机器管理站群软件,如 Vmware 直接共享本地的磁碟分割槽给 Linux 系统,Linux 系统根据 Windows 的磁碟分割槽的档案系统型别挂载即可。这里不详述该方案。
进入本段的正题,首先我们需要共享一个 Windows 的目录:
下面以 Windows XP 为例,Windows 7 未做验证,应该类似。在共享之前,首先需要确保 Windows 系统的 server 服务处于启动状态,如下图:
选择需要共享的目录,右键,属性,选择 “共享” 页,如下图:
选择在互联网上共享这个资料夹,并指定共享名。根据需要选择是否允许远端使用者修改该资料夹。这样这个资料夹就被共享给远端访问了。
在 Linux 系统下挂载该共享:
[root@f2 ~]# mount -t cifs -o username=“Test” //192.168.1.100/sourcecode /root/sourcecode
Password for Test@//192.168.1.100/sourcecode:
按照要求输入指定使用者的密码即可。
此时,Windows 的共享 sourcecode 目录就已经挂载到 Linux 系统上面了,Linux 系统可以像访问本地目录一样访问该目录了。
这种方法应该是更好的访问方式,因为一般而言,我们操作的档案和工作空间都是在 Windows 上面的,只有少数时候,需要在 Linux 上面进行编 译,除错。但是用起来稍显麻烦。注意,此前曾遇到过 Windows 系统与虚拟出来的 Linux 系统之间无法传输资料的问题,原因是 Windows 系统的防 火墙未开启。
原文连结:http://shentar.me/windows%E4%B8%8Elinux%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E4%BA%92%E8%AE%BF%E7%9A%84%E5%87%A0%E7%A7%8D%E6%96%B9%E6%B3%95/