如何將 Amazon S3 掛載為雲端檔案分享的磁碟機
在 Amazon S3 中,資料儲存於"儲存桶"中,這是資料儲存的基本單位。您可以透過 AWS 網頁介面設定使用者存取儲存桶的權限。 若您希望在無需網頁瀏覽器的情況下存取 AWS S3,可讓使用者透過 Linux、Windows 或 macOS 等作業系統的介面進行操作。
在命令列介面下存取 Amazon S3 雲端儲存空間,在多種情境下都相當便利。這對於沒有圖形使用者介面 (GUI) 的作業系統特別有用,尤其是運行於公有雲中的虛擬機器,以及用於自動化諸如複製檔案或建立 雲端資料備份.
請繼續閱讀,了解如何在 Linux 系統上將 Amazon S3 儲存桶掛載為檔案系統,以及在 Windows 和 macOS 系統上將其掛載為本地目錄的磁碟機,以便無需透過網頁瀏覽器即可使用 AWS S3。
如何在 Linux 中將 S3 儲存桶掛載為檔案系統
AWS 提供了一組 API,讓您能透過第三方應用程式操作 Amazon S3 儲存桶。 您甚至可以利用 Amazon API 自行開發應用程式,使其能與 S3 儲存桶進行互動。您可以建立一個應用程式,讓其透過 S3FS 將 S3 儲存桶掛載至相同目錄,如此一來,無論在哪台電腦上,都能使用相同的路徑上傳檔案至 Amazon S3 雲端儲存空間,並在各台電腦上提供相同的路徑。在本教學中,我們將使用 S3FS 將 Amazon S3 儲存桶掛載為磁碟機,並對應至 Linux 目錄。
S3FS 這是一款基於 FUSE(用戶空間檔案系統)的特殊解決方案,旨在將 S3 儲存桶掛載至 Linux 作業系統的目錄中,其運作方式類似於您掛載 CIFS/NFS 分享資料夾 作為網路磁碟機。S3FS 是一款免費且開源的解決方案。
在使用 S3FS 將 Amazon S3 雲端儲存掛載至您的 Linux 電腦後,您可以使用 cp, mv, rm,以及 Linux 控制台中的其他指令,以便像操作已掛載的本地或網路磁碟機那樣處理檔案。
讓我們以 Ubuntu 18.04 LTS 為例,將 Amazon S3 儲存桶掛載到 Linux 目錄中。本教學使用的是全新安裝的 Ubuntu 系統。您也可以將相同原則套用至較新版本。
- 更新儲存庫樹:
sudo apt-get update - 若您的 Linux 系統上已安裝任何現有的 FUSE,請在配置環境並安裝 fuse-f3fs 之前先移除該 FUSE,以避免衝突。由於我們使用的是全新安裝的 Ubuntu,因此我們不會執行
sudo apt-get remove fuse用於移除 FUSE 的指令。 - 安裝 s3fs 來自線上軟體儲存庫:
sudo apt-get install s3fs - 您需要產生 存取金鑰 ID 以及 秘密存取金鑰 在您的 AWS 帳戶(IAM 使用者)的網頁介面中。該 IAM 使用者必須擁有 S3 的完整存取權限。您可以使用此連結:
https://console.aws.amazon.com/iam/home?#/security_credentials註: 建議您以權限受限的普通使用者身分掛載 Amazon S3 儲存桶,並僅在產生金鑰時使用具備管理權限的使用者。
- 這些金鑰是存取 AWS API 所必需的。您必須具備管理員權限,才能產生 AWS 存取金鑰 ID 和 AWS 秘密存取金鑰。若您沒有足夠的權限,請請教您的系統管理員,由其為您產生 AWS 金鑰。管理員可以在 使用者 AWS 控制台中的 安全憑證 點擊 建立存取金鑰 按鈕。

