如果你在 Android 上把 Termux 當作真正的開發環境使用,最終都會遇到同樣的問題:

換新手機時會發生什麼事?

你的 Termux 環境可能包含:

  • 數百個已安裝的套件
  • Python 和 Node.js 環境
  • Git 存放庫
  • shell 腳本
  • dotfiles
  • 設定檔
  • SSH 設定
  • 開發工具
  • 個人專案
  • 自訂環境變數
  • 多年累積的終端機客製化

手動重新建立所有這些內容可能需要數小時。

這就是我建立 Termux-Sync 的原因。

「Termux-Sync 是一款用於備份、還原和遷移整個 Termux 環境的工具。」

你不必從頭重建 Termux,而是可以備份你的環境,然後在另一台裝置上還原它。

GitHub:https://github.com/djunekz/termux-sync

PyPI:https://pypi.org/project/termux-sync/


問題所在

Termux 遠不止是一款終端機模擬器。

對許多使用者來說,它已成為在 Android 上運行的完整開發環境。

一個典型的 Termux 安裝可能如下所示:

Termux
├── Python
├── Node.js
├── Rust
├── Git
├── npm 套件
├── Python 套件
├── shell 腳本
├── Git 存放庫
├── ~/.config
├── ~/projects
├── 環境變數
└── 自訂設定

然後有一天:

新手機

安裝 Termux

再次安裝套件

還原設定

再次複製存放庫

重新設定所有內容

沒有人想每次換裝置都要重做這些事情。

單純的檔案備份也不夠。

你想要的不只是你的檔案。

你想要的是你的 Termux 環境。


什麼是 Termux-Sync?

Termux-Sync 是一款開源的 CLI/TUI 工具,旨在備份、還原和遷移完整的 Termux 環境。

目標很簡單:

舊裝置

│ 備份

Termux-Sync

│ 還原

新裝置

這個專案是為那些希望保留開發環境,而非從零開始的 Termux 使用者所設計。


它會備份什麼?

Termux-Sync 的設計理念是環境備份,而非單純的檔案封存。

根據備份設定,它可以保留以下內容:

已安裝的套件
家目錄
使用者專案
設定
/usr/etc
環境資料
套件資訊

這使得備份對於災難復原和裝置遷移都很有用。

目標是:

「備份環境,而不只是檔案。」


為什麼不直接使用 tar?

你絕對可以手動建立備份:

tar -czf backup.tar.gz $HOME

但這只解決了部分問題。

完整的 Termux 遷移可能涉及:

  • 套件清單
  • Termux 專屬目錄
  • 設定
  • 套件還原
  • 架構差異
  • 權限
  • 驗證
  • 儲存後端
  • 還原順序

最終,一個簡單的封存檔會變成一堆 shell 腳本和手動步驟。

Termux-Sync 試圖將這個過程轉變為可重複的工作流程。

不用記住一長串指令:

backup
→ package list
→ configuration
→ home
→ verify
→ transfer
→ restore
→ reinstall packages
→ restore configuration

你可以使用單一工具。


基本工作流程

從 PyPI 安裝 Termux-Sync:

pkg install python
pip install termux-sync

然後執行:

termux-sync

該工具提供互動式介面來執行常見操作。

你也可以直接使用其 CLI 指令。

例如:

termux-sync backup

建立 Termux 環境的備份。

然後在另一台裝置上:

termux-sync restore

還原環境。

確切的工作流程可以根據備份的存放位置進行自訂。


換新手機前進行備份

其中一個主要使用情境是裝置遷移。

想像一下,你目前在手機上大量使用 Termux。

在切換裝置之前:

termux-sync backup --label "phone-migration"

然後將備份移到你偏好的儲存位置。

在新裝置上安裝 Termux 和 Termux-Sync。

然後還原:

termux-sync restore

而不是:

新手機

「我有哪些套件?」

「我的設定是什麼?」

「那個專案放在哪裡?」

「這個我是怎麼設定的?」

你會得到:

新手機

還原

繼續工作


本機備份

你不必使用雲端服務。

Termux-Sync 支援本機備份。

這表示你可以將備份保留在本機儲存空間,或是 Termux 可存取的其他儲存位置。

當你需要以下項目時,這會很有用:

  • 離線備份
  • 快速還原
  • 對檔案的完全控制
  • 無雲端依賴

理念很簡單:

「你的備份應由你自己掌控。」


Google Drive

對於想要使用雲端儲存的使用者,Termux-Sync 可以透過「rclone」與 Google Drive 搭配使用。

工作流程如下:

Termux


Termux-Sync


rclone


Google Drive

這使得保留 Termux 環境的遠端複本成為可能。

當原手機遺失或損壞時,雲端備份特別有用。


私人 GitHub 存放庫

另一種選擇是使用私人 GitHub 存放庫作為備份目的地。

