Skip to content

突破限制:用 Termux 和 rsync 实现 Android 文件的真正增量备份

你是否遇到过这样的烦恼?家里的 NAS 功能强大,但其官方 Android 客户端却往往“偏科”严重——只提供照片备份功能,对于手机里的其他文件,如音乐、文档、下载内容等,要么不支持备份,要么只能让你手动选择并全量上传。这种“一刀切”的备份方式效率极低,尤其是在文件稍作修改后,你无法判断哪些文件变了,只能选择全部覆盖,既浪费时间又消耗带宽。

本文将介绍如何利用 Android 上的终端神器 Termux 和强大的同步工具 rsync,打造一个灵活、高效、真正意义上的增量备份方案,将手机上的任意文件备份到你的 NAS 或 Linux 服务器。

一、前提与痛点:为什么需要自己动手?

1. NAS 客户端的功能局限 大多数 NAS 厂商的开发重心显然在照片和视频上。他们的 App 能智能识别相册新增内容并进行增量备份。但对于 /Music/, /Documents/ 等目录,它们通常只提供一个简单的“文件管理器”式界面,备份依赖于手动上传,缺乏自动化的增量同步机制。

2. “全量覆盖”的效率困境 手动备份意味着你需要记住哪些文件被修改过。如果只是为几首新歌或一个编辑过的文档而重新上传整个文件夹,这种操作无疑是低效且不可持续的。我们需要的是一种类似 git 或数据库增量备份的智能方式:只传输发生变化的部分

3. 解决方案的曙光:Linux 工具的力量 幸运的是,在 Linux/Unix 世界里,rsync 工具正是解决此问题的黄金标准。它通过比较源文件和目标文件的元数据(如修改时间、大小)或校验和,来精确识别差异,实现增量同步。而 Termux 这个 Android 应用,则提供了一个完美的环境,让我们能在手机上运行这些强大的命令行工具。

二、实战方案:如何搭建手动触发的增量备份通道

整个方案的核心是:在 Termux 中配置 rsync,并通过 SSH 免密登录连接到你的 NAS,实现“一键式”手动增量同步。 这种方式避免了 App 后台保活的问题,更加稳定可靠。

步骤 1:环境准备 (Termux)

  1. 安装 Termux:从 F-Droid 官方渠道安装。
  2. 安装必要软件:打开 Termux,执行:
    bash
    pkg update
    pkg install rsync openssh
  3. 申请存储权限:允许 Termux 访问手机存储。
    bash
    termux-setup-storage
    执行后,你的手机存储空间会符号链接到 Termux 的 ~/storage/shared 目录。

步骤 2:建立到 NAS 的信任关系 (SSH 免密登录)

这是实现高效同步的关键。我们使用 SSH 密钥进行认证,省去每次备份都要输密码的麻烦。

  1. 在 Termux 中生成密钥对

    bash
    ssh-keygen -t ed25519

    连续按回车,使用默认路径和空密码(如果追求安全性,可以设置密码,但同步时需要手动输入)。

  2. 将公钥上传到 NAS

    bash
    ssh-copy-id -p 22 your_username@your_nas_ip_address

    例如:ssh-copy-id admin@192.168.1.100。这需要你输入一次 NAS 的登录密码。

  3. 测试免密登录

    bash
    ssh admin@192.168.1.100

    如果可以直接登录 NAS,说明配置成功。

步骤 3:编写并保存 rsync 备份脚本

我们将命令保存为脚本,方便每次调用,避免重复输入。

  1. 创建备份脚本

    bash
    nano ~/backup-music.sh
  2. 在脚本中写入以下内容

    bash
    #!/bin/bash
    echo "$(date): 开始同步音乐库..."
    rsync -avzP \
      --delete \
      -e ssh \
      /data/data/com.termux/files/home/storage/shared/Music/ \
      admin@192.168.1.100:/mnt/user/backup/Android/Music/
    
    # 可以根据需要添加更多同步命令
    # echo "$(date): 开始同步文档..."
    # rsync -avzP .../Documents/ .../Android/Documents/
    
    echo "$(date): 同步任务完成。"

    参数解析:

    • -avzP:归档模式(保留属性、递归同步) + 压缩传输 + 显示进度。
    • --delete:同步时,删除 NAS 上那些手机里已经不存在的文件(谨慎使用,建议先不加此参数测试)。
    • -e ssh:指定使用 SSH 协议。
  3. 给脚本添加执行权限

    bash
    chmod +x ~/backup-music.sh

步骤 4:如何执行备份(手动触发)

当需要备份时,你只需要:

  1. 打开 Termux App。
  2. 运行你写好的脚本:
    bash
    ~/backup-music.sh
  3. 屏幕上会实时显示同步进度和文件列表,完成后即可退出 Termux。

这种方式的优势:

  • 主动控制:你可以在连接 WiFi 和充电时手动执行,确保备份过程稳定、不耗移动数据。
  • 状态可见:实时看到哪些文件被传输,心中有数。
  • 无需保活:不依赖 Android 系统的后台机制,避免了被系统“杀掉”的风险,更加稳定。

三、总结与优势

通过这个简单的组合,我们成功打破了 NAS 官方客户端的限制,获得了以下优势:

  1. 真正的增量备份:rsync 的核心能力,只同步变化的文件,极大节省时间和流量,彻底告别全量覆盖。
  2. 全文件类型支持:不再局限于照片,音乐、文档、下载内容,任何文件夹都能备份。
  3. 极高的灵活性与可控性:你可以通过修改 rsync 参数实现各种策略,如排除特定文件 (--exclude="*.tmp")、基于内容校验 (--checksum) 等。手动触发让你完全掌控备份时机。
  4. 成本低廉且稳定:完全利用现有工具,无需购买额外服务。手动执行避免了 App 后台运行的种种限制,成功率更高。

这种方法将 Android 设备融入了更强大的 Linux 工具生态,让你真正掌控自己的数据。如果你也苦于手机文件备份的难题,不妨尝试一下这个高效、优雅的解决方案。只需在需要备份时点开 Termux,执行一条命令,即可轻松搞定。

Released under the MIT License.