gantsign.backup
Ansible 角色:备份
这个角色用于备份和恢复文件和目录。使用 rsync,但旨在与本地挂载的备份驱动器一起使用。
在配置期间,此角色将恢复任何先前备份的文件和目录。重启后,操作系统每5分钟和在关机时会进行增量备份。
备份是源目录的简单镜像,先前的文件版本将被丢弃。其主要目的是在重建本地开发虚拟机时保持文件的持久性。如果您不能承受丢失/替换文件,建议使用远程备份解决方案,并确保有版本控制。
此角色主要用于备份和恢复用户主目录的内容。
要求
Ansible >= 2.9
Linux 发行版
Debian 家族
Ubuntu
- Bionic (18.04)
- Focal (20.04)
注意:其他版本可能有效,但未经过测试。
角色变量
以下变量将改变此角色的行为:
# 进行备份的频率(分钟)
backup_frequency_minutes: 5
# 拥有要备份/恢复文件的用户
backup_user: # 必填
# 包含要备份的文件的源目录(必须以 / 结尾)
backup_src: # 必填
# 将文件备份到的目标目录(必须以 / 结尾)
backup_dest: # 必填
# rsync 文件/目录的包含/排除过滤器
backup_filter: |
!
# 包括所有内容
+ /*
# 备份脚本的目录
backup_script_dir: '~/.backup'
# 用于 cron 的名称
backup_cron_name: backup
# 用于 systemd 服务的名称
backup_service_name: backup
示例剧本
下面是一个简单的示例剧本:
- hosts: servers
roles:
- role: gantsign.backup
backup_user: example_username
backup_src: /home/example_username/
backup_dest: /mnt/backup/example_username/
backup_filter: |
# 重置过滤器
!
# 包括文件/目录
+ /include_me
# 包括子目录(仅在要排除其他子目录时需要)
+ /include_me/me_as_well
# 排除除了 me_as_well 以外的所有内容
- /include_me/*
# 通过文件/目录名排除
- tmp
# 排除其他所有内容
- /*
以下是一个实际的示例剧本:
- hosts: servers
roles:
- role: gantsign.backup
backup_user: vagrant
backup_src: /home/vagrant/
backup_dest: /var/persistent/home/vagrant/
backup_filter: |
!
+ /.atom
+ /.atom
+ /.atom/config.cson
- /.atom/*
+ /.bash_history
+ /.config
+ /.config/Code
+ /.config/Code/User
+ /.config/Code/User/settings.json
- /.config/Code/User/*
- /.config/Code/*
- /.config/*
+ /.gitconfig
+ /.gnupg
+ /.m2
- /.m2/repository
- /.m2/wrapper
+ /.ssh
- /.ssh/authorized_keys
+ /workspace
+ /.zsh_history
- target/*
- build/*
- node_modules
- /*
来自 GantSign 的更多角色
您可以在 Ansible Galaxy 上找到 GantSign 的更多角色。
开发与测试
本项目使用 Molecule 来帮助开发和测试;该角色使用 Testinfra 和 pytest 进行单元测试。
要开发或测试,您需要安装以下软件:
由于上述软件安装可能会比较棘手,本项目包含 Molecule Wrapper。Molecule Wrapper 是一个安装 Molecule 及其依赖项(除了 Linux)并执行您传递的命令的 Shell 脚本。
要使用 Molecule Wrapper 测试此角色,请从项目根目录运行以下命令:
./moleculew test
注意:某些依赖项需要 sudo
权限才能安装。
许可证
MIT
作者信息
John Freeman
GantSign Ltd. 公司编号:06109112(在英格兰注册)