papanito.borg
Ansible 角色 "papanito.borg"
Ansible 角色用于安装和设置使用 borg 的定期备份。该角色执行以下操作:
[可选] 删除现有的备份库
在
protocol
://backup_server
:target_dir
或target_dir
初始化一个备份库注意
如果备份库的
target_dir
已经存在,初始化将被跳过。 如果未指定backup_server
,则角色将假设为本地备份,即备份到本地目录。创建一个
systemd
服务,定期根据backup_schedule
运行脚本borg.sh
,脚本来自 borgbackup.org。在
/opt/borg_backup
中会有一个名为automatic-backup-{{service_name}}.sh
的个别 borg 脚本,将根据以下内容进行定制:backup_source_dir
backup_exclude_file
或backup_exclude_list
backup_schedule
需求
无
角色变量
以下是所有变量:
参数 | 描述 | 默认值 |
---|---|---|
backup_server |
备份服务器的名称 - 如果未定义,假定为本地备份 | - |
backup_user |
用于连接到服务器的用户名 | - |
backup_port |
连接到 backup_server 的端口 |
- |
protocol |
用于连接到 backup_server 的协议 |
ssh |
backup_name |
[必填] 备份名称 | |
backup_encryption_key |
[必填] 使用 repokey 的加密密钥口令 |
- |
backup_encryption_method |
Borg 加密方法,目前仅实现 repokey |
repokey |
target_dir |
备份在 backup_server 上的目标目录 |
"./backups/{{ backup_name }}" |
backup_delete |
警告 如果设置为 true ,则现有的备份库将被 删除 |
false |
backup_create |
创建备份库。可以通过运行 -e backup_delete=true -e backup_create=false 来显式删除现有的 repository |
true |
backup_schedule |
每日备份运行的 systemd 日程标记 | *-*-* 03:00:00 |
backup_include_list |
要备份的源目录列表 | - |
backup_exclude_file |
EXCLUDEFILE 包含排除模式优先于 backup_exclude_list |
- |
backup_exclude_list |
将作为 --exclude 'PATTERN' 添加的模式列表 |
- |
以下参数与 systemd 服务文件相关:
参数 | 描述 | 默认值 |
---|---|---|
systemd_target_dir |
复制 .service 文件的位置 |
/etc/systemd/system/ |
borg_systemd_user |
systemd 服务的用户 | backup |
borg_systemd_group |
systemd 服务的组 | backup |
borg_systemd_on_failure |
如果设置,将在服务文件中创建 [OnFailure] 条目 | - |
systemd_script_mode |
脚本文件的权限模式 | 0774 |
systemd_service_mode |
服务文件的权限模式 | 0644 |
部署的脚本还定义了 prune
的选项,详见 borg prune。期望数字的值如果未定义,则不提供该选项。
参数 | 描述 | 默认值 |
---|---|---|
backup_prune_dryrun |
-n, --dry-run 不更改备份库 |
false |
backup_prune_force |
--force 强制删除损坏的档案 |
false |
backup_prune_stats |
-s, --stats 打印已删除档案的统计信息 |
true |
backup_prune_list |
--list 输出保留/删除的档案的详细列表 |
true |
backup_prune_keep_within |
--keep-within INTERVAL 在此时间间隔内保留所有档案 |
- |
backup_prune_keep_last |
--keep-last, --keep-secondly 要保留的第二个档案的数量 |
- |
backup_prune_keep_minutely |
--keep-minutely 要保留的每分钟档案的数量 |
- |
backup_prune_keep_hourly |
-H, --keep-hourly 要保留的每小时档案的数量 |
- |
backup_prune_keep_daily |
-d, --keep-daily 要保留的每日档案的数量 |
- |
backup_prune_keep_weekly |
-w, --keep-weekly 要保留的每周档案的数量 |
- |
backup_prune_keep_monthly |
-m, --keep-monthly 要保留的每月档案的数量 |
- |
backup_prune_keep_yearly |
-y, --keep-yearly 要保留的每年档案的数量 |
- |
backup_prune_save_space |
--save-space 运行速度较慢,但使用更少的空间 |
false |
为了保护敏感信息,建议使用 ansible-vault
。
可以在 ansible.cfg
文件中定义密码文件,这样无需指定 vault 参数。因此,您可以按如下方式创建加密变量 backup_encryption_key
:
ansible-vault encrypt_string 'SupersecretPa$$phrase' --name 'backup_encryption_key'
依赖关系
无
示例
示例 Playbook 远程备份
包括如何使用您的角色的示例(例如,将变量作为参数传递)对用户来说总是很好的:
- hosts: localhost
vars:
- backup_server: borg.intra
- backup_user: borguser
- backup_name: mybackupname
- backup_encryption_key: test
- backup_port: 23
- target_dir: "/var/backups/"
- backup_schedule: "*-*-* 03:00:00"
- backup_exclude_list:
- "*/Downloads"
- "*/google-chrome*"
- backup_include_list:
- /home/papanito
- backup_prune_keep_daily: 7
- backup_prune_keep_weekly: 5
- backup_prune_keep_monthly: 6
- backup_prune_keep_yearly: 1
roles:
- role: papanito.borg
这将在 ssh://[email protected]:/var/backup/mybackupname
创建备份,并生成以下 systemd 文件:
/opt/borg_backup/automatic-backup-mybackupname-borg.intra.sh
(备份脚本)/etc/systemd/system/automatic-backup-mybackupname-borg.intra.service
(systemd 服务文件)/etc/systemd/system/automatic-backup-mybackupname-borg.intra.timer
(systemd 定时器文件)
示例 Playbook 本地备份
包括如何使用您的角色的示例(例如,将变量作为参数传递)对用户来说总是很好的:
- hosts: localhost
vars:
- backup_name: mybackupname
- backup_encryption_key: test
- target_dir: "/var/backup/"
- backup_schedule: "*-*-* 03:00:00"
- backup_exclude_list:
- "*/Downloads"
- "*/google-chrome*"
- backup_include_list:
- /home/papanito
- backup_prune_keep_daily: 7
- backup_prune_keep_weekly: 5
- backup_prune_keep_monthly: 6
- backup_prune_keep_yearly: 1
这将在 /var/backup/mybackupname
创建备份,并生成以下 systemd 文件:
/opt/borg_backups/automatic-backup-mybackupname-local.sh
(备份脚本)/etc/systemd/system/automatic-backup-mybackupname-local.service
(systemd 服务文件)/etc/systemd/system/automatic-backup-mybackupname-local.timer
(systemd 定时器文件)
许可证
这是自由软件,采用 Apache v2 许可证进行发布。
作者信息
ansible-galaxy install papanito.borg