1179 字
6 分钟
rdiff-backup 反向增量备份
📋 rdiff-backup 2.x 新版语法结构
基本语法格式
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 |
完整备份示例:
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 |
使用示例:
# 列出所有备份点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 3D | 3天前 | restore --at 3D /backup /restore |
--at 2W | 2周前 | restore --at 2W /backup /restore |
--at 1M | 1个月前 | 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 |
恢复示例:
# 恢复到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 |
使用示例:
# 查看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 |
清理示例:
# 删除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 |
3D | 3天前 | --at 3D |
2W | 2周前 | --at 2W |
1M | 1个月前 | --at 1M |
5B | 第5个备份点 | --at 5B |
2024-11-20T10:00:00 | 精确时间 | --at "2024-11-20T10:00:00" |
1234567890 | 时间戳 | --at 1234567890 |
🛠️ 实用脚本模板
完整备份脚本
#!/bin/bashBACKUP_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 1fi
echo "备份结束: $(date)"恢复脚本
#!/bin/bashBACKUP_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 初始化新仓库 |
| 权限错误 | 确保对源目录有读权限,目标目录有写权限 |
| 符号链接问题 | 使用物理路径而非符号链接路径 |
验证备份完整性
# 验证备份仓库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/