掛載遠端文件夾的最佳方法
我有兩個執行 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 權限工具集(chown
和chgrp
)chmod
。
SSHFS 很棒。它可以使用FUSE將遠端目錄掛載到本地目錄中。下面的命令
#
用於指示命令以 身份執行root
,而$
指示以普通使用者身份執行。因為需要 FUSE 軟體,所以首先確保它可用並且正在執行。下面的
lsmod
andgrep
命令之一可以顯示軟體是否已載入並準備好使用。任一命令的結果表明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/fuse
了0600
權限, ownerroot
, group ownerfuse
。我需要讓fuse組使用該設備並將我的普通使用者帳戶添加到該組,如下所示。# usermod -aG fuse $your_regular_user_account # chmod 0660 /dev/fuse
如果需要新的組成員身份,請註銷並再次登錄以成為該組的成員。
接下來,
ssh
按如下方式在兩側安裝。# apt-get install ssh
此答案是為 Debian 編寫的,但至少在 Ubuntu 18.x 上
openssh-client
,fuse
, 和其他一些軟體包是 Ubuntusshfs
軟體包的一部分。該sshfs
軟體在客戶端是必需的,但如果需要,它可以安裝在兩側。軟體包依賴項之一是fuse
,但安裝程序會跳過已安裝的軟體。# Ubuntu 18.x: # apt-get install sshfs
有
fuse
和ssh
可用,並有使用設備的權限,/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 驅動器號。