使用 Fedora ARM 服務(wù)器來做 3-2-1 備份計劃
Fedora 服務(wù)器版操作系統(tǒng)可以運行在類似樹莓派的單板計算機(SBC)上。這篇文章針對的用戶是想要充分利用實體服務(wù)器系統(tǒng),并使用類似 Cockpit 的內(nèi)置工具進行數(shù)據(jù)備份和個人數(shù)據(jù)的恢復(fù)。這里描述了備份的 3 個階段。
必要的準(zhǔn)備
想要使用本指南,你所需要的是一個運行著的 Fedora Linux 工作站和以下的項目:
- 你應(yīng)該閱讀、理解和實踐 Fedora 文檔中 ??服務(wù)器安裝??? 和 ??管理?? 的要求
- 一塊用來測試 Fedora Linux 的 SBC(單板計算機)。在這里查看 ??硬件需求??
- ??Fedora ARM??? ??服務(wù)器?? 原始鏡像 & ARM 鏡像安裝器
- SD 存儲卡(64 GB / Class 10)和 SSD 設(shè)備兩選一
- 以太網(wǎng) / DHCP 預(yù)留 IP 地址或者靜態(tài) IP 地址
- 提供了 ssh 密鑰的 Linux 客戶端工作站
- 選擇云存儲服務(wù)
- 有額外可用的 Linux 工作站
對于這套環(huán)境,在寫這篇文章的時候,由于成本和可用性的原因,我選擇樹莓派 3B+/4B+ (其中一個用來熱切換)。當(dāng)使用 Cockpit 遠(yuǎn)程連接樹莓派服務(wù)器時,你可以將樹莓派放到路由器附近以便設(shè)置。
加強服務(wù)器的安全
在 SBC 完成服務(wù)器的安裝和管理后,用 firewalld 加強服務(wù)器的安全是一個好的做法。
連接存儲設(shè)備到服務(wù)器之前,一旦服務(wù)器在線你必須設(shè)置好防火墻。firewalld 是基于區(qū)域的防火墻。在依照 Fedora 文檔完成安裝和管理指南之后,創(chuàng)建一個名為 ??FedoraServer?
? 的預(yù)定義區(qū)域。
firewalld 里的富規(guī)則
富規(guī)則rich rule用來阻止或者允許一個特定的 IP 地址或者地址段。下面這條規(guī)則只從(客戶端工作站)注冊的 IP 地址接受 SSH 連接,并斷開其它的連接。在 Cockpit 終端或者客戶端工作站終端運行命令是通過 ssh 來連接到服務(wù)器的。
firewall-cmd --add-rich-rule='rule family=ipv4 source address=<registered_ip_address>/24 service name=ssh log prefix="SSH Logs" level="notice" accept'
拒絕所有主機的 ping 請求
使用這個命令來設(shè)置 icmp 拒絕,并且不允許 ping 請求:
firewall-cmd --add-rich-rule='rule protocol value=icmp reject'
要進行其它防火墻控制,比如管理端口和區(qū)域,請查閱以下鏈接。請注意錯配防火墻可能會使安全出現(xiàn)漏洞受到攻擊。
配置文件服務(wù)器的存儲
下一步是連接存儲設(shè)備到 SBC,然后使用 Cockpit 對新插入的存儲設(shè)備進行分區(qū)。使用 Cockpit 的圖形化服務(wù)器管理界面,管理一個家庭實驗室(可以是一個或者多個服務(wù)器)比之前更加簡單。Fedora Linux 服務(wù)器標(biāo)準(zhǔn)提供了 Cockpit。
在這個階段,一個通過 SBC 的 USB 插口接電的 SSD 設(shè)備無需額外電源供給就可以工作。
- 將存儲設(shè)備連接到 SBC 的 USB 接口
- 運行之后(按上面的“必要的準(zhǔn)備”所設(shè)置的那樣),然后在你的客戶端工作站瀏覽器上訪問 機器的 IP 地址:9090
- 登錄進 Cockpit 之后,點擊 Cockpit 頁面頂部的“打開管理訪問權(quán)限Turn on administrative access”
- 點擊左邊面板的 “存儲Storage” 按鈕
- 選擇下面顯示的 “驅(qū)動器Drives”,然后分區(qū)并格式化一個空白的存儲設(shè)備
- 在選定的存儲設(shè)備這個界面上,創(chuàng)建一個新的分區(qū)表或者格式化并創(chuàng)建新的分區(qū)。當(dāng)初始化磁盤的時候,在 “Partitioning分區(qū)” 類型選項上,選擇 “GPT 分區(qū)表”
- 選擇一個文件系統(tǒng)類型,這里選擇 “EXT4” 。這對于一個限制 I/O 能力(比如 USB 2.0 接口)和限制帶寬(小于 200MB/s)的設(shè)備是適合的
- 要在設(shè)備上創(chuàng)建單個占據(jù)整個存儲空間的分區(qū),指定它的掛載點,比如 ?
?/media?
? 然后點擊 “確定Ok” 。 - 點擊 “Create partition創(chuàng)建分區(qū)”,創(chuàng)建一個掛載點為 ?
?/media?
? 的新分區(qū)。
創(chuàng)建備份和恢復(fù)備份
備份很少是一刀切的。這里有一些選擇比如數(shù)據(jù)備份在哪里,備份數(shù)據(jù)的步驟,驗證一些自動化,并確定怎樣來恢復(fù)備份了的數(shù)據(jù)。
Backup workflow – version 1.0
備份 1. 用 rsync 從客戶端遠(yuǎn)程同步到文件服務(wù)器(樹莓派)
這個傳輸用到的命令是:
rsync -azP ~/source syncuser@host1:/destination
參數(shù):
- ?
?-a?
??/??--archive?
?:歸檔 - ?
?-z?
??/??--compress?
?:壓縮 - ?
?-P?
??/??--progress?
?:顯示進度
要使用更多的選項運行 ??rsync?
?,可以設(shè)置以下的選項:
- ?
?--inplace?
?:直接替換來更新目標(biāo)文檔 - ?
?--append?
?:追加數(shù)據(jù)到較短的文檔中
在將文檔備份到存儲空間之前,源端文檔的文件重復(fù)消除和壓縮是減少備份數(shù)據(jù)容量最有效的方式。
每天工作結(jié)束,我會手動運行這個。一旦我設(shè)置了云備份工作流,自動化腳本是一個優(yōu)勢。
關(guān)于 ??rsync?
?? 的詳細(xì)信息,請在 ??這里?? 訪問 Fedora 雜志的文章。
備份 2. 使用 rysnc 從文件服務(wù)器遠(yuǎn)程同步到主要的云存儲上
選擇云存儲是考慮的因素;
- 成本:上傳、存儲空間和下載費用
- 支持 ?
?rsync?
??、??sftp?
? - 數(shù)據(jù)冗余(RAID 10 或者運行中的數(shù)據(jù)中心冗余計劃)
- 快照
符合這些云存儲標(biāo)準(zhǔn)之一的就是 Hetzner 托管的 Nextcloud– ??存儲盒子??。你不會受到供應(yīng)商限制,可以自由切換而沒有退出懲罰。
在文件服務(wù)器上生成 SSH 密鑰并創(chuàng)建授權(quán)密鑰文件
使用 ??ssh-keygen?
? 命令為文件服務(wù)器和云存儲生成一對新的 SSH 密鑰對。
ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key . . .
插入要求的 SSH 公鑰到新的本地授權(quán)密鑰文件中。
cat .ssh/id_rsa.pub >> storagebox_authorized_keys
傳輸密鑰文件到云存儲
下一步就是上傳生成了的授權(quán)密鑰文件到存儲盒子。要做這些,先用 700 權(quán)限創(chuàng)建 ??.ssh?
? 目錄,然后用 SSH 公鑰創(chuàng)建授權(quán)文件并賦予 600 權(quán)限。運行以下命令。
echo -e "mkdir .ssh \n chmod 700 .ssh \n put storagebox_authorized_keys .ssh/authorized_keys \n chmod 600 .ssh/authorized_keys" | sftp <username>@<username>.your-storagebox.de
通過 ssh 使用 rsync
使用 ??rsync?
? 同步你的文件目錄當(dāng)前狀態(tài)到存儲盒子。
rsync --progress -e 'ssh -p23' --recursive <local_directory> <username>@<username>.your-storagebox.de:<target_directory>
這個過程被叫做推送操作,因為它 “推送” 本地系統(tǒng)的一個目錄到一個遠(yuǎn)程的系統(tǒng)中去。
從云存儲中恢復(fù)目錄
要從存儲盒子恢復(fù)目錄,轉(zhuǎn)換到這個目錄:
rsync --progress -e 'ssh -p23' --recursive <username>@<username>.your-storagebox.de:<remote_directory> <local_directory>
備份 3. 客戶端備份到第二個云儲存
??Deja Dup?? 是 Fedora 軟件倉庫中為 Fedora 工作站提供快速備份解決方案的工具。它擁有 GPG 加密、計劃任務(wù)、文件包含(哪個目錄要備份)等功能。
Backing up to the secondary cloud
Restoring files from cloud storage
歸檔個人數(shù)據(jù)
不是所有數(shù)據(jù)都需要 3-2-1 備份策略。這就是個人數(shù)據(jù)共享。我將一臺擁有 1TB 硬盤的筆記本作為我個人數(shù)據(jù)的檔案(家庭照片)。
轉(zhuǎn)到設(shè)置中的 “共享Sharing” (在我的例子中是 GNOME 文件管理器)并切換滑塊以啟用共享。
打開 “文件共享file sharing”,“網(wǎng)絡(luò)Networks” 和 “需要的密碼Required password”,允許你使用 WebDAV 協(xié)議在你的本地網(wǎng)絡(luò)上分享你的公共文件夾給其它的工作站。
準(zhǔn)備回滾選項
未測試的備份并不比完全沒有備份好。我在家庭實驗室環(huán)境中使用 “熱切換” 方法來避免像頻繁的斷電或者液體損壞的情況發(fā)生。然而,我的建議方案遠(yuǎn)沒有達(dá)到災(zāi)難恢復(fù)計劃或企業(yè) IT 中的自動故障修復(fù)。
- 定期運行文件恢復(fù)操作
- 備份 ssh/GPG 密鑰到一個額外的存儲設(shè)備中
- 復(fù)制一個 Fedora ARM 服務(wù)器的原始鏡像到一個 SD 卡中
- 在主云存儲中保持全備份的快照
- 自動化備份過程最小化減少人為錯誤或者疏忽
使用 Cockpit 追蹤活動并解決問題
當(dāng)你的項目在成長時,你所管理的服務(wù)器數(shù)量也在增長。在 Cockpit 中追蹤活動和警告可以減輕你的管理負(fù)擔(dān)。你可以使用 Cockpit 的圖形化界面的三種方法來歸檔這些。
SELinux 菜單
怎樣診斷網(wǎng)絡(luò)問題,找到日志并在 Cockpit 中解決問題:
- 去 SELinux 中檢查日志
- 檢查“解決方案詳細(xì)信息solution details”
- 當(dāng)必要時,選擇 “應(yīng)用這個方案Apply this solution”
- 如果必要,查看自動化腳本并運行它
SELinux logs
網(wǎng)絡(luò)或者存儲日志
服務(wù)器日志會跟蹤 CPU 負(fù)載、內(nèi)存使用、網(wǎng)絡(luò)活動、存儲性能和系統(tǒng)日志關(guān)聯(lián)的詳細(xì)指標(biāo)。日志會組織在網(wǎng)絡(luò)面板或者存儲面板里顯示。
Storage logs in Cockpit
軟件更新
在預(yù)設(shè)的時間和頻率下,Cockpit 可以幫助進行安全更新。當(dāng)你需要時,你可以運行所有的更新。
Software updates
恭喜你在 Fedora ARM 服務(wù)器版本上搭建了一個文件/備份服務(wù)器。