- 在 建立存取金鑰 彈出視窗,點擊 下載 .csv 檔案 檔案 或點擊 顯示 根據 秘密存取金鑰 列名稱。這是您唯一能在 AWS 網頁介面中查看秘密存取金鑰的情況。請將 AWS 存取金鑰 ID 和秘密存取金鑰妥善保存。

- 您可以使用 Microsoft Office 365 Excel 等軟體開啟已下載的 CSV 檔案,該檔案內含存取金鑰。

- 返回 Ubuntu 終端機,建立一個配置檔,用以儲存透過 S3FS 掛載 S3 儲存桶所需的 AWS 存取金鑰和秘密存取金鑰。執行此操作的指令如下:
echo ACCESS_KEY:SECRET_ACCESS_KEY > PATH_TO_FILE變更 ACCESS_KEY 至您的 AWS 存取金鑰以及 SECRET_ACCESS_KEY 至您的秘密存取金鑰。
在此範例中,我們將把包含 AWS 金鑰的設定檔儲存於使用者的家目錄中。請務必將此金鑰檔案儲存於安全處所,確保未經授權者無法存取。
echo AKIA4SK3HPQ9FLWO8AMB:esrhLH4m1Da+3fJoU5xet1/ivsZ+Pay73BcSnzP > ~/.passwd-s3fs - 檢查金鑰是否已寫入檔案:
cat ~/.passwd-s3fs - 為該檔案設定正確的權限 passwd-s3fs 儲存存取金鑰的檔案:
chmod 600 ~/.passwd-s3fs - 建立將用作 S3 儲存桶掛載點的目錄(掛載點)。在此範例中,我們將在使用者主目錄中建立 Amazon 雲端磁碟 S3 目錄。
mkdir ~/s3-bucket您也可以使用現有的空目錄。
- 本操作指南中使用的資料桶名稱是 blog-bucket01. 該 text1.txt 檔案已上傳至我們的 blog-bucket01 在將儲存桶掛載至 Linux 目錄之前,請先在 Amazon S3 中。不建議使用點號 (.) 在儲存桶名稱中。

- 現在來掛載這個儲存桶。請使用以下指令設定儲存桶名稱、用作掛載點的目錄路徑,以及包含 AWS 存取金鑰和秘密存取金鑰的檔案。
s3fs bucket-name /path/to/mountpoint -o passwd_file=/path/passwd-s3fs在我們的情況下,用於掛載儲存桶的指令是:
s3fs blog-bucket01 ~/s3-bucket -o passwd_file=~/.passwd-s3fs - 儲存桶已安裝完成。我們可以執行指令來檢查我們的儲存桶(blog-bucket-01) 已安裝至 s3-bucket 目錄:
mount | grep bucketdf -h | grep bucket - 讓我們檢查該儲存桶已掛載的目錄內容:
ls -al ~/s3-bucket - 現在,您可以在硬碟上建立一個新檔案,並透過 Linux 終端機將該檔案複製到 S3 儲存桶中。
echo test2 > test2.txtcp test2.txt ~/s3-bucket/ - 重新整理顯示儲存桶中檔案的 AWS 網頁。您應該會看到新的 test2.txt 透過 Linux 控制台,利用已掛載至該儲存桶的目錄,將檔案複製到 S3 儲存桶中。

