Filesystems

掛載遠端文件夾的最佳方法

  • May 21, 2019

我有兩個執行 debian wheezy 的 RasberryPi,我想在電腦 B 上從電腦 A 掛載一個文件夾。

最好的(最有效的)方法是什麼?

我可以通過 SMB 來做到這一點,但那是針對 windows 的,我認為必須有更好的方法來跨 linux 共享。

您可以使用很多東西,其中流行的選項是:

  • NFS
  • 桑巴 / CIFS
  • SSHFS

通過易於設置,我認為它們必須按此順序排列(頂部:最簡單)

SSHFS

通過 FUSE,您可以通過 ssh 掛載遠端文件系統。我不會介紹如何,因為克里斯托弗已經很好地解釋了這一點。請注意,為了自動掛載文件,需要做更多的工作

桑巴

它將允許您使用 Windows 和 Unix 機器訪問遠端文件夾。如果這對您來說沒什麼大不了的,那麼您可能不會從中受益。但是,在 init 上自動掛載它很容易(只需在 處輸入適當的值/etc/fstab,包括username=<your-samba-username>,password=<your-samba-password>在選項列中。

NFS

它可以讓您僅通過 IP 進行身份驗證(無需使用者名 = 更快,僅在您的非敵對LAN 中使用)或通過 Kerberos 票證(對於兩個 Raspberries 來說太痛苦了;但在企業環境中很有用)。

由於它有核心模式支持,它會比 sshfs 執行得更快。此外,由於沒有執行加密,它會有更好的吞吐量,並且對於微型 Raspberry ARM,它可能會有所作為。

此外,簡單地設置您信任您的網路並不是那麼痛苦。您也有自動掛載支持/etc/fstab,並且您不必輸入敏感數據(例如使用者名或密碼),如果您的使用者名同步(相同/etc/passwd/etc/group文件),您可以使用通常的 POSIX 權限工具集(chownchgrpchmod

SSHFS 很棒。它可以使用FUSE將遠端目錄掛載到本地目錄中。下面的命令#用於指示命令以 身份執行root,而$指示以普通使用者身份執行。因為需要 FUSE 軟體,所以首先確保它可用並且正​​在執行。

下面的lsmodandgrep 命令之一可以顯示軟體是否已載入並準備好使用。任一命令的結果表明fuse可用。

# lsmod | grep fuse
$ grep -i fuse /lib/modules/$(uname -r)/modules.builtin

如果任一命令都沒有結果,請嘗試在不重新啟動的情況下載入核心模組modprobe並再次檢查。

# modprobe fuse
# lsmod fuse

如果載入模組失敗,請使用apt-get.

# apt-get install fuse

安裝後再次檢查。

# modprobe fuse
# lsmod fuse

在繼續之前,必須安裝並執行 FUSE。


檢查 的權限/dev/fuse。權限應為您的正常使用者帳戶提供讀寫訪問權限。如果您確定您的普通使用者帳戶已經對/dev/fuse.

# ls -l /dev/fuse

輸出可能類似於以下內容之一。

crw-rw-rw- 1 root root (all users can read/write)
crw------- 1 root fuse (only root can read/write)
crw-rw---- 1 root fuse (root and members of fuse group can read/write)

2013 年,我的 Debian 創建/dev/fuse0600權限, owner root, group owner fuse。我需要讓fuse組使用該設備並將我的普通使用者帳戶添加到該組,如下所示。

# usermod -aG fuse $your_regular_user_account
# chmod 0660 /dev/fuse

如果需要新的組成員身份,請註銷並再次登錄以成為該組的成員。


接下來,ssh按如下方式在兩側安裝。

# apt-get install ssh

此答案是為 Debian 編寫的,但至少在 Ubuntu 18.x 上openssh-clientfuse, 和其他一些軟體包是 Ubuntusshfs軟體包的一部分。該sshfs軟體在客戶端是必需的,但如果需要,它可以安裝在兩側。軟體包依賴項之一是fuse,但安裝程序會跳過已安裝的軟體。

# Ubuntu 18.x: 
# apt-get install sshfs

fusessh可用,並有使用設備的權限,/dev/fuse,為遠端文件系統創建掛載點;並且,按如下方式在本地安裝該遠端文件系統。

# mkdir /mnt/$directory_name
# chown $your_user:$group /mnt/$directory_name/
$ sshfs $remote_username@$remote_server_name: /mnt/$directory_name/

要掛載 home 以外的目錄,請在冒號後指定。

$ sshfs $remote_username@$remote_server_name:/remote/directory /mnt/$directory_name

要解除安裝,請使用fusermount.

fusermount -u /mnt/$directory_name

如果你有一台 Windows 機器,它也可以將 SSHFS 與win-sshfs一起使用。該軟體將“映射驅動器”與 SSHFS,以便您可以擁有包含遠端目錄的 Windows 驅動器號。

引用自:https://unix.stackexchange.com/questions/62677