rclone-backup
Office Web - Source - Docker Image - Document
rclone-backup 是基于 rclone 的 Docker 定时备份解决方案,支持多目标备份和灵活的配置管理。
使用教程
常用 cron 表达式
0 2 * * *- 每天凌晨2点0 3 * * 0- 每周日凌晨3点0 1 1 * *- 每月1号凌晨1点*/30 * * * *- 每30分钟
查看日志
bash
# 测试日志功能(首次使用建议运行)
docker exec rclone-backup /app/scripts/test-logging.sh
# 查看备份日志
docker exec rclone-backup tail -f /var/log/backup/backup.log
# 查看同步日志
docker exec rclone-backup tail -f /var/log/backup/sync.log
# 查看 cron 日志
docker exec rclone-backup tail -f /var/log/backup/cron.log
# 查看容器日志
docker logs -f rclone-backup
# 查看所有日志文件
docker exec rclone-backup ls -la /var/log/backup/手动执行任务
bash
# 执行特定的备份任务
docker exec rclone-backup /app/scripts/backup-job.sh "documents_backup"
# 执行特定的同步任务
docker exec rclone-backup /app/scripts/sync-job.sh "documents_sync"
# 创建自定义 Hook
docker exec rclone-backup /app/scripts/create-hook.sh pre-backup compress-photos
# 测试 Hook 功能
docker exec rclone-backup /app/scripts/test-hooks.sh管理 rclone 配置
bash
# 查看已配置的远程
docker exec rclone-backup rclone listremotes
# 测试连接
docker exec rclone-backup rclone lsd gdrive:
# 重新配置
docker exec rclone-backup rclone config配置参数说明
备份任务 (backup_jobs)
name: 备份任务名称enabled: 是否启用此任务source_path: 源目录路径backup_mode: 备份模式copy: 只复制新文件和更新的文件 (推荐,默认)sync: 完全同步,会删除目标中不存在于源的文件
targets: 备份目标列表remote: rclone 配置的远程名称path: 远程路径enabled: 是否启用此目标
schedule: cron 表达式 (分 时 日 月 周)options: rclone 命令选项 (推荐使用--update,只复制更新的文件)hooks: Hook 脚本配置(可选)pre_backup: 备份前执行的脚本post_backup: 备份后执行的脚本- Hook 配置参数:
enabled: 是否启用此 Hookscript: Hook 脚本路径timeout: 脚本执行超时时间(秒)fail_on_error: 脚本失败时是否终止备份任务description: Hook 描述(可选)
同步任务 (sync_jobs)
name: 同步任务名称enabled: 是否启用此任务destination_path: 本地目标目录路径sources: 同步源列表remote: rclone 配置的远程名称path: 远程路径enabled: 是否启用此源
schedule: cron 表达式 (分 时 日 月 周)sync_mode: 同步模式copy: 只复制新文件和更新的文件 (推荐)sync: 完全同步,会删除目标中不存在于源的文件
options: rclone 命令选项 (推荐使用--update,只复制更新的文件)
配置文件 config.json
json
{
"backup_jobs": [
{
"name": "documents_backup",
"enabled": true,
"source_path": "/data/documents",
"backup_mode": "copy",
"targets": [
{
"remote": "gdrive",
"path": "backup/documents",
"enabled": true
}
],
"schedule": "0 2 * * *",
"options": [
"--progress",
"--transfers=4",
"--checkers=8",
"--update"
],
"hooks": {
"pre_backup": {
"enabled": true,
"script": "/app/hooks/compress-backup.sh",
"timeout": 1800,
"fail_on_error": true,
"description": "压缩备份目录为 tar.xz 格式"
},
"post_backup": {
"enabled": true,
"script": "/app/hooks/cleanup-compressed.sh",
"timeout": 60,
"fail_on_error": false,
"description": "清理临时压缩文件"
}
}
}
],
"sync_jobs": [
{
"name": "documents_sync",
"enabled": true,
"destination_path": "/data/synced/documents",
"sources": [
{
"remote": "gdrive",
"path": "shared/documents",
"enabled": true
}
],
"schedule": "0 1 * * *",
"sync_mode": "copy",
"options": [
"--progress",
"--transfers=4",
"--checkers=8",
"--update"
]
}
]
}