如何在 Linux 上將 S3 儲存桶設定為開機自動掛載
若要在您的 Linux 機器上使用 S3FS 設定 S3 儲存桶的自動掛載,您必須建立 passwd-s3fs 檔案位於 /etc/passwd-s3fs,這是預設位置。建立此檔案後,您就不需要使用 -o 密碼檔案 請手動輸入包含您的 AWS 金鑰的檔案位置。
- 建立 /etc/passwd-s3fs 檔案:
vim /etc/passwd-s3fs註: 如果 vim 您的 Linux 系統尚未安裝文字編輯器,請執行
apt-get install vim指令。 - 請依照上述說明,輸入您的 AWS 存取金鑰和秘密存取金鑰。
AKIA4SK3HPQ9FLWO8AMB:esrhLH4m1Da+3fJoU5xet1/ivsZ+Pay73BcSnzcP
此外,您也可以將金鑰儲存於 /etc/passwd-s3fs 使用以下指令建立檔案:
echo AKIA4SK3HPQ9FLWO8AMB:esrhLH4m1Da+3fJoU5xet1/ivsZ+Pay73BcSnzcP > /etc/passwd-s3fs - 為使用者設定所需的權限 /etc/passwd-s3fs 檔案:
chmod 640 /etc/passwd-s3fs - 編輯 FUSE 設定檔:
vim /etc/fuse.conf - 取消註解 user_allow_other 若您希望允許其他使用者(非 root 使用者)在您的 Linux 機器上使用 Amazon S3 進行檔案分享,請設定此字串。

