如何在 Linux 系統中建立乙個雲端加密檔案系統

2021-09-23 16:37:45 字數 3601 閱讀 4432

需要明確的是,s3ql 的確也有它的限制。比如,你不能把同乙個 s3fs 檔案系統在幾個不同的電腦上同時掛載,只能有一台電腦同時訪問它。另外,acl(訪問控制列表)也並沒有被支援。

在這篇教程中,我將會描述「如何基於 amazon s3 用 s3ql 配置乙個加密檔案系統」。作為乙個使用範例,我還會說明如何在掛載的 s3ql 檔案系統上執行 rsync 備份工具。

本教程首先需要你建立乙個 amazon aws 帳號(註冊是免費的,但是需要一張有效的信用卡)。

然後 建立乙個 aws access key(access key id 和 secret access key),s3ql 使用這些資訊來訪問你的 aws 帳號。

之後通過 aws 管理面板訪問 aws s3,並為 s3ql 建立乙個新的空 bucket。

為最佳效能考慮,請選擇乙個地理上距離你最近的區域。

在大多數 linux 發行版中都有預先編譯好的 s3ql 軟體包。

對於 debian、ubuntu 或 linux mint:

$ 

sudo

apt-get

install s3ql

對於 fedora:

$ 

sudo

yuminstall s3ql

對於 arch linux,使用 aur。

在 ~/.s3ql 目錄中建立 autoinfo2 檔案,它是 s3ql 的乙個預設的配置檔案。這個檔案裡的資訊包括必須的 aws access key,s3 bucket 名,以及加密口令。這個加密口令將被用來加密乙個隨機生成的主金鑰,而主金鑰將被用來實際地加密 s3ql 檔案系統資料。

$ 

mkdir

~/.s3ql

$ vi

~/.s3ql/

authinfo2

[s3]

storage

-url:s3

://[bucket-name]

backend

-login:[

your

-access

-key-id

]backend

-password:[

your

-secret

-access

-key]fs

-passphrase:[

your

-encryption

-passphrase

]指定的 aws s3 bucket 需要預先通過 aws 管理面板來建立。

為了安全起見,讓 authinfo2 檔案僅對你可訪問。

$ 

chmod

600~

/.s3ql/

authinfo2

現在你已經準備好可以在 aws s3 上建立乙個 s3ql 檔案系統了。

使用 mkfs.s3ql 工具來建立乙個新的 s3ql 檔案系統。這個命令中的 bucket 名應該與 authinfo2 檔案中所指定的相符。使用「--ssl」引數將強制使用 ssl 連線到後端儲存伺服器。預設情況下,mkfs.s3ql 命令會在 s3ql 檔案系統中啟用壓縮和加密。

$ 

mkfs

.s3ql s3

://[bucket-name] --ssl

你會被要求輸入乙個加密口令。請輸入你在 ~/.s3ql/autoinfo2 中通過「fs-passphrase」指定的那個口令。

如果乙個新檔案系統被成功建立,你將會看到這樣的輸出:

當你建立了乙個 s3ql 檔案系統之後,下一步便是要掛載它。

首先建立乙個本地的掛載點,然後使用 mount.s3ql 命令來掛載 s3ql 檔案系統。

$ 

mkdir

~/mnt_s3ql

$ mount

.s3ql s3

://[bucket-name] ~/mnt_s3ql

掛載乙個 s3ql 檔案系統不需要特權使用者,只要確定你對該掛載點有寫許可權即可。

視情況,你可以使用「--compress」引數來指定乙個壓縮演算法(如 lzma、bzip2、zlib)。在不指定的情況下,lzma 將被預設使用。注意如果你指定了乙個自定義的壓縮演算法,它將只會應用到新建立的資料物件上,並不會影響已經存在的資料物件。

$ 

mount

.s3ql

--compress bzip2 s3

://[bucket-name] ~/mnt_s3ql

因為效能原因,s3ql 檔案系統維護了乙份本地檔案快取,裡面包括了最近訪問的(部分或全部的)檔案。你可以通過「--cachesize」和「--max-cache-entries」選項來自定義檔案快取的大小。

如果想要除你以外的使用者訪問乙個已掛載的 s3ql 檔案系統,請使用「--allow-other」選項。

如果你想通過 nfs 匯出已掛載的 s3ql 檔案系統到其他機器,請使用「--nfs」選項。

執行 mount.s3ql 之後,檢查 s3ql 檔案系統是否被成功掛載了:

$ 

df~/

mnt_s3ql

$ mount

|grep

s3ql

想要安全地解除安裝乙個(可能含有未提交資料的)s3ql 檔案系統,請使用 umount.s3ql 命令。它將會等待所有資料(包括本地檔案系統快取中的部分)成功傳輸到後端伺服器。取決於等待寫的資料的多少,這個過程可能需要一些時間。

$ 

umount

.s3ql

~/mnt_s3ql

若要檢視 s3ql 檔案系統統計資訊,你可以使用 s3qlstat 命令,它將會顯示諸如總的資料、元資料大小、重複檔案刪除率和壓縮率等資訊。

$ s3qlstat 

~/mnt_s3ql

你可以使用 fsck.s3ql 命令來檢查和修復 s3ql 檔案系統。與 fsck 命令類似,待檢查的檔案系統必須首先被解除安裝。

$ 

fsck

.s3ql s3

://[bucket-name]

讓我用乙個流行的使用案例來結束這篇教程:本地檔案系統備份。為此,我推薦使用 rsync 增量備份工具,特別是因為 s3ql 提供了乙個 rsync 的封裝指令碼(/usr/lib/s3ql/pcp.py)。這個指令碼允許你使用多個 rsync 程序遞迴地複製目錄樹到 s3ql 目標。

$ 

/usr

/lib

/s3ql

/pcp

.py -h

下面這個命令將會使用 4 個併發的 rsync 連線來備份 ~/documents 裡的所有內容到乙個 s3ql 檔案系統。

$ 

/usr

/lib

/s3ql

/pcp

.py -a

--quiet

--processes=4

~/documents ~/

mnt_s3ql

這些檔案將首先被複製到本地檔案快取中,然後在後台再逐步地同步到後端伺服器。

如何在 Linux 中查詢乙個檔案

對於新手而言,在 linux 中使用命令列可能會非常不方便。沒有圖形介面,很難在不同資料夾間瀏覽,找到需要的檔案。本篇教程中,我會展示如何在 linux 中查詢特定的檔案。第一步要做的是通過 ssh 連線到你的 linux 在 linux 中查詢檔案有兩種方法。一種是使用find命令,另外一種是使用...

如何在linux中執行乙個指令碼

如果是開機馬上執行的指令碼,可以將指令碼寫到rc.local中 如果是使用者登入後自動執行指令碼,可以將指令碼寫到相應的使用者目錄下 bash profile 若指令碼 bash profile 不存在,可以直接拷貝 etc profile 命名為 bash profile 如果是要任一使用者登入後...

如何在C 中建立乙個順序表

準備資料 複製 如下 define maxlen 100 定義順序表的最大長度 struct data struct sltype 定義順序表結構 定義了順序表的最大長度maxlen 順序表資料元素的型別data以及順序表的資料結構sltype。在資料結構sltype中,listen為順序表已存結點...