keep weekly weblate backups on backup01

This commit is contained in:
Francois Andrieu 2021-08-22 23:56:33 +02:00 committed by kevin
parent 95bb3249e6
commit e0941ac2de
5 changed files with 100 additions and 0 deletions

View file

@ -7,6 +7,7 @@ datacenter: iad2
ansible_ifcfg_blocklist: true
grokmirror_topdir: /fedora_backups/grokmirror
weblate_backup_topdir: /fedora_backups/misc/weblate
dns1: 10.3.163.33
dns2: 10.3.163.34

View file

@ -27,6 +27,7 @@
nfs_mount_opts: "rw,hard,bg,intr,noatime,nodev,nosuid,sec=sys,nfsvers=3",
nfs_src_dir: 'fedora_backups' }
- grokmirror_mirror
- weblate_backup
pre_tasks:
- import_tasks: "{{ tasks_path }}/yumrepos.yml"

View file

@ -0,0 +1,62 @@
- name: Install packages
package:
name:
- borgbackup
state: present
tags:
- weblate_backup
- name: Create a non root user to run the code
user:
name: _backup_weblate
tags:
- weblate_backup
- name: Copy private key
copy:
src: "{{ private }}/files/weblate/id_rsa"
dest: ~_backup_weblate/.ssh/id_rsa
owner: _backup_weblate
group: _backup_weblate
mode: 0600
tags:
- weblate_backup
- name: Copy passphrase file
copy:
src: "{{ private }}/files/weblate/borg_passphrase"
dest: ~_backup_weblate/.borgpass
owner: _backup_weblate
group: _backup_weblate
mode: 0600
tags:
- weblate_backup
- name: Install backup script
template:
src: weblate-backup
dest: /usr/local/bin/weblate-backup
owner: root
group: root
mode: 0755
tags:
- weblate_backup
- name: Setup cron job
template:
src: cron-weblate-backup
dest: /etc/cron.d/cron-weblate-backup
owner: root
group: root
mode: 0644
tags:
- weblate_backup
- name: Create directory to mirror backups to
file:
dest: "{{ weblate_backup_topdir }}"
mode: 0755
state: directory
owner: _backup_weblate
tags:
- weblate_backup

View file

@ -0,0 +1 @@
0 2 * * 0 _weblate_backup /usr/local/bin/weblate-backup

View file

@ -0,0 +1,35 @@
#!/bin/bash
pass_file=~/.borgpass
backup_prefix=weblate_backup
dest_backup={{ weblate_backup_topdir }}
dest_backup_file=${dest_backup}/${backup_prefix}_$(date +%Y%m%d%H%M%S).tar.gz
export BORG_RSH="ssh -o StrictHostKeyChecking=no"
export BORG_REPO="ssh://u164666-sub8@u164666-sub8.your-storagebox.de:23/./backups"
#############################
if [ ! -f "$pass_file" ]; then
echo "Passphrase file not found!"
exit 1
fi
export BORG_PASSCOMMAND="cat $pass_file"
echo "* listing backup ..."
last_backup=$(borg list --last 1 | awk '{print $1}')
if [ -z "$last_backup" ]; then
echo "* no backup found"
exit 1
fi
echo "* last backup is $last_backup"
echo "* extracting backup to $dest_backup ..."
borg export-tar ::$last_backup $dest_backup_file
echo "* extraction complete"
echo "* purging old backups ..."
# 56 days = 8 weeks
find ${dest_backup} -name ${backup_prefix}\*.gz -ctime +56 -exec rm -v {} \;
echo "* purge complete"