Linux中國

使用 Fedora ARM 伺服器來做 3-2-1 備份計劃

Fedora 伺服器版操作系統可以運行在類似樹莓派的單板計算機(SBC)上。這篇文章針對的用戶是想要充分利用實體伺服器系統,並使用類似 Cockpit 的內置工具進行數據備份和個人數據的恢復。這裡描述了備份的 3 個階段。

必要的準備

想要使用本指南,你所需要的是一個運行著的 Fedora Linux 工作站和以下的項目:

  • 你應該閱讀、理解和實踐 Fedora 文檔中 伺服器安裝管理 的要求
  • 一塊用來測試 Fedora Linux 的 SBC(單板計算機)。在這裡查看 硬體需求
  • Fedora ARM 伺服器 原始鏡像 & ARM 鏡像安裝器
  • SD 存儲卡(64 GB / Class 10)和 SSD 設備兩選一
  • 乙太網 / DHCP 預留 IP 地址或者靜態 IP 地址
  • 提供了 ssh 密鑰的 Linux 客戶端工作站
  • 選擇雲存儲服務
  • 有額外可用的 Linux 工作站

對於這套環境,在寫這篇文章的時候,由於成本和可用性的原因,我選擇樹莓派 3B+/4B+ (其中一個用來熱切換)。當使用 Cockpit 遠程連接樹莓派伺服器時,你可以將樹莓派放到路由器附近以便設置。

加強伺服器的安全

在 SBC 完成伺服器的安裝和管理後,用 firewalld 加強伺服器的安全是一個好的做法。

連接存儲設備到伺服器之前,一旦伺服器在線你必須設置好防火牆。firewalld 是基於區域的防火牆。在依照 Fedora 文檔完成安裝和管理指南之後,創建一個名為 FedoraServer 的預定義區域。

firewalld 里的富規則

富規則 rich rule 用來阻止或者允許一個特定的 IP 地址或者地址段。下面這條規則只從(客戶端工作站)註冊的 IP 地址接受 SSH 連接,並斷開其它的連接。在 Cockpit 終端或者客戶端工作站終端運行命令是通過 ssh 來連接到伺服器的。

firewall-cmd --add-rich-rule=&apos;rule family=ipv4 source address=<registered_ip_address>/24 service name=ssh log prefix="SSH Logs" level="notice" accept&apos;

拒絕所有主機的 ping 請求

使用這個命令來設置 icmp 拒絕,並且不允許 ping 請求:

firewall-cmd --add-rich-rule=&apos;rule protocol value=icmp reject&apos;

要進行其它防火牆控制,比如管理埠和區域,請查閱以下鏈接。請注意錯配防火牆可能會使安全出現漏洞受到攻擊。

在 Cockpit 中管理防火牆

firewalld 規則

配置文件伺服器的存儲

下一步是連接存儲設備到 SBC,然後使用 Cockpit 對新插入的存儲設備進行分區。使用 Cockpit 的圖形化伺服器管理界面,管理一個家庭實驗室(可以是一個或者多個伺服器)比之前更加簡單。Fedora Linux 伺服器標準提供了 Cockpit。

在這個階段,一個通過 SBC 的 USB 插口接電的 SSD 設備無需額外電源供給就可以工作。

  • 將存儲設備連接到 SBC 的 USB 介面
  • 運行之後(按上面的「必要的準備」所設置的那樣),然後在你的客戶端工作站瀏覽器上訪問 機器的 IP 地址:9090
  • 登錄進 Cockpit 之後,點擊 Cockpit 頁面頂部的「 打開管理訪問許可權 Turn on administrative access
  • 點擊左邊面板的 「 存儲 Storage 」 按鈕
  • 選擇下面顯示的 「 驅動器 Drives 」,然後分區並格式化一個空白的存儲設備 Cockpit Storage management
  • 在選定的存儲設備這個界面上,創建一個新的分區表或者格式化並創建新的分區。當初始化磁碟的時候,在 「 Partitioning 分區 」 類型選項上,選擇 「GPT 分區表」
  • 選擇一個文件系統類型,這裡選擇 「EXT4」 。這對於一個限制 I/O 能力(比如 USB 2.0 介面)和限制帶寬(小於 200MB/s)的設備是適合的 Create a partition in Cockpit
  • 要在設備上創建單個佔據整個存儲空間的分區,指定它的掛載點,比如 /media 然後點擊 「 確定 Ok 」 。
  • 點擊 「 Create partition 創建分區 」,創建一個掛載點為 /media 的新分區。

創建備份和恢復備份

備份很少是一刀切的。這裡有一些選擇比如數據備份在哪裡,備份數據的步驟,驗證一些自動化,並確定怎樣來恢復備份了的數據。

Backup workflow – version 1.0

備份 1. 用 rsync 從客戶端遠程同步到文件伺服器(樹莓派)

這個傳輸用到的命令是:

rsync -azP ~/source syncuser@host1:/destination

參數:

  • -a/--archive:歸檔
  • -z/--compress:壓縮
  • -P/--progress:顯示進度