- 開啟 /etc/fstab 使用文字編輯器:
vim /etc/fstab - 在檔案末尾加入以下這行:
s3fs#blog-bucket01 /home/user1/s3-bucket/ fuse _netdev,allow_other,url=https://s3.amazonaws.com 0 0
- 儲存已編輯的內容 /etc/fstab 儲存檔案並關閉文字編輯器。
註: 若要設定擁有者和群組,您可以使用
-o uid=1001 -o gid=1001 -o mp_umask=002參數(請根據您的設定調整使用者 ID、群組 ID 和 umask 的數值)。若要啟用快取,請使用-ouse_cache=/tmp參數(設定自訂目錄,而非 /tmp/ (如有需要)。若儲存桶最初未能成功掛載,您可以透過 retries 參數設定掛載該儲存桶的重試次數。例如,retries=5共達五次達陣。 - 重新啟動 Ubuntu 電腦,以檢查 S3 儲存桶是否會在系統開機時自動掛載:
init 6 - 請等待您的 Linux 電腦完成開機。
- 您可以執行指令來檢查 AWS S3 儲存桶是否已自動掛載至 s3-bucket Ubuntu 開機時的目錄。
mount | grep bucket
df -h | grep bucket
ls -al /home/user1/s3-bucket/
在我們的情況下,Amazon 雲端儲存服務 S3 已在 Ubuntu 開機時自動掛載至指定的 Linux 目錄(請參見下圖)。設定已成功套用。
S3FS 亦支援與 rsync 以及檔案快取以減少流量。
在 Windows 中掛載 Amazon S3 雲端儲存空間
你可以試試看 wins3fs,這是一種與 S3FS 相當的解決方案,可用於在 Windows 中將 Amazon S3 雲端儲存掛載為網路磁碟。不過,在本節中,我們將使用 rclone. Rclone 是一款命令列工具,可用於掛載和同步雲端儲存空間,例如 Amazon S3 儲存桶, Google 雲端儲存, Google 雲端硬碟, Microsoft OneDrive、DropBox 等。
Rclone 是一款免費的開源工具,可從官方網站及 GitHub 下載。您可以下載所需的版本 rclone 請透過以下任一連結:
我們來使用官方網站的直接連結:
您可以將此工作流程用於較新版本的 rclone 在它們發布後。以下操作是在命令列介面中執行的,對於在伺服器或虛擬機器上使用 Windows 卻未啟用圖形使用者介面的使用者而言,可能會有所幫助。
- 開啟 Windows PowerShell 作為 管理員.
- 建立用於下載和儲存檔案的目錄 rclone 檔案:
mkdir c:rclone - 前往已建立的目錄:
cd c:rclone - 下載 rclone 請使用上述的直接連結。若您下載的是其他版本,請修改連結中的版本號。
Invoke-WebRequest -Uri "https://downloads.rclone.org/v1.51.0/rclone-v1.51.0-windows-amd64.zip" -OutFile "c:rclonerclone.zip" - 從下載的壓縮檔中解壓縮檔案:
Expand-Archive -path 'c:rclonerclone.zip' -destinationpath '.' - 檢查目錄的內容:
dir - 檔案已解壓縮至 C:rclonerclone-v1.51.0-windows-amd64 在此情況下。
註: 在此範例中,的名稱是 rclone 解壓縮檔案後的目錄是 rclone-v1.51.0-windows-amd64. 不過,不建議使用點號(.) 在目錄名稱中。您可以將目錄重新命名為 rclone-v1-51-win64例如。
- 現在將解壓縮後的檔案複製到 C:rclone 為避免目錄名稱中出現點號:
cp C:rclonerclone-v1.51.0-windows-amd64*.* C:rclone - 執行 rclone 在設定模式下:
.rclone.exe config - 此設定工具在命令列模式下以精靈形式運作。您必須在精靈的每個步驟中選取所需的參數。
- 類型
n然後按下Enter要選取 新的遠端選項.n/s/q>
n
- 請輸入您的 S3 儲存桶名稱:
名稱:>
blog-bucket01 - 輸入名稱後,請選擇要設定的雲端儲存類型。輸入
4選擇 Amazon S3 雲端儲存服務。儲存>
4 - 選擇您的 S3 服務供應商。請輸入
1選擇 Amazon Web Services S3。供應商>
1 - 從執行階段取得 AWS 憑證(true 或 false)。
1預設使用 (false)。按下Enter不輸入任何內容即可使用預設值。env_auth>
1 - 請輸入您的 AWS 存取金鑰:
access_key_id>
AKIA4SK3HPQ9FLWO8AMB - 請輸入您的秘密存取金鑰:
- 要連線的區域。 歐盟(愛爾蘭)eu-west-1 在此範例中,我們的桶使用的是,因此我們應該輸入
6. - S3 API 的端點。若使用 AWS,請留空以採用該區域的預設端點。按下
Enter.終端點>
- 位置限制必須設定為與該地區相符。類型
6要選取 歐盟(愛爾蘭)區域 “eu-west-1”.位置限制>
6 - 建立儲存桶以及儲存或複製物件時,會使用預先定義的 ACL。按下
Enter使用預設參數。acl>
- 請指定 伺服器端加密演算法 在將此物件儲存至 S3 時使用。在我們的情況下,加密功能已停用,因此必須輸入 1(無)。
- 若使用 KMS ID,您必須提供金鑰的 ARN。由於未使用加密,請輸入
1(無)。sse_kms_key_id>
1 - 選擇在 S3 中儲存新物件時要使用的儲存類別。請輸入字串值。標準儲存類別選項 (
2) 在我們的情況下是合適的。 - 編輯進階設定? (是/否)
是/否>
n - 請檢查您的設定和輸入內容
y(是)如果一切正確的話。 - 類型
q以結束設定精靈。e/n/d/r/c/s/q>
q - Rclone 目前已設定為可與 Amazon S3 雲端儲存服務配合使用。請確保您的 Windows 電腦已設定正確的日期與時間。否則,當您將 S3 儲存桶掛載為 Windows 電腦的網路磁碟時,可能會發生錯誤: 時間設定可能有誤。請求時間與當前時間之間的差距過大.
- 執行 rclone 在該目錄中
rclone.exe查看位置並列出您的 AWS 帳戶中可用的儲存桶:.rclone.exe lsd blog-bucket01: - 您可以輸入
c:rclone至Path環境變數。它讓您可以執行 rclone 無需切換至存放 rclone.exe 的目錄,即可從任何目錄執行。 - 如上圖所示,Amazon S3 雲端儲存的存取權限已設定正確,並顯示了儲存桶清單(包括 blog-bucket01 (本教學中使用的)。
- 安裝 巧克力味,這是一款 Windows 套件管理工具,可用於從線上儲存庫安裝應用程式:
Set-ExecutionPolicy Bypass -Scope Process -Force; `iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) - WinFSP(Windows 檔案系統代理)是 Windows 平台上與 Linux FUSE 功能相當的工具,它速度快、穩定,並能讓您建立使用者模式檔案系統。
從 Chocolatey 儲存庫安裝 WinFSP:
choco install winfsp -y - 現在您可以將 Amazon S3 儲存桶掛載至 Windows 系統,作為網路磁碟機使用。讓我們來掛載這個 blog-bucket01 作為 S:
.rclone mount blog-bucket01:blog-bucket01/ S: --vfs-cache-mode full其中第一個"blog-bucket"是指在 rclone 設定精靈的第一步中輸入的儲存桶名稱,而緊接在":"後面定義的第二個"blog-bucket"則是於 AWS 網頁介面中設定的 Amazon S3 儲存桶名稱。

- 列出所有已連接的磁碟和分割區:
gdr -PSProvider 'FileSystem' - 檢查已映射網路磁碟機的內容:
ls S: - S3 儲存桶現已掛載為網路磁碟機 (S:)。您可以看到三個 txt 檔案儲存於 blog-bucket01 透過另一個 Windows PowerShell 或 Windows 命令列執行個體,將資料上傳至 Amazon S3 雲端儲存空間。

如果您的 Windows 系統具備圖形使用者介面,您可以透過該介面將檔案上傳或下載至 Amazon S3 雲端儲存空間。若您透過 Windows 介面(無論是圖形使用者介面或命令列介面)複製檔案,資料將在片刻之間同步完成,您會發現無論在 Windows 介面或 AWS 網頁介面中,皆會出現該新檔案。
如果您按下 Ctrl+C 或關閉該 CMD 或 PowerShell 視窗 rclone 正在執行(該 CMD 或 PowerShell 執行個體中會顯示"已啟動服務 clone"),您的 Amazon S3 儲存桶將與掛載點(此處為 S:)斷開連線。
如何在 Windows 開機時自動掛載 S3 儲存桶
當 S3 儲存桶在 Windows 啟動時自動掛載為網路磁碟機,使用起來會非常方便。讓我們來了解如何在 Windows 中設定 S3 儲存桶的自動掛載。
- 建立 rclone-S3.cmd 檔案位於 C:rclone 目錄。
- 將字串加入 rclone-S3.cmd 檔案:
C:rclonerclone.exe 掛載 blog-bucket01:blog-bucket01/ S: –vfs-cache-mode full
- 儲存此 CMD 檔案。您可以執行此 CMD 檔案,無需手動輸入指令來掛載 S3 儲存桶。
- 複製 rclone-S3.cmd 將檔案移至所有使用者的"啟動"資料夾:
C:ProgramDataMicrosoftWindowsStart MenuProgramsStartUp
- 此外,您也可以建立一個捷徑至 C:WindowsSystem32cmd.exe 並在目標屬性中設定掛載 S3 儲存桶所需的參數:
C:WindowsSystem32cmd.exe /k cd c:rclone & rclone mount blog-bucket01:blog-bucket01/ S: –vfs-cache-mode full
- 接著將版本更新後的捷徑加入 Windows 啟動資料夾:
C:ProgramDataMicrosoftWindowsStart MenuProgramsStartUp
有一個小小的缺點——一個顯示"服務 rclone 已啟動將 S3 儲存桶掛載至 Windows 電腦作為網路磁碟機後,會顯示""訊息。您可以嘗試透過 Windows 排程程式或 NSSM 來設定 S3 儲存桶的自動掛載;NSSM 是一款免費工具,可用於建立和設定 Windows 服務及其自動啟動功能。
在 macOS 中將 S3 儲存桶掛載為檔案系統
您可以像在 Linux 中一樣,將 Amazon S3 儲存桶掛載到 macOS 上。您應在 macOS 並設定權限和 Amazon 金鑰。
此範例使用 macOS 10.15 Catalina。您亦可在較新版本中套用此設定原則。S3 儲存桶的名稱為 blog-bucket01,macOS 的使用者名稱是 user1,而用作儲存桶掛載點的目錄是 /Volumes/s3-bucket/.
讓我們一步一步來檢視這項設定。
- 安裝 自釀,這是一款用於 macOS 的套件管理工具,可透過線上軟體儲存庫安裝應用程式:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" - 安裝 osxfuse:
brew cask install osxfuse - 重新啟動系統:
sudo shutdown -r now - 安裝 S3FS:
brew install s3fs - 安裝 S3FS 後,請為您的 Amazon S3 儲存桶設定存取金鑰和秘密存取金鑰。如果您只需暫時掛載儲存桶,或是僅偶爾掛載儲存桶,可以為當前工作階段定義金鑰:
export AWSACCESSKEYID=AKIA4SK3HPQ9FLWO8AMBexport AWSSECRETACCESSKEY=esrhLH4m1Da+3fJoU5xet1/ivsZ+Pay73BcSnzP - 如果您打算定期使用已掛載的儲存桶,請在 S3FS 所使用的配置檔中,為您的 macOS 使用者帳戶設定 AWS 金鑰:
echo AKIA4SK3HPQ9FLWO8AMB:esrhLH4m1Da+3fJoU5xet1/ivsZ+Pay73BcSnzP > ~/.passwd-s3fs - 如果您有多個儲存桶以及用於存取這些儲存桶的金鑰,請以以下格式進行定義:
echo bucket-name:access-key:secret-key > ~/.passwd-s3fs - 設定正確的權限,僅允許擁有者讀取和寫入:
chmod 600 ~/.passwd-s3fs - 建立一個目錄,用作 Amazon S3 儲存桶的掛載點:
sudo mkdir -p /Volumes/s3-bucket/ - 您的使用者帳戶必須被設定為所建立目錄的所有者:
sudo chown user1 /Volumes/s3-bucket/

- 使用 S3FS 掛載儲存桶:
s3fs blog-bucket01 /Volumes/s3-bucket/ - 對話方塊中顯示了 macOS 安全警告。請點擊
Open System Preferences以允許 S3FS 應用程式及其相關連線。

- 在 安全 & 隱私權 在視窗中點擊鎖頭圖示以進行變更,然後按下
Allow按鈕。
- 請再次執行掛載指令:
s3fs blog-bucket01 /Volumes/s3-bucket/ - 會顯示一個彈出式警告訊息: Terminal 希望存取網路磁碟機上的檔案.
- 請檢查儲存桶是否已掛載:
mount | grep bucket - 檢查桶內內容物:
ls -al /Volumes/s3-bucket/ - 儲存桶已成功建立。您可以在儲存桶中檢視、複製及刪除檔案。

您可以嘗試透過以下方式,在使用者登入時設定掛載 S3 儲存桶: launchd.
結論
一旦您掌握了如何將 Amazon S3 雲端儲存掛載為檔案系統,並應用於最常見的作業系統,與 Amazon S3 共享檔案便會更加便利。您可以透過在 Linux 和 macOS 上使用 S3FS,以及透過 rclone 或在 Windows 中使用 wins3fs。將 Amazon S3 儲存桶掛載至作業系統的本地目錄後,自動執行資料複製至儲存桶的流程,相較於使用網頁介面會更加方便。
您可透過作業系統的介面,將資料複製至 Amazon S3 以建立備份。您亦可嘗試使用專用的備份應用程式,這些應用程式會透過 AWS API 存取 S3 儲存桶。 NAKIVO Backup & Replication 這是一套完整的数据保護解決方案,內建對 S3 儲存桶作為備份目標的支援。您可以利用此解決方案,將 VMware 虛擬機器、Hyper-V 虛擬機器及 EC2 執行個體中的資料備份至 Amazon S3。
















