用 duplicity 备份本地数据
六月 29, 2026
软件安装
duplicity 官网:https://duplicity.gitlab.io/
Fedora:
sudo dnf install -y duplicity # 直接确认安装
验证既有备份
挂载备份位置:
sudo sudo mount -t cifs //<backup-server-ip>/NetBackup /mnt/backup -o user=<username>,pass=<password>,domain=WORKGROUP,ro
验证 write 目录的备份状况:
duplicity verify file:///mnt/backup/<hostname>/write ~/write
duplicity 会需要你输入用来给备份加密的 GPG key 的 passphrase。
建立和更新备份
~/.local/bin/backup.sh:
#!/usr/bin/env bash
# Exit immediately if a command exits with a non-zero status
set -e
echo "Starting Duplicity Backup Script..."
export BACKUP_SRC="$HOME/.config/emacs/todo $HOME/pim $HOME/dev $HOME/write"
export BACKUP_DEST="rsync://sanxi@192.168.31.163//volume1/NetBackup/TB14P"
export PASSPHRASE="your_GnuPG_passphrase"
export BACKUP_OPTIONS="--full-if-older-than 1M \
--allow-source-mismatch \
--use-agent \
--encrypt-key E25F623A"
for s in $BACKUP_SRC; do
# you may need to create dirs $BACKUP_DEST/$(basename $s) first
echo "Backing up $s"
duplicity backup $BACKUP_OPTIONS "$s" $BACKUP_DEST/$(basename "$s")
done
duplicity --use-agent remove-older-than 12M "$BACKUP_DEST"
然后用 crontab -e 设置定时运行:
10 * * * * /home/user/.local/bin/backup.sh
当上一次输入 GnuPG 口令的时间超过预设值(默认10分钟),就需要重新输入。在上面配置的条件下,就是每次备份都要输入一次口令,比较麻烦。我修改了 gpg-agent.conf 中的 default-cache-ttl 这个设置,将其设为 86400,这样每天只需要输入一次口令。
Caveat
duplicity 默认用 gpg key 加密,所以对应的 gpg 私钥还得另外备份好,不然就没法查看和恢复备份了。