要使用更多的選項運行 rsync,可以設置以下的選項:

  • --inplace:直接替換來更新目標文檔
  • --append:追加數據到較短的文檔中

在將文檔備份到存儲空間之前,源端文檔的文件重複消除和壓縮是減少備份數據容量最有效的方式。

每天工作結束,我會手動運行這個。一旦我設置了雲備份工作流,自動化腳本是一個優勢。

關於 rsync 的詳細信息,請在 這裡 訪問 Fedora 雜誌的文章。

備份 2. 使用 rysnc 從文件伺服器遠程同步到主要的雲存儲上

選擇雲存儲是考慮的因素;

  • 成本:上傳、存儲空間和下載費用
  • 支持 rsyncsftp
  • 數據冗餘(RAID 10 或者運行中的數據中心冗餘計劃)
  • 快照

符合這些雲存儲標準之一的就是 Hetzner 託管的 Nextcloud– 存儲盒子。你不會受到供應商限制,可以自由切換而沒有退出懲罰。

在文件伺服器上生成 SSH 密鑰並創建授權密鑰文件

使用 ssh-keygen 命令為文件伺服器和雲存儲生成一對新的 SSH 密鑰對。

ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key . . .

插入要求的 SSH 公鑰到新的本地授權密鑰文件中。

cat .ssh/id_rsa.pub >> storagebox_authorized_keys
傳輸密鑰文件到雲存儲

下一步就是上傳生成了的授權密鑰文件到存儲盒子。要做這些,先用 700 許可權創建 .ssh 目錄,然後用 SSH 公鑰創建授權文件並賦予 600 許可權。運行以下命令。

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 同步你的文件目錄當前狀態到存儲盒子。

rsync --progress -e &apos;ssh -p23&apos; --recursive <local_directory> <username>@<username>.your-storagebox.de:<target_directory>

這個過程被叫做推送操作,因為它 「推送」 本地系統的一個目錄到一個遠程的系統中去。

從雲存儲中恢複目錄

要從存儲盒子恢複目錄,轉換到這個目錄:

rsync --progress -e &apos;ssh -p23&apos; --recursive <username>@<username>.your-storagebox.de:<remote_directory> <local_directory>

備份 3. 客戶端備份到第二個雲儲存

Deja Dup 是 Fedora 軟體倉庫中為 Fedora 工作站提供快速備份解決方案的工具。它擁有 GPG 加密、計劃任務、文件包含(哪個目錄要備份)等功能。

Backing up to the secondary cloud

Restoring files from cloud storage

歸檔個人數據

不是所有數據都需要 3-2-1 備份策略。這就是個人數據共享。我將一台擁有 1TB 硬碟的筆記本作為我個人數據的檔案(家庭照片)。

轉到設置中的 「 共享 Sharing 」 (在我的例子中是 GNOME 文件管理器)並切換滑塊以啟用共享。

打開 「 文件共享 file sharing 」,「 網路 Networks 」 和 「 需要的密碼 Required password 」,允許你使用 WebDAV 協議在你的本地網路上分享你的公共文件夾給其它的工作站。

準備回滾選項

未測試的備份並不比完全沒有備份好。我在家庭實驗室環境中使用 「熱切換」 方法來避免像頻繁的斷電或者液體損壞的情況發生。然而,我的建議方案遠沒有達到災難恢復計劃或企業 IT 中的自動故障修復。

  • 定期運行文件恢復操作
  • 備份 ssh/GPG 密鑰到一個額外的存儲設備中
  • 複製一個 Fedora ARM 伺服器的原始鏡像到一個 SD 卡中
  • 在主雲存儲中保持全備份的快照
  • 自動化備份過程最小化減少人為錯誤或者疏忽

使用 Cockpit 追蹤活動並解決問題

當你的項目在成長時,你所管理的伺服器數量也在增長。在 Cockpit 中追蹤活動和警告可以減輕你的管理負擔。你可以使用 Cockpit 的圖形化界面的三種方法來歸檔這些。

SELinux 菜單

怎樣診斷網路問題,找到日誌並在 Cockpit 中解決問題:

  • 去 SELinux 中檢查日誌
  • 檢查「 解決方案詳細信息 solution details
  • 當必要時,選擇 「 應用這個方案 Apply this solution
  • 如果必要,查看自動化腳本並運行它

SELinux logs

網路或者存儲日誌

伺服器日誌會跟蹤 CPU 負載、內存使用、網路活動、存儲性能和系統日誌關聯的詳細指標。日誌會組織在網路面板或者存儲面板里顯示。

Storage logs in Cockpit

軟體更新

在預設的時間和頻率下,Cockpit 可以幫助進行安全更新。當你需要時,你可以運行所有的更新。

Software updates

恭喜你在 Fedora ARM 伺服器版本上搭建了一個文件/備份伺服器。

via: https://fedoramagazine.org/3-2-1-backup-plan-with-fedora-arm-server/

作者:Hanku Lee 選題:lujun9972 譯者:hwlife 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國