本文將向你展示如何使用 UrBackup 和 Linux Deploy在一臺 Android 舊手機上搭建一臺備份服務器。舊手機的污染問題眾所周知,我有一臺舊手機,雖然外殼有裂紋和磨損,但性能還很好,因此我打算廢物再利用一下。
你的舊手機很可能:
并沒有那么舊(你會像換手機那樣一兩年就換一臺電腦嗎?)
有 4-8 個處理器和大約 4GB 的內存,以及內置 UPS。只需要再加一個外部硬盤驅動,就可以備份整個家庭的網絡了!
警告:這只是一個嘗試可能性的項目。由于我們使用的是 Android,因此必須克服一些困難,而且很多方面都會受到限制。這可能并不是最簡單的備份家庭網絡的方法,也不是使用 UrBackup 的最佳用途。但在設置完成,服務器可以正常運行后,你就可以輕松地管理多臺機器的備份并添加存儲。
下面是一些限制:
文件系統只能使用 EXT4。這是唯一兼容 UrBackup 和 Android 的文件系統。因此沒有文件系統級別的壓縮等功能。
從 chroot 環境下無法直接調用 systemd。我們會安裝一個簡單的啟動腳本,啟動 UrBackup 服務,并使用 pkill 停止服務。此外,我們還會添加一個 cronjob,在系統啟動時啟動服務。
UrBackup 主要以 Windows 為主。雖然它提供 Linux 的完整備份功能,但其 Linux 版本的完整鏡像依然是 beta 版狀態。此處我們會安裝穩定版,所以我們的服務器無法支持利用 Linux 客戶端進行完整鏡像備份。但是,你可以在客戶端上創建備份鏡像,然后備份含有這些鏡像的目錄。最后,UrBackup 團隊也在開發 Mac 客戶端支持,但同樣是beta 版。對于我來說,我沒有 Windows 服務器,我也不想備份我的Windows 筆記本電腦,所以我只在 Linux 服務器上使用 UrBackup。
Linux Deploy 提供的發行版和版本支持很有限。我試驗了 Centos7、Ubuntu 18.04 和 Debian 10,其中只有 Debian 10 能夠毫無錯誤地運行。UrBackup 對 Debian 的支持也為最好(其他發行版都沒有 ARM64 的 .deb 包)。
如果你打算與我一起嘗試一下,則請看下面的行動計劃:
root 手機。具體做法請參考相關文檔,不在此贅述。
安裝 Linux Deploy 并部署 Debian Buster。
安裝 UrBackup 服務器。
連接客戶端。
請記住,本教程采用了非常特殊的配置,,其中大部分是為了適應在 chroot 環境中,在 Android 上使用 Debian。
準備工作
root Android手機
我的手機是 Pixel 4a(8核CPU,6GB內存)。手機的特定型號應該沒有太大關系,但不同的型號可能會遇到不同的問題。如果你的手機是在過去五年內發布的,那么規格上應該沒問題。我建議至少 4 核 CPU 和 2GB 的內存,這對于大多數家庭網絡來說應該就夠了,但是你必須想清楚備份要求。此外不要忘記, Android 操作系統本身將占用一些資源。
如果你打算通過 Magisk 來 root 手機,則請注意:
確保你使用的 boot.img 文件與手機當前的引導程序版本相符。
如果你使用的是 Android 11,而且 Magisk 程序無法正常工作,請降級到 Android 10再試。我在 Pixel 4a 上擺弄了一整天的 Android 11。
如果你不想使用 Magisk,請非常謹慎地使用其他工具。有很多其他應用程序可能含有惡意軟件。CF-Auto-Root 也是一款很好的 root 工具,但請確認下載源的安全。
Linux Deploy 應用
該應用可以在 Debian 服務器上運行 chroot 環境。
你可以從 GitHub 下載最新版本。應用商店中的版本已經沒人維護了。
BusyBox 應用
該應用可以為 Linux Deploy 提供 Unix 工具程序。可用的“Busy Box”應用有好幾個,但只有這個版本與 Linux Deploy 兼容。
你可以從 GitHub 下載最新版本。應用商店中的版本已經沒人維護了。
充電線
手機的充電線。
從另一臺機器上通過 SSH 連接到服務器
盡管理論上可以在手機上安裝 Termux 或 SSH 應用進行操作,但通過鍵盤進行操作肯定更容易。
可選設備(強烈推薦)
盡管從技術的角度來看,你可以將備份存儲在 SD 卡上,但不建議這樣做。SD 卡的速度較慢,可靠性較低,并且無法長時間處理持續寫入。如果你計劃備份到SD 卡,那么估計一年內就會損壞(如果數據量大,甚至一個月內就會出問題)。
帶 USB 線的外置 HDD/SSD
大小和寫入速度取決于你個人,但我更關心可靠性,而不是存儲和速度。如果你有大量存儲空間(幾百甚至幾千GB),則速度很重要。在這種情況下,寫入速度很關鍵,因為你可以及時完成備份。為了可靠性,我們必須考慮品牌。使用廉價的驅動器,就要做好心理準備備份過程中會出現 I/O 錯誤。
USB 擴展塢
根據你的手機,可能需要支持 micro USB 或 USB-C。這個擴展塢應該至少有一個 USB 端口,可以連接到外部驅動器,而且還有一個充電的端口,但我建議選擇一個帶有以太網適配器的擴展塢。你可以通過 WiFi 運行該服務器,但以太網更快、更可靠。
以太網線
如果你在以太網上運行服務器,則需要準備一個以太網線。
第一步:安裝 Linux Deploy 并部署 Debian Buster
1-1. 在 root 完手機后,打開 GitHub,下載 Linux Deploy 和 BusyBox的 .apk 軟件包,安裝這兩個應用。
1-2. 安裝完畢后,打開 BusyBox。安裝的過程中,記錄下 BusyBox 的安裝位置。在下圖中,BusyBox 安裝到了"/system/xbin"。稍后我們會用到這個位置。
1-3. 打開 Linux Deploy,點擊右下方的設置圖標。
完成如下設置:
架構
所有安卓手機都是 AARCH64/ARM64。確保顯示的是 “arm64”(或者是其他發行版的 “aarch64”)。
安裝路徑
默認值是 "${EXTERNAL_STORAGE}/linux.img"。這是你的 SD 卡,你可以留著它(可以在樹莓派上工作)。但是,如果沒有插入 SD 卡或未正確格式化,則安裝將失敗。我建議安裝到你的內部存儲中。我假設你不會使用手機干別的事情,因為它需要一直插著電。
鏡像大小(MB)
我建議至少保留 15 GB,但請確保為 Android 留出足夠的存儲空間。這部分空間會占用內部存儲,因此最后剩下的空間可能沒有 50 GB 這么多。
初始化系統
如果沒有設置為 “sysv”,則 cronjobs 將不會在啟動時運行。
掛載
如果你不擔心將來的存儲擴展,則掛載外部塊設備時只需將其路徑直接添加到掛載點。如果以后有擴展存儲的打算,則可以考慮邏輯分區。我們在此加載的設備,都可以在啟動時直接訪問,但不能用于分區和格式化。但是,請記住,重新啟動手機時,塊設備的名稱 (/dev/block/sdX) 可能會變化,因此可能需要在重新啟動時檢查/更新此配置。如果你掛載的是邏輯卷,則名稱不會變化,也不需要檢查。
如何找到外部塊設備的路徑
在 Android 上,你可以通過 “/dev/block/sdX”(而不是 “/dev/sdX”)找到塊設備。為了確定哪個 sdX 設備是外部塊設備,你需要在插入該設備的服務器上運行“lsblk”。然后搜索各種設備,并查看哪一個與你的設備一致(就存儲容量/現有分區而言)。如果你在啟動后插入設備,則可能是最后一個設備。
注意:掛載塊設備后,你必須先解除掛載或關閉服務器,然后才能從物理上斷開塊設備的連接。如果在未解除掛載的情況下斷開塊設備的連接,則很可能會丟失所有數據。
1-4. 回到首頁,并打開左上角的菜單。選擇 “Settings”(設置),并一直向下滾動到 “PATH variable”(路徑變量)。這就是你安裝 BusyBox 的位置。設置好 “PATH variable” 后,選擇 “Update ENV”(更新環境變量)。
1-5. 返回首頁,打開右上角的菜單。點擊 “Install”(安裝)。你將看到安裝的實時日志。完成后,日志將以 “deploy”結尾。選擇屏幕左下角的 “START”(開始)。Android 手機上就開始運行 Debian 服務器了!
第二步:安裝 UrBackup 服務器
2-1. SSH 到新部署的服務器。
IP 地址與手機相同,端口為 22,你可以使用步驟 1-3 中設置的憑據登錄。本教程后續內容均假設你以 root 身份登錄。打開 Linux Deploy 就可以看到你的 IP:
2-2. 更新系統。
apt update && apt upgrade -y && apt install wget
2-3. 下載 UrBackup 的 .deb 包。
wget https://hndl.urbackup.org/Server/2.4.13/urbackup-server_2.4.13_arm64.deb
這是目前最新的穩定版本。
2-4. 創建備份目錄。
在這個例子中,我將備份目錄設置為 “/mnt/backup”。如果你掛載了存儲,則目錄已經創建好了;如果沒有,請創建目錄:
mkdir -p /mnt/backup
更新權限:
chownurbackup/mnt/backup chgrp urbackup /mnt/backup
允許 UrBackup 寫入此目錄。
2-5. 安裝啟動腳本。
我們無法在 chroot 環境中調用 systemd,因此需要手動啟動該服務:
/usr/bin/urbackupsrv run --config /etc/default/urbackupsrv --no-consoletime
為了避免每次都輸入該命令,我們可以創建一個腳本:
nano /usr/bin/urbackupsrv-star
將其復制到下面的文件中:
#!/bin/sh /usr/bin/urbackupsrv run --config /etc/default/urbackupsrv --no-consoletime
保存并退出。
添加執行權限:
chmod 755 /usr/bin/urbackupsrv-start
2-6. 啟動服務。
urbackupsrv-start
該命令將啟動服務器的日志。你可以按下 CTRL-C 停止服務,因此需要另開一個 SSH 會話。
如果想停止此服務,只需要干掉它就可以了:
pkill urbackup
2-7. 添加定時作業。
由于我們無法以傳統的方式“啟用” UrBackup 服務,因此需要設置一個定時作業來啟動該服務。此外,如果你斷開外部塊存儲或重新啟動手機,備份目錄的權限可能會恢復。為確保在重新啟動時這些設置能保留下來,我們需要添加定時作業。
打開 crontab:
crontab -e
添加作業:
@reboot chown urbackup [full/path/to/backup_directory] && chgrp urbackup [full/path/to/backup_directory] && urbackupsrv-start
保存并退出。
2-8. 打開 Web 界面。
通過 Web 瀏覽器導航到服務器的端口 55414:
http://YOUR_SERVER_IP:55414
第三步:連接客戶端
3-1. 點擊屏幕右下方的 “Add new client”(添加新客戶端):
3-2. 點擊 “Add new Internet client/client behind NAT”,并輸入新客戶端的名稱:
這是新客戶端的主機名。
3-3. 安裝客戶端。
對于 Windows 客戶端:
按照“Download preconfigured client installer for Windows” 的說明安裝客戶端。
對于 Linux 客戶端:
記下頂部的 “Default authentication key”,回頭有需要。
登錄到客戶端,并運行此安裝腳本:
(不要運行服務器提供的腳本)
TF=$(mktemp) && wget "https://hndl.urbackup.org/Client/2.4.11/UrBackup%20Client%20Linux%202.4.11.sh" -O $TF && sudo sh $TF; rm -f $TF
(檢查最新的客戶端下載。)
在安裝過程中,腳本會要求你選擇快照機制。對于“LVM - Logical Volume Manager snapshots”,請輸入“2”:
安裝完成后,請確認客戶端的正常運行:
service urbackupclientbackend status
如果客戶端沒有運行,請運行下述命令:
service urbackupclientbackend start
最后,通過下述命令將客戶端連接到服務器:
urbackupclientctlset-settings -kinternet_mode_enabled-vtrue -kinternet_server-v"YOUR_SERVER_IP" -kinternet_server_port-v"55415" -kcomputername-v"YOUR_CLIENT_NAME" -k internet_authkey -v "YOUR_DEFAULT_AUTHENTICATION_KEY"
請確保"YOUR_CLIENT_NAME"與3-2中設置的主機名相同,"YOUR_DEFAULT_AUTHENTICATION_KEY"是服務器前面生成的鍵。
3-4. 配置服務器。
返回 Web 界面,你會發現客戶端并不在線,點擊頂部導航欄上的“Settings”(設置):
點擊“Settings”頁面上的“Internet”(互聯網)頁簽,檢查如下設置:
(如果所有客戶端都是本地的,則可以取消“Do image backups over the internet”以及“Do full file backups over the internet”。)
滾動到底部并單擊保存。
3-5. 設置備份目錄。
在“Settings”頁面上,點擊“”Client settings(客戶端設置)。選中“Separate settings for this client”,在“File Backups”下的“Default directories to backup”中設置你想備份的目錄。如果想添加多個目錄,可以用分號“;”分隔。
你還可以在此設置備份間隔。
點擊底部的保存。
對于 Linux 客戶端,你也可以從客戶端的命令行設置:
urbackupclientctl add-backupdir -d FILE_PATH
重啟服務器:
pkillurbackup urbackupsrv-start
3-6. 重新登錄到 Web 界面。
到此為止,客戶端已經連接好了。可能“File backup status”(文件備份狀態)會顯示“No paths to backup configured”(沒有設置備份路徑),但沒關系,在第一次完成備份之前,都會這顯示。
另外請注意,如果你連接的是Linux 客戶端,則不支持鏡像備份。但是,你可以通過 Linux 客戶端運行鏡像備份,并設置備份鏡像的目錄。
接下來,你就可以嘗試一下備份了!
審核編輯:湯梓紅
-
手機
+關注
關注
35文章
6874瀏覽量
157546 -
Android
+關注
關注
12文章
3935瀏覽量
127343 -
Linux
+關注
關注
87文章
11292瀏覽量
209329 -
服務器
+關注
關注
12文章
9123瀏覽量
85324
原文標題:用舊手機DIY一臺服務器
文章出處:【微信號:單片機與嵌入式,微信公眾號:單片機與嵌入式】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論