前言
最近一段時間稍微有點忙,而且技術學習方面也挺困惑的,所以也就沒有更新太多新的內容,目前考慮的是,再重新梳理下多線程方面的技術點,扎實下這塊的技術,因此從明天開始,我就要重新開始學習多線程這塊的內容,這次會盡可能把juc
包下的內容都覆蓋到,同時也希望比之前更完整更詳細。
至於今天,我打算整理下最近做的幾件比較有意思的事。一個是在前幾天安裝的manjaro
上搭建samba
文件服務,實現個人文件網盤,不過我這個目前只能在局域網使用,搭建家庭媒體中心的話就很方便;
另一個是shell
腳本統計數據。這一塊是由於最近需要幫產品統計一個數據,但是由於公司數據存儲是分庫存儲的所以一條sql
是沒法直接查的,畢竟還跨數據庫實例,所以我就寫了一個shell
腳本,實現數據統計排序,原本考慮用python
實現的,但是堡壘機安裝的是python 2.7
,mysql
的驅動庫安裝不上(需要更新pip
,但是我沒權限),所以最后我放棄了。
今天我們先看第一件事——實現網盤自由。
網盤自由
其實,關於文件共享是有多種解決方案的,除了我們熟知的各類網盤,比如百度雲盤、阿里雲盤、堅果雲等雲盤外,還有很多技術層面的解決方案,包括FTP
、Samba
、WebDAV
等多種方式的,下面是關於這幾種協議的簡單介紹(來源網絡):
FTP
屬於古老的文件共享方式了,因為安全性,現代瀏覽器最新已默認不能打開FTP協議。SFTP
在FTP
基礎上增加了加密,在Linux
上安裝OpenSSH
后可以直接用SFTP
協議傳輸。使用SFTP
臨時傳送文件還可以,但做文件共享,性能不高,速度較慢。
Samba
是Linux
下CIFS
協議的實現,優勢在於對於小白使用簡章,和Windows
系統文件共享訪問一樣,不需要安裝第三方軟件,而且移動端也有大量APP
支持。蘋果手機文件APP
中添加網絡存儲用的就是這種方式。Windows
下文件共享使用445
端口,且不能更改。445
端口常常受黑客關照,在廣域網上大多運營封掉了訪端口,所以這種文件共享只適合在內網使用。
WebDAV
基於HTTP
協議的通信協議,在GET
、POST
、HEAD
等幾個HTTP
標准方法以外添加了一些新的方法,使應用程序可對Web Server
直接讀寫,並支持寫文件鎖定(Locking
)及解鎖(Unlock
),還可以支持文件的版本控制。因為基於HTTP
,在廣域網上共享文件有天然的優勢,移動端文件管理APP
也大多支持WebDAV
協議。使用HTTPS
還能保安全性。Apache
和Nginx
支持WebDAV
,可作為WebDAV
文件共享服務器軟件。也可以使用專門的WebDAV
軟件部署。
為什么采用samba
?原因很簡單,它安裝配置都很簡單,支持win
、android
和ios
等多平台,而且市面上很多軟件都支持(后面我們會分享)。但是它也有個缺點,就是共享端口固定且不能修改,安全性差,不過局域網使用就不用考慮這么多。
至於網盤,受空間和網速限制,動不動還要開會員,這一點就不是特別友好,而且有些文件還不適合存在網盤中,過不好過幾天看不了了。當然,如果你有自己的服務器,可以直接搞webDAV
,這就更接近網盤體驗了。
好了,廢話少說,我們直接開干吧!
下面我以manjaro
為例,其他linux
發行版類似,過幾天我把樹莓派拿回來了,可以再給各位小伙伴分享在樹莓派搭建個人服務器的相關內容,包括文件服務器搭建。
安裝samba服務及依賴
安裝依賴的方式都差不多,只需要替換成對應平台的軟件包管理工具即可
sudo pacman -S samba
配置
創建共享用戶
Samba
需要 Linux
賬戶才能使用 - 可以使用已有賬戶或 創建新用戶。
雖然用戶名可以和 Linux
系統共享,Samba
使用單獨的密碼管理,將下面的 syske
替換為選擇的 Samba
用戶:
# syske 就是你要和linux共享的用戶名
smbpasswd -a syske
執行完上面的命令之后,我就可以在samba
的文件共享中使用這個用戶了,密碼就是這個用戶的linux
登錄密碼
根據服務器角色差異,可能需要修改已有的文件權限和屬性
要讓新創建的用戶僅能訪問 Samba
遠程文件服務器,可以禁用其它登錄選項
-
禁用
shell
usermod --shell /usr/bin/nologin --lock syske
-
禁用
SSH
:需要在/etc/ssh/sshd_config
中配置,具體可以自行搜索
更改用戶密碼
如果你想修改samba
用戶的密碼,可以通過如下命令進行修改,只需要按照提示輸入密碼即可
sudo smbpasswd syske
創建samba用戶組
這一步可以直接省略,非必須,有需要的小伙伴可以看下:
groupadd sambashare
groupdd
是linux
的用戶組新增命令,后面直接更用戶組名稱即可。
修改配置文件
安裝完成后會在/etc
文件夾下生成samba
文件夾,在配置之前我們先將初始化配置文件備份下:
mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
接着我們開始編輯smb.conf
文件,將其中原有的配置文件全部注釋掉,並加入如下配置內容:
[global]
#所要加入的工作組或者域
workgroup = WORKGROUP
#用於在 Windows 網上鄰居上顯示的主機名
netbios name = Manjaro
#定義安全級別
security = user
#將所有samba系統主機所不能正確識別的用戶都映射成guest用戶
map to guest = bad user
#是否開啟dns代理服務
dns proxy = no
這里設置的是samba
的全局設置信息,注釋已經夠詳細了,所以不再贅述
然后再寫入系統配置分享文件夾地配置:
[syskeshare]
# 我們要分享的文件夾路徑
path = /run/media/syske/D88047AA80478DC6
# 是否允許瀏覽
browseable = yes
# 是否可寫
writable = yes
# 是否允許匿名(guest)訪問,等同於public
guest ok = yes
# 客戶端上傳文件的默認權限
create mask = 0777
# 客戶端創建目錄的默認權限
# 注意共享文件在系統本地的權限不能低於以上設置的共享權限。
directory mask = 0777
這里主要設置我們要分享的文件夾的相關信息,首先syskeshare
是節點名,也是我們客戶端訪問的共享路徑,節點下面配置了文件夾的路徑以及權限信息,需要注意的是,這里設置的文件夾權限只能小於等於分享路徑文件夾的權限,否則不一定能正常寫入文件。
啟動測試
完成以上配置之后,從理論上講,我們只需要啟動samba
服務就可以訪問我們共享的文件夾了。啟動的方式也很簡單:
# 啟動
sudo systemctl start smb nmb
# 重啟
sudo systemctl restart smb nmb
# 停止
sudo systemctl stop smb nmb
啟動成功后,我們可以先通過如下命令測試下效果:
如上顯示則表明,samba
服務已經啟動成功,且可以正常訪問,下面我們看下各個平台具體如何訪問:
安卓
安卓端可以通過es
文件管理器進行訪問,操作也很方便:
這款軟件不知道ios
平台是否有,不過應該可以找到替代軟件。這一款軟件的不好之處是有廣告,優點是可以自動掃描,操作上便捷很多,安卓平台還有另一款軟件Solid Explorer
,是一款國外的軟件,只能通過google play
下載,需要的小伙伴可以私信,我放幾張截圖:
這款軟件的優勢是輕量,而且沒廣告,雲盤這塊支持的也挺多的,我是今天剛發現的。
win平台
win
平台操作就簡單多了,直接點擊文件管理器中的網絡,如果能找到你的共享機器,直接雙擊即可,如果有密碼輸入密碼即可,如果找不多,直接輸入分享地址訪問:
\\192.168.0.101\syskeshare
其中192.168.0.101
是我manjaro
的主機地址,syskeshare
是我的分享名稱,顯示效果如下:
由於手里沒有mac
系統的設備,感興趣的小伙伴自己嘗試下,應該也不會太難。
結語
用linux
搭建samba
服務器算是一個比較簡單,但是特別實用的技能,有了這個技能加持之后,你再也不用擔心文件共享問題了,最爽的是視頻資源、音樂資源、圖片資源再也不用手動復制了,只需要接入samba
服務器就可以在家里的任何可以連到wifi
的地方訪問他們,豈不是美滋滋!
另外關於家庭媒體中心這塊也有一款特別好用的軟件,而且它本身也支持samba
資源,后面我們可以專門分享下,教大家如何用樹莓派搭建家庭媒體中心,好了,今天就到這里吧,各位小伙伴 ,晚安吧!