1. 程式人生 > >使用sshfs掛載遠端伺服器目錄

使用sshfs掛載遠端伺服器目錄

點選訪問原文
您還可以加入全棧技術交流群(QQ群號:254842154)


伺服器日誌檢視,是開發人員和伺服器運維人員在工作中經常會遇到的一件事情,只有一臺伺服器時,比較好辦,直接登入伺服器使用tail -f file-path 命令就可以實時檢視到日誌檔案的輸出。當有負載的需要,伺服器多了之後,就會比較麻煩,為了查詢一個問題的日誌可能需要登入多臺伺服器。今天給大家介紹一種藉助sshfs,非常簡單的日誌檔案掛載方案,可以方便大家檢視伺服器日誌檔案。

sshfs介紹

sshfs是基於fuse構建的ssh檔案系統客戶端程式,通過它遠端主機的配置無需作任何改變,就可以透過SSH協議來掛載遠端檔案系統了,非常方便及安全。

sshfs的安裝,在centOS中的安裝命令如下:

yum -y install sshfs

掛載

sshfs的遠端檔案掛載,需要結合ssh免密碼登入一起實施。假設現在有A、B、C三臺伺服器的日誌,需要掛載到D伺服器。首先需要將D伺服器的公鑰寫入A、B、C三臺伺服器。配置方法參見我之前的文章

把遠端伺服器的 /mydata/logs/目錄下的所有檔案,掛載到D伺服器,在D伺服器的/mydata/logs/目錄下為每個伺服器建一個目錄。(ip_address_A代表A伺服器的ip地址,需要自行替換)

//把A伺服器的 /mydata/logs/ 目錄 掛載到 D伺服器的 /mydata/logs/A/ 目錄

sshfs 
[email protected]
_address_A:/mydata/logs/ /mydata/logs/A/

其他兩臺伺服器的掛載方法一樣。掛載成功後,可以使用 mount命令檢視掛載情況:

mount -l

可以看到掛載的情況:

[email protected]_address_A:/mydata/logs/on /mydata/logs/A type fuse.sshfs (rw,nosuid,nodev)

[email protected]_address_B:/mydata/logs/on /mydata/logs/B type fuse.sshfs (rw,nosuid,nodev)

[email protected]
_address_C:/mydata/logs/on /mydata/logs/C type fuse.sshfs (rw,nosuid,nodev)

也可以使用df -h命令檢視磁碟的掛載情況。另外,想要開機自動掛載目錄,可以編輯/etc/fstab檔案,加入以下幾行:

sshfs#root@ip_address_A:/mydata/logs/ /mydata/logs/A fuse defaults,auto,allow_other 0 0

sshfs#root@ip_address_B:/mydata/logs/ /mydata/logs/B fuse defaults,auto,allow_other 0 0

sshfs#root@ip_address_C:/mydata/logs/ /mydata/logs/C fuse defaults,auto,allow_other 0 0 

其中,allow_other引數代表該設定對其他使用者也生效。也必須先把ssh自動登入配置好了,讓root使用者能夠使用root身份登入遠端主機。配置方法參見我之前的文章

掛載成功後,就可以在伺服器D直接檢視所有伺服器的日誌了,在D伺服器的/mydata/logs/目錄輸入以下命令。(假設A、B、C三臺伺服器的/mydata/logs/目錄下都有log.txt這個檔案)

tail -f */log.txt

日誌的輸出中,會標出日誌是在哪臺伺服器的,例如:

==> A/log.txt <==
get log message from A

假如只想檢視日誌中包含關鍵字 a b c的日誌,可以這樣檢視

 tail -f */log.txt | grep 'a b c'

日誌的輸出會有一定的延時。
需要注意的是,取消掛載時,不要直接刪除掛載目錄,請使用以下命令取消掛載:

fusermount -u /mydata/logs/A

或者直接使用umount命令取消掛載。



作者:hellojammyPlus
連結:https://www.jianshu.com/p/cdf5652a88d3
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。