因為喜歡尋找便宜VPS和要經常更換伺服器的問題,所以網站搬家就成了家常便飯的事情了。對於大型的網站數據,最好直接在機房與機房之間進行數據傳遞,常用的三個命令工具Rsync,SCP,Tar,可以幫助我們快速解決VPS遠端網站搬家與數據同步。

不過,多虧小Z部落格提醒,我們除了使用指令工具來實現資料傳輸,還可以使用硬碟掛載的方式來解決資料遷移的問題。利用NFS,即網路檔案系統(Network File System)分散式檔案系統協議,我們可以將不同的VPS主機的目錄實現遠端掛載,這樣拷貝複製檔案就方便多了。

GlusterFS是Scale-Out儲存解決方案Gluster的核心,它是一個開源的分散式檔案系統,具有強大的橫向擴充能力,透過擴充能夠支援數PB儲存容量和處理數千客戶端。 GlusterFS一般用作企業級的檔案儲存方案,但我們也可以利用GlusterFS在不同的VPS主機之間共用儲存。

最後一個就是samba了。 SAMBA 最初發展的主要目就是要用來溝通Windows 與 Unix Like 這兩個不同的操作平台之間的共享,Samba配置簡單,操作直觀。 NFS遠端掛載、GlusterFS共享儲存和samba共享伺服器也可以用於檔案協作、伺服器鏡像等,總之可擴充性非常強。

Linux共享資料夾目錄三種方法-NFS遠端掛載,GlusterFS共享儲存和samba共享伺服器

本文就來簡單分享NFS遠端掛載、GlusterFS共享儲存和samba共享伺服器操作方法,更多的關於雲端儲存和站長工具,還可以了解:

  1. Nextcloud個人雲端儲存絕佳選擇:一鍵自動安裝方法和雲端磁碟使用體驗
  2. Lsyncd搭建同步鏡像-用Lsyncd實現本地和遠端伺服器之間即時同步
  3. Linux VPS掛載Google Drive與Dropbox-實作VPS主機資料同步備份

一、NFS遠端掛載

示範環境,服務端A:172.104.184.98,客戶端B:107.161.18.176,如果你沒有VPS,可以看看我自己用過的VPS主機清單:VPS主機排行榜單。

相關的命令操作如下:


#在两台VPS上安装执行安装
sudo apt-get install -y  nfs-kernel-server
#在A上创建文件夹
mkdir -p /media/wzfou/asus
#在A上编辑并添加授权B读写
vim /etc/exports
/media/wzfou/asus 107.161.18.176(rw,no_root_squash,async)
#在A上重启
sudo systemctl restart nfs-server.service

#在B上创建文件夹
sudo mkdir -p /home/wzfou/share
#在B上将刚刚创建的文件夹挂载到A上共享文件夹
sudo mount -t nfs 172.104.184.98:/media/wzfou/asus /home/wzfou/share

如果沒有任何提示,就表示掛載成功了。

現在A和B上共享檔案就已經實現掛載並即時同步了,往共享資料夾上傳或刪除檔案就可以看到雙向同步了。

二、GlusterFS共享存儲

2.1  GlusterFS Repository

Debian:

sudo apt-get install -y lsb-release
sudo apt-get install -y apt-transport-https

Add the public key for GlusterFS repository.

wget -O - http://download.gluster.org/pub/gluster/glusterfs/LATEST/rsa.pub | sudo apt-key add -
echo deb https://download.gluster.org/pub/gluster/glusterfs/LATEST/Debian/$(lsb_release -sc)/apt $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/gluster.list

Ubuntu 16.04 / 14.04:

sudo apt-get install -y software-properties-common
sudo add-apt-repository ppa:gluster/glusterfs-3.8

2.2  安裝 GlusterFS

更新 repository cache.

sudo apt-get update

安裝 GlusterFS package.

sudo apt-get install -y glusterfs-server

啟動glusterfs-server service .

sudo service glusterfs-server start

確認 glusterfs service 是否執行.

sudo service glusterfs-server status

以下指令在服務端執行,新增客戶端節點(107.161.18.176).

raj@gluster1:~$ sudo gluster peer probe 107.161.18.176
peer probe: success.

確認狀態.

sudo gluster peer status

列出節點.

sudo gluster pool list

配置 Firewall。停用防火牆或將客戶端的IP新增至允許範圍內.

sudo iptables -I INPUT -p all -s <ip-address> -j ACCEPT

安裝成功如下:

2.3  建立共享儲存卷

現在我們就需要建立好了共用儲存卷,首先是在服務端上進行以下操作:


