首先我们知道几种基于文件的服务:ftp、sftp,都是文件传输服务,侧重于网络传输,不是实时互访。通常,我们需要在远程和本地对同一个目录进行操作,例如:使用各种功能强大的IDE在Windows下编辑代码,在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客户端或服务器?也有,但是不常用,这里就不详细介绍了。这里主要围绕CIFS协议在Linux上的使用来讲解如何实现两个系统之间的跨文件系统、跨操作系统共享。根据上面的描述,实现共享的方式有两种。Linux分别作为CIFS的服务器和客户端。下面用两种方法来说明操作步骤和简单原理:1、Samba软件实现Linux文件系统共享给Windows用户。Samba软件在10大最有价值的开源软件中排名第五。它的获取方式非常简单,配置和使用也非常简单。我们以fedora系统为例。首先检查本地是否安装了samba。如果/etc/init.d/smb文件存在,说明samba软件已经安装。否则使用以下命令安装:yuminstallsamba安装完成后,修改Configuration文件,打开:/etc/samba/smb.conf,在文件末尾添加如下配置:[root]comment=rootpath=/creatmask=64writeable=yesbrowseable=yesvalidusers=root这个配置的意思是创建一个名为Rootsharing的文件,将根文件目录“/”共享给用户。允许登录的用户名是root。然后将root用户添加到samba系统中,使用以下命令:smbpasswd-aroot根据提示设置root用户的密码。重新启动桑巴服务。servicesmbrestart检查smb进程是否已经运行:root17870.00.4330684784?ss21:510:00smbdroot17880.00.2330682580?S21:510:00\_smbd在需要访问Linux系统的Windows客户端,打开Windows资源管理器,在地址栏输入:\\192.168.1.110,你会发现有共享根。双击访问时,会提示输入用户名和密码。输入之前配置的root用户和密码进行访问。这里是实现CIFS服务器的Samba软件,Windows资源管理作为客户端访问远程共享文件系统。为了更方便的使用这个文件系统,你也可以把这个共享映射到一个本地盘符,这样Windows上的各种工具就可以像使用本地磁盘一样使用这个目录。Windows上对共享的所有操作都会实时同步到Linux系统。2、Linux访问Windows共享上面Samba的使用方法是大家常用的。另一种方式是Windows系统自然是CIFS服务器和客户端。既然Windows系统可以和Windows系统共享目录,那么Linux系统能否访问这些共享呢?答案是肯定的,因为强大的VFS支持,Linux支持挂载和访问各种文件系统。挂载工具支持挂载在CIFS甚至NTFS上的文件系统。如果是Windows机器上的Linux虚拟机,可以直接通过虚拟机管理软件,如Vmware,将本地磁盘分区共享给Linux系统,Linux系统可以根据本机的文件系统类型进行挂载Windows磁盘分区。这里不详细介绍该方案。进入本段正题,首先我们需要分享一个Windows目录:以下以WindowsXP为例,Windows7未验证,应该类似。分享前,首先需要确保Windows系统的服务器服务处于启动状态,如下图:选择要分享的目录,右键,属性,选择“分享”页面,如图下图中:选择在网络上共享此文件夹,并指定共享名称。根据需要选择是否允许远程用户修改此文件夹。此文件夹将共享以供远程访问。Linux系统下挂载共享:[root@f2~]#mount-tcifs-ousername="Test"//192.168.1.100/sourcecode/root/sourcecodePasswordforTest@//192.168.1.100/sourcecode:根据需要输入指定的用户密码就足够了。至此,Windows的共享源代码目录已经挂载到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/