這對於已經將 GitHub 納入工作流程的開發者來說可能很有用。

概念如下:

Termux


Termux-Sync


Private GitHub Repository

私人存放庫可以提供版本化的備份儲存,同時仍可從其他裝置存取。

然而,敏感資訊仍應小心處理。

私人存放庫不應被視為等同於加密。


SHA-256 驗證

只有當你可以確信資料未被損壞時,備份才有價值。

Termux-Sync 將 SHA-256 驗證納入其備份/還原工作流程。

基本概念是:

建立備份

計算總和檢查碼

儲存總和檢查碼

傳輸備份

驗證總和檢查碼

還原

這有助於在還原前偵測損壞或被修改的備份資料。

對於遷移工具而言,完整性驗證非常重要。

你不希望在刪除原始環境後才發現備份已損壞。


自動備份

手動備份很有用。

自動備份更好。

Termux-Sync 包含自動備份功能,讓使用者可以定期維護環境的複本。

一個實用的策略可能如下:

每日

自動備份

重大變更前

手動快照

手機遷移前

遷移備份

這讓你擁有多個復原點,而非依賴單一備份檔。


備份標籤

備份也可以加上標籤。

例如:

termux-sync backup --label "before-rust-update"

或:

termux-sync backup --label "before-phone-migration"

這使得更容易理解特定快照所代表的意義。

不用:

backup_001
backup_002
backup_003

你可以有:

before-rust-update
before-node-update
stable
phone-migration

隨著專案的演進,透過快照管理和比較,這個概念將變得更強大。


TUI

Termux-Sync 不僅僅是一組指令的集合。

它也提供終端機使用者介面。

這對於偏好瀏覽操作而非記憶每個指令的使用者很有用。

TUI 可以公開的功能包括:

┌─────────────────────────────┐
│ TERMUX-SYNC │
├─────────────────────────────┤
│ │
│ Backup │
│ Restore │
│ Snapshots │
│ Storage │
│ Configuration │
│ Logs │
│ Disk Usage │
│ │
└─────────────────────────────┘

目標是讓體驗原生於 Termux,同時讓進階操作更容易上手。


Termux-Sync 不只是檔案同步

「Sync」這個名稱可能讓人覺得這個專案只是另一個檔案同步工具。

這並非主要概念。

重要的概念是:

「Termux 環境備份與遷移。」

兩者之間有差異:

檔案同步

以及:

環境遷移

檔案同步問的是:

「哪些檔案有變更?」

Termux-Sync 問的是:

「如何在其他地方重現我的 Termux 環境?」

這是一個大得多的問題。


架構感知還原

Android 裝置可能使用不同的 CPU 架構。

例如:

aarch64
arm
x86_64
i686

在一個架構上建立的備份,如果包含架構特定的二進位檔,可能無法直接傳輸到另一個架構。

這是建立適當的 Termux 遷移工具所面臨的挑戰之一。

Termux-Sync 的一個未來目標是讓還原更具架構感知能力。

而不是盲目地還原所有內容:

Backup

Detect architecture

Compare target

Identify incompatible binaries

Reinstall compatible packages

Restore user data/configuration

這對於在不同裝置之間移動的使用者來說尤其重要。


安全性

備份可能包含極為敏感的資訊。

例如:

SSH 金鑰
API 權杖
Git 憑證
環境變數
shell 歷史記錄
私有原始碼
設定檔

這表示備份軟體需要認真對待安全性。

總和檢查碼驗證有助於完整性,但完整性與加密並不相同。

我希望繼續改進的領域之一是加密備份。

長期目標是支援以下工作流程:

termux-sync backup --encrypt

以及:

termux-sync restore

搭配安全的金鑰/密碼處理。

目標是讓遠端備份更安全,即使儲存提供者本身也不完全可信。


模擬還原

我希望進一步建構的另一個功能是還原模擬。

類似於:

termux-sync restore --dry-run

可以顯示:

Termux-Sync Restore Preview

Source:
Backup: phone-migration
Architecture: aarch64

Packages:
✓ python
✓ git
✓ nodejs
✓ rust

Files:
12,421

Potential conflicts:
⚠ ~/.config/example/config.toml

Estimated size:
4.8 GB

No changes were made.

這將允許使用者在修改環境前,了解即將發生的事情。

對於備份工具而言,信任比速度更重要。


Termux-Sync 的目標對象是誰?

Termux-Sync 主要設計給認真使用 Termux 的人。

開發者

如果 Termux 是你的開發環境,遺失它可能意味著失去數小時或數天的設定工作。

進階使用者

擁有自訂 shell、腳本、套件和設定的使用者可以保留他們的環境。

伺服器與自動化使用者

如果你的 Android 裝置執行腳本或自動化工作流程,備份可以讓復原變得更容易。

換手機的人

