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: имя_пользователя
backup_src: /home/имя_пользователя/
backup_dest: /mnt/backup/имя_пользователя/
backup_filter: |
# Сбросить фильтр
!
# Включить файл/директорию
+ /включи_меня
# Включить подкаталог (только если нужно исключить другие подкаталоги)
+ /включи_меня/тоже_меня
# Исключить всё, кроме меня_как_то
- /включи_меня/*
# Исключить по имени файла/директории
- 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
Вы можете найти больше ролей от GantSign на Ansible Galaxy.
Разработка и тестирование
Этот проект использует Molecule для поддержки разработки и тестирования; роль проходит модульное тестирование с помощью Testinfra и pytest.
Для разработки или тестирования вам нужно установить следующее:
Так как установка вышеуказанного может быть сложной, этот проект включает Обертку для Molecule. Обертка для Molecule — это shell-скрипт, который устанавливает Molecule и его зависимости (кроме Linux), а затем выполняет Molecule с командой, которую вы ему передаете.
Чтобы протестировать эту роль с помощью Обертки для Molecule, выполните следующую команду из корневой директории проекта:
./moleculew test
Примечание: для установки некоторых зависимостей нужны права sudo
.
Лицензия
MIT
Информация об авторе
Джон Фримен
GantSign Ltd. Компания № 06109112 (зарегистрирована в Англии)
ansible-galaxy install gantsign/ansible_role_backup