1179 字
6 分钟
rdiff-backup 反向增量备份

📋 rdiff-backup 2.x 新版语法结构#

基本语法格式#

Terminal window
rdiff-backup [全局选项...] <动作> [子选项...] [路径...]

🔧 常用动作详解#

备份 (backup)#

命令说明示例
rdiff-backup backup <源目录> <目标目录>基本备份rdiff-backup backup /home/user /backup
--exclude <模式>排除文件/目录--exclude "/home/user/tmp"
--include <模式>包含文件/目录--include "/home/user/important"
--print-statistics显示备份统计backup --print-statistics
--compression启用压缩(默认)backup --compression
--no-compression禁用压缩backup --no-compression

完整备份示例:

Terminal window
rdiff-backup --api-version 201 backup \
--exclude "/home/mint/Documents/xwechat_files" \
--print-statistics \
"/home/mint/Documents" \
"/media/mint/H/Documents_backup"

列出备份点 (list increments)#

命令说明示例
rdiff-backup list increments <备份目录>列出所有备份点list increments /backup
--size显示备份点大小list increments --size /backup
--no-size不显示大小(默认)list increments --no-size /backup
--parsable-output机器可读格式list increments --parsable-output /backup

使用示例:

Terminal window
# 列出所有备份点
rdiff-backup --api-version 201 list increments "/media/mint/H/Documents_backup"
# 显示备份点大小
rdiff-backup --api-version 201 list increments --size "/media/mint/H/Documents_backup"

恢复文件 (restore)#

命令说明示例
rdiff-backup restore --at <时间> <源目录> <目标目录>恢复到指定时间restore --at 3D /backup /restore
--at now最新状态restore --at now /backup /restore
--at 3D3天前restore --at 3D /backup /restore
--at 2W2周前restore --at 2W /backup /restore
--at 1M1个月前restore --at 1M /backup /restore
--at 2024-11-20T10:00:00精确时间restore --at "2024-11-20T10:00:00" /backup /restore
--at 5B第5个备份点restore --at 5B /backup /restore

恢复示例:

Terminal window
# 恢复到3天前的状态
rdiff-backup --api-version 201 restore \
--at 3D \
"/media/mint/H/Documents_backup" \
"/home/mint/Documents_restored"
# 恢复到特定日期
rdiff-backup --api-version 201 restore \
--at "2024-11-20T10:00:00" \
"/media/mint/H/Documents_backup" \
"/home/mint/Documents_old"

查看文件列表 (list files)#

命令说明示例
rdiff-backup list files --at <时间> <备份目录>查看特定时间点的文件list files --at 1D /backup
list files --changed-since <时间> <备份目录>查看自某时间后变化的文件list files --changed-since 2D /backup

使用示例:

Terminal window
# 查看3天前的文件列表
rdiff-backup --api-version 201 list files \
--at 3D \
"/media/mint/H/Documents_backup"
# 查看最近2天内变化的文件
rdiff-backup --api-version 201 list files \
--changed-since 2D \
"/media/mint/H/Documents_backup"

清理旧备份 (remove increments)#

命令说明示例
rdiff-backup remove increments --older-than <时间> <备份目录>删除旧备份点remove increments --older-than 30D /backup
--force强制删除多个会话remove increments --older-than 30D --force /backup
--size显示删除的备份大小remove increments --older-than 30D --size /backup

清理示例:

Terminal window
# 删除30天前的备份点
rdiff-backup --api-version 201 remove increments \
--older-than 30D \
"/media/mint/H/Documents_backup"
# 强制删除60天前的所有备份点
rdiff-backup --api-version 201 remove increments \
--older-than 60D \
--force \
"/media/mint/H/Documents_backup"

⚙️ 重要全局选项#

选项说明示例
--api-version 201使用新版API--api-version 201
--force强制操作(如覆盖目录)--force
--verbosity <0-9>设置详细级别--verbosity 5
--terminal-verbosity <0-9>终端输出详细级别--terminal-verbosity 3
--null-separator使用null分隔符--null-separator

📁 文件选择选项#

排除/包含模式#

选项说明示例
--exclude <模式>排除匹配的文件--exclude "*.tmp"
--include <模式>包含匹配的文件--include "*.doc"
--exclude-filelist <文件>从文件读取排除列表--exclude-filelist excludes.txt
--include-filelist <文件>从文件读取包含列表--include-filelist includes.txt

特殊文件处理#

选项说明示例
--include-special-files包含设备文件等特殊文件--include-special-files
--exclude-special-files排除特殊文件--exclude-special-files
--max-file-size <大小>限制备份文件最大尺寸--max-file-size 1G

🕒 时间格式说明#

格式说明示例
now当前时间--at now
3D3天前--at 3D
2W2周前--at 2W
1M1个月前--at 1M
5B第5个备份点--at 5B
2024-11-20T10:00:00精确时间--at "2024-11-20T10:00:00"
1234567890时间戳--at 1234567890

🛠️ 实用脚本模板#

完整备份脚本#

complete_backup.sh
#!/bin/bash
BACKUP_DIR="/media/mint/H/Documents_backup"
SOURCE_DIR="/home/mint/Documents"
echo "开始备份: $(date)"
# 执行备份
rdiff-backup --api-version 201 \
backup \
--exclude "/home/mint/Documents/xwechat_files" \
--exclude "**/cache" \
--exclude "**/tmp" \
--print-statistics \
"$SOURCE_DIR" "$BACKUP_DIR"
if [ $? -eq 0 ]; then
echo "备份成功完成"
# 显示备份点信息
echo "=== 备份点列表 ==="
rdiff-backup --api-version 201 list increments "$BACKUP_DIR"
echo "=== 备份点大小 ==="
rdiff-backup --api-version 201 list increments --size "$BACKUP_DIR"
# 清理60天前的备份
rdiff-backup --api-version 201 remove increments \
--older-than 60D \
"$BACKUP_DIR"
else
echo "备份失败!"
exit 1
fi
echo "备份结束: $(date)"

恢复脚本#

restore_backup.sh
#!/bin/bash
BACKUP_DIR="/media/mint/H/Documents_backup"
echo "可用的备份点:"
rdiff-backup --api-version 201 list increments "$BACKUP_DIR"
read -p "输入要恢复的时间点 (如 3D, 1W, 或时间戳): " restore_time
RESTORE_DIR="/home/mint/Documents_restored_$(date +%Y%m%d_%H%M%S)"
echo "正在恢复到: $RESTORE_DIR"
rdiff-backup --api-version 201 restore \
--at "$restore_time" \
"$BACKUP_DIR" "$RESTORE_DIR"
echo "恢复完成到: $RESTORE_DIR"

🔍 故障排除#

常见问题解决#

问题解决方案
”invalid choice” 错误确保选项在动作之前,动作在路径之前
备份目录不存在使用 --force 初始化新仓库
权限错误确保对源目录有读权限,目标目录有写权限
符号链接问题使用物理路径而非符号链接路径

验证备份完整性#

Terminal window
# 验证备份仓库
rdiff-backup --api-version 201 verify "/media/mint/H/Documents_backup"
# 比较当前目录与备份
rdiff-backup --api-version 201 compare \
--at 1D \
"/home/mint/Documents" \
"/media/mint/H/Documents_backup"

这些命令基于 rdiff-backup 2.x 的新语法,避免了弃用警告,并提供了完整的备份、恢复和管理功能。

rdiff-backup 反向增量备份
http://8.148.86.53/posts/rdiff-backup/
作者
Mint
发布于
2025-11-20
许可协议
CC BY-NC-SA 4.0