這可能是最簡單也最有力的使用情境。

「新手機?還原你的 Termux 環境,而不是重建它。」


Termux-Sync 與一般備份的比較

一般備份可能如下所示:

照片
文件
影片
下載項目

Termux 備份看起來更像是:

Termux Environment
├── Packages
├── Home
│ ├── Projects
│ ├── Scripts
│ └── Config
├── /usr/etc
├── Environment
└── Metadata

目標不只是保留資料。

而是保留工作環境。


Termux-Sync + Termux App Store

我還維護另一個名為 Termux App Store 的專案。

這兩個專案解決不同的問題。

          Termux Ecosystem
                 │
      ┌──────────┴──────────┐
      │                     │

Enter fullscreen mode Exit fullscreen mode

Termux App Store Termux-Sync
│ │
Packages Backup
Install Restore
Update Migration
│ │
└──────────┬──────────┘

Termux Environment

Termux App Store 回答:

「我可以安裝哪些軟體?」

Termux-Sync 回答:

「我如何保留我的環境?」

因此,一個典型的工作流程可能是:

安裝套件

設定 Termux

開發專案

Termux-Sync 備份

新裝置

Termux-Sync 還原

繼續工作


為什麼我認為這個問題很重要

Termux 越來越有能力成為一個認真的開發環境。

你可以用它來進行:

  • Python
  • Node.js
  • Rust
  • Git
  • 自動化
  • 伺服器
  • 腳本
  • 網路
  • 開發工具
  • 個人專案

環境越強大,遺失它就越痛苦。

這就是 Termux-Sync 背後的核心原因。

「你越是客製化 Termux,你的環境就越有價值。」

而有價值的環境值得可靠的備份。


更大的願景

我不想讓 Termux-Sync 成為另一個通用的檔案同步工具。

更大的目標是:

Termux Environment Management

這意味著最終能夠:

Backup
Restore
Snapshot
Diff
Verify
Migrate
Encrypt
Automate

同時了解 Termux 環境的特定需求。

想像一下,你可以執行:

termux-sync snapshot create stable

然後:

termux-sync snapshot diff stable latest

最後:

termux-sync restore stable

環境變成你可以管理的東西,而不是必須手動重建的東西。


搜尋「Termux Backup」

還有一個更大的發現問題。

人們經常搜尋以下內容:

how to backup Termux
Termux backup
Termux backup and restore
how to restore Termux
Termux migration
move Termux to a new phone
backup Termux before factory reset
backup Termux packages
backup Termux environment

這些不是假設性的問題。

它們代表使用者遇到的實際問題。

這就是為什麼 Termux-Sync 的定位是圍繞備份、還原和遷移,而不是單純的「同步」。

目標是讓人們在尋找解決方案時,能夠輕鬆發現這個專案。


理念

Termux-Sync 背後的理念很簡單:

「別重建 Termux,直接還原它。」

你的終端機環境應該是可攜式的。

你的設定不應永久綁定在一支手機上。

你的專案不應在裝置遷移後需要數天的手動設定。

而你的備份應該是可以驗證和控制的。


接下來要做什麼?

我接下來想探索的一些領域包括:

  • 加密備份
  • 架構感知遷移
  • 還原模擬
  • 快照管理
  • 備份比較
  • 增量備份
  • 更好的重複資料刪除
  • 改進的復原工作流程
  • 更好的文件
  • 更多儲存後端

優先事項不只是增加更多功能。

優先事項是讓備份和還原安全、可預測且易於理解。


試用 Termux-Sync

使用以下指令安裝:

pkg install python
pip install termux-sync

然後執行:

termux-sync

建立備份:

termux-sync backup

還原備份:

termux-sync restore

取得最新文件和原始碼:

GitHub:
https://github.com/djunekz/termux-sync

PyPI:
https://pypi.org/project/termux-sync/


結語

Termux 為 Android 使用者提供了極其強大的類 Linux 環境。

但一旦你花費數週或數月建立該環境,從頭重新安裝所有內容就會變得很痛苦。

這就是 Termux-Sync 試圖解決的問題。

不只是:

「備份一些檔案。」

而是:

「保留我建立的環境。」

從套件清單和設定到專案和使用者資料,目標是讓 Termux 變得可攜。

所以下次你拿到新手機時,不用想:

「太好了。現在我又得重新設定 Termux 了。」

而是想:

termux-sync restore

別重建 Termux,直接還原它。


專案

GitHub:https://github.com/djunekz/termux-sync

PyPI:https://pypi.org/project/termux-sync/

關鍵字

Termux Sync, Termux backup, Termux restore, Termux migration, Termux backup tool, Termux environment backup, Termux Android backup, backup Termux packages, restore Termux environment, migrate Termux to new phone, Termux backup and restore, Android terminal backup, Termux developer tools, Termux environment migration.