#创建文件夹
sudo mkdir -p /data/gluster/gvol0
#创建共享卷volume,并分别挂载服务端(139.162.175.85)和客户端(107.161.18.176)
sudo gluster volume create gvol0 replica 2 139.162.175.85:/data/gluster/gvol0 107.161.18.176:/data/gluster/gvol0 force
#启用卷
sudo gluster volume start gvol0
#查看卷
sudo gluster volume info gvol0

現在到客戶端(107.161.18.176)掛載服務端(139.162.175.85),指令如下:


#安装客户端
apt-get install -y glusterfs-client
#创建文件夹
mkdir -p /mnt/glusterfs
#挂载服务端(139.162.175.85)
mount -t glusterfs 139.162.175.85:/gvol0 /mnt/glusterfs

#开机自动挂载
vim  /etc/fstab
139.162.175.85:/gvol0 /mnt/glusterfs glusterfs  defaults,_netdev 0 0

執行指令:df -hP /mnt/glusterfs,你就可以看到掛載成功了。

使用df指令也能看出來。

現在你就可以實現不同的VPS主機共享儲存了,新增或是修改檔案都可以看到同步。

三、samba實作Linux與Windows共享

上面說到了兩種共享方法適用於Linux之間,那麼Windows與Linux如何分享呢?目前比較流行的方式就是透過一個跨平台網路檔案共享協定:SMB/CIFS。 Windows原生的支援SMB/CIFS,Linux也透過開源的軟體Samba實作了SMB/CIFS協定。

3.1  安裝samba

sudo apt-get install samba

3.2  建立共享目錄

// 创建的目录即之后能够在Windows主机上直接访问的目录。
// 例如:在用户wzfou的主目录下新建share文件夹为共享目录
mkdir /home/wzfou/smbshare
// 由于Windows下的文件夹需可读可写可执行,需更改权限为777
sudo chmod 777 /home/wzfou/smbshare

3.3  修改samba設定檔

// 修改 /etc/samba/smb.conf
sudo vim /etc/samba/smb.conf
// 在smb.conf文件最后加上以下内容

[share]
path = /home/wzfou/smbshare
public = yes
writable = yes
valid users = wzfou
create mask = 0644
force create mode = 0644
directory mask = 0755
force directory mode = 0755
available = yes

關於smb.conf說明如下:

(1) [share]表示共享資料夾的別名,之後將直接使用這個別名。

(2) force create modeforce directory mode的設定是因為Windows下與Linux下檔案和資料夾的預設權限不同造成的,Windows下新建的檔案是可執行的,必須強制設定其檔案權限。

(3) valid users 設定為你目前的Linux使用者名,例如我的是wzfou,因為第一次開啟共用資料夾時,需要驗證權限。

3.4  設定登入密碼

// 新建/etc/samba/smbpasswd文件
sudo touch /etc/samba/smbpasswd
// 根据3.3设置的valid users,设置用户密码
// wzfou 替换为你在3.3中设置的用户名
sudo smbpasswd -a wzfou
//输入两次密码后,会提示 Added user wzfou. 表示设置成功
// 若用户名非当前登录系统的用户名,可能会提示Failed

3.5  啟動samba伺服器

sudo /etc/init.d/samba restart

3.6  測試是否共享成功

sudo apt-get install smbclient 
smbclient -L //xx.xx.xx.xx/share
//还记得吗?share为3.3中设置的共享文件夹的别名
//如果共享成功,将要求输入之前设置的密码


3.7 在windows和Linux上使用samba

Windows 資源管理器->映射網路磁碟機。輸入格式是: ip位址設定的名稱,然後輸入帳號密碼就連線成功。

如果是Windows 7可能出現無法連接Samba的情況,你可以採取以下方法解決:

1.修改本機安全性原則:執行secpol.msc開啟「本機安全性原則」窗體,依序點開啟「本機原則」-」「安全選項”,修改「網路安全: LAN 管理器驗證等級」的值為“發送LM 和NTLM – 如果已協商,則使用NTLMv2 會話安全性”,一路確定即可。

2.修改登錄:修改HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa下的LmCompatibilityLevel的值為1。

Linux的話,在Thunar中透過 smb://<samba-server-IP-address>/share 這個位址來存取。

四、總結

Linux共享資料夾方法中,NFS遠端掛載方法是最方便的,特別適合在不同的VPS主機伺服器之間遷移網站數據,一旦遠端掛載成功了我們就可以像本地複製數據一樣方便了,這個比三個指令工具Rsync,SCP,Tar-快速解決VPS遠端網站搬家與資料同步還要方便。

GlusterFS建立共享磁碟區的方法特別適合叢集伺服器,GlusterFS叢集檔案系統也可以套用到企業級的Docker分散式儲存。 samba則實現了Linux與Windows之間的文件共享,之前我們分享了樹莓派Raspberry Pi安裝NextCloud教程-自建家庭私有雲局域網共享,實際上我們也可以samba實現樹莓派與其它設備共享。

發表評論