Windows與Linux文件系統(tǒng)互訪的幾種方法
首先,我們知道基于文件的幾種服務(wù):ftp,sftp,這兩種服務(wù)都是文件傳輸服務(wù),偏重于網(wǎng)絡(luò)傳輸,并不是實(shí)時(shí)互訪。通常,我們需要在遠(yuǎn)程和本地同時(shí)操作同一個(gè)目錄,如:在Windows下使用各種強(qiáng)大的IDE編輯代碼,在Linux下編譯和運(yùn)行該代碼。如果在Windows下編寫好代碼再拷貝到Linux下編譯,這樣修改時(shí)很費(fèi)事,直接在Linux下修改,還要同步回Windows,相當(dāng)費(fèi)事。當(dāng)然有人會說,所有的工作都在Linux下搞定,VI、Linux命令行足夠強(qiáng)大,沒有需要使用Windows系統(tǒng)的理由,本文的重點(diǎn)不在討論命令行熟練程度與工作效率的問題。
怎樣像訪問本地文件系統(tǒng)一樣訪問遠(yuǎn)程的文件呢?如果遠(yuǎn)程的系統(tǒng)與本地系統(tǒng)是不同類型的,又該如何做呢。
我們知道,在Windows系統(tǒng)之間,可以通過共享目錄的方式,讓遠(yuǎn)程系統(tǒng)直接訪問。其實(shí)這里是Windows提供一種遠(yuǎn)程文件系統(tǒng)機(jī)制,NAS協(xié)議的一種——CIFS協(xié)議。如果是Linux系統(tǒng)呢,同樣有另外一種NAS協(xié)議——NFS協(xié)議來實(shí)現(xiàn)遠(yuǎn)程訪問。那么這兩種NAS協(xié)議能否互通呢?答案是否定的。雖然二者不能互通,但是,在Linux系統(tǒng)上面已經(jīng)有了CIFS協(xié)議的服務(wù)端和客戶端的實(shí)現(xiàn),這樣,無論是Linux給Windows共享還是Windows給Linux共享都可以借助這些已有的實(shí)現(xiàn)來做到了。
相反的,Windows上面有沒有NFS的客戶端或者服務(wù)端呢?也有,但是不常用,這里就不詳細(xì)介紹了。
這里主要圍繞著Linux上面使用CIFS協(xié)議來闡述如何實(shí)現(xiàn)兩個(gè)系統(tǒng)之間的跨文件系統(tǒng),跨操作系統(tǒng)共享。按照上面的描述,有兩種方式來實(shí)現(xiàn)共享。Linux分別作為CIFS的服務(wù)端和客戶端。下面分別就這兩種方式來說明操作步驟和簡單的原理介紹:
一、Samba軟件實(shí)現(xiàn)共享Linux文件系統(tǒng)給Windows用戶
Samba軟件被譽(yù)為10大最有價(jià)值的開源軟件之第五位。其獲取方式非常容易,配置使用也非常簡單。下面以fedora系統(tǒng)為例,先看一下本地是否已經(jīng)安裝好samba,如果/etc/init.d/smb 文件存在,則說明已經(jīng)安裝好了samba軟件,否則使用如下命令安裝:
- yum install samba
安裝完成后,修改配置文件,打開:/etc/samba/smb.conf,在文件末尾加上如下配置:
- [root]
- comment = root
- path = /
- creat mask = 64
- writeable = yes
- browseable = yes
- valid users = root
這個(gè)配置的意思是,創(chuàng)建一個(gè)名為root的共享,將根文件目錄“/”共享給用戶。允許登錄的用戶名是root。
然后給samba系統(tǒng)添加root用戶,使用如下命令:
- smbpasswd -a root
按照提示設(shè)置root用戶的密碼。
重新啟動samba服務(wù)。
- service smb restart
檢查smb進(jìn)程是否已經(jīng)運(yùn)行:
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系統(tǒng)的Windows客戶機(jī)上面,打開Windows的資源管理器,在地址欄輸入:\\192.168.1.110
會發(fā)現(xiàn),提示有一個(gè)共享root,雙擊訪問時(shí),提示輸入用戶名和密碼,輸入此前配置的root用戶和密碼即可訪問。這里就是Samba軟件實(shí)現(xiàn)了CIFS的服務(wù)端,Windows資源管理作為客戶端訪問遠(yuǎn)程的共享文件系統(tǒng)。為了更為方便的使用該文件系統(tǒng),還可以將該共享映射成一個(gè)本地的盤符,讓W(xué)indows上面的各種工具像使用本地磁盤一樣使用該目錄。所有在Windows上面對該共享做的操作都會實(shí)時(shí)同步到Linux系統(tǒng)上面。
二、Linux訪問Windows的共享
上面的借助于Samba的方式是大家常用的。還有一種,Windows系統(tǒng)天然就是一個(gè)CIFS的服務(wù)端和客戶端,既然Windows系統(tǒng)可以給Windows系統(tǒng)共享目錄,那么Linux系統(tǒng)能否訪問這些共享呢?答案是肯定的,由于有強(qiáng)大的VFS支撐,Linux支持掛載和訪問各種文件系統(tǒng)。mount工具支持掛在CIFS甚至NTFS的文件系統(tǒng)。如果是Windows本機(jī)上面的Linux虛擬機(jī),那么可以直接通過虛擬機(jī)管理軟件,如Vmware直接共享本地的磁盤分區(qū)給Linux系統(tǒng),Linux系統(tǒng)根據(jù)Windows的磁盤分區(qū)的文件系統(tǒng)類型掛載即可。這里不詳述該方案。
進(jìn)入本段的正題,首先我們需要共享一個(gè)Windows的目錄:
下面以Windows XP為例,Windows 7未做驗(yàn)證,應(yīng)該類似。在共享之前,首先需要確保Windows系統(tǒng)的server服務(wù)處于啟動狀態(tài),如下圖:
選擇需要共享的目錄,右鍵,屬性,選擇“共享”頁,如下圖:
選擇在網(wǎng)絡(luò)上共享這個(gè)文件夾,并指定共享名。根據(jù)需要選擇是否允許遠(yuǎn)程用戶修改該文件夾。這樣這個(gè)文件夾就被共享給遠(yuǎn)程訪問了。
在Linux系統(tǒng)下掛載該共享:
- [root@f2 ~]# mount -t cifs -o username="Test" //192.168.1.100/sourcecode /root/sourcecode
- Password for Test@//192.168.1.100/sourcecode:
按照要求輸入指定用戶的密碼即可。
此時(shí),Windows的共享sourcecode目錄就已經(jīng)掛載到Linux系統(tǒng)上面了,Linux系統(tǒng)可以像訪問本地目錄一樣訪問該目錄了。
這種方法應(yīng)該是更好的訪問方式,因?yàn)橐话愣?,我們操作的文件和工作空間都是在Windows上面的,只有少數(shù)時(shí)候,需要在Linux上面進(jìn)行編譯,調(diào)試。但是用起來稍顯麻煩。注意,此前曾遇到過Windows系統(tǒng)與虛擬出來的Linux系統(tǒng)之間無法傳輸數(shù)據(jù)的問題,原因是Windows系統(tǒng)的防火墻未開啟。