要在远程 SFTP 服务器上实现加密存储备份(即“零知识备份”,服务器端只能看到加密的乱码,没有密码绝对无法还原),最推荐的现代开源工具是 Restic。
Restic 是一个用 Go 语言编写的备份工具。它天然支持原生 SFTP 协议,且默认强制使用 AES-256 进行客户端本地加密。不仅如此,它还支持增量备份和数据去重,非常节省远程空间和带宽。
以下是在你的 Linux 系统(如 Manjaro 或 Debian)上使用 Restic 进行 SFTP 加密备份的完整步骤:
前置准备:配置 SSH 免密登录(强烈推荐)
为了让备份过程顺畅(以及后续自动化),请确保你的本地机器可以通过 SSH 密钥免密码登录到远程 SFTP 服务器:
# 如果本地还没有生成过密钥,执行此命令(一路回车)
ssh-keygen -t ed25519
# 将本地密钥推送到远程 SFTP 服务器
ssh-copy-id [email protected]
Restic 加密备份流程
- 安装 Restic:
根据你当前的系统,使用包管理器安装:
# 在 Manjaro / Arch Linux 上:
sudo pacman -S restic
# 在 Debian / Ubuntu 上:
sudo apt update && sudo apt install restic
- 初始化远程加密仓库: 这是加密的核心步骤,密码一旦丢失,备份数据将永远无法恢复.
你需要告诉 Restic 远程 SFTP 的地址和路径,并为这个备份仓库设置一个高强度的加密密码。
restic -r sftp:[email protected]:/path/to/remote/backup init
执行后,终端会要求你输入并确认一个仓库密码(Repository Password)。请务必将此密码保存在密码管理器中。
- 执行第一次备份: 将本地数据加密并上传.
假设你要备份本地的/home/user/documents目录,执行以下命令:
restic -r sftp:[email protected]:/path/to/remote/backup backup /home/user/documents
系统会要求你输入刚刚设置的仓库密码。Restic 会在本地将文件切块、去重、加密,然后通过 SFTP 传输。后续再次运行这行命令时,就是极速增量备份了。
- 查看和管理备份快照 (Snapshots):
Restic 每次备份都会生成一个唯一的快照 ID。你可以列出所有的备份记录:
restic -r sftp:[email protected]:/path/to/remote/backup snapshots
- 如何恢复数据: 将加密数据拉回本地并解密.
如果需要恢复最新的一次备份到本地的/tmp/restore_folder目录:
restic -r sftp:[email protected]:/path/to/remote/backup restore latest --target /tmp/restore_folder
💡 专家建议:避免每次输入密码
在实际使用中,每次备份都手动输入仓库密码非常麻烦。你可以将密码保存在一个文本文件里(例如 ~/.restic_password),并严格限制权限:
echo "你的高强度密码" > ~/.restic_password
chmod 600 ~/.restic_password
然后在备份时通过 --password-file 参数自动读取:
restic -r sftp:[email protected]:/path/to/remote/backup backup /home/user/documents --password-file ~/.restic_password