init commit borg
This commit is contained in:
1 parent
36ed650628
commit
f2387d325c
14 files changed
+98
-292
No files matched your search
@@ -1,68 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e -o pipefail
|
||||
|
||||
cd {{ backup_folder }}
|
||||
if [ -f {{ backup_lock }} ]; then
|
||||
echo "Backup lock! Cannot procceed as lock '{{ backup_lock }}' exist."
|
||||
echo "Associated PID is $(cat {{ backup_lock }})"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "$$" > {{ backup_lock }}
|
||||
BKPTIMESTAMP=$(date +"%y-%m-%d.%H")
|
||||
BKP=$BKPTIMESTAMP"_backup"
|
||||
|
||||
|
||||
# generate rolling folder
|
||||
{% for target in backup_targets %}
|
||||
{% for host in backup_hosts %}
|
||||
{% if 'domain' in host %}
|
||||
mkdir -p {{ target }}/{{ host.name + '_' + host.domain }}/$BKP
|
||||
{% elif 'ip' in host %}
|
||||
mkdir -p {{ target }}/{{ host.name + '_' + host.ip }}/$BKP
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
|
||||
# pull backups
|
||||
{% for target in backup_targets %}
|
||||
{% for host in backup_hosts %}
|
||||
{% if 'domain' in host %}
|
||||
rsync --rsh='ssh -p{{ ssh_port }} -i ~{{ backup_owner }}/.ssh/id_rsa' -chav --stats --ignore-missing-args {{ backup_owner }}@{{ host.domain }}:{{ backup_folder }}/{{ target }}.tgz {{ target }}/{{ host.name + '_' + host.domain }}/$BKP
|
||||
{% elif 'ip' in host %}
|
||||
rsync --rsh='ssh -p{{ ssh_port }} -i ~{{ backup_owner }}/.ssh/id_rsa' -chav --stats --ignore-missing-args {{ backup_owner }}@{{ host.ip }}:{{ backup_folder }}/{{ target }}.tgz {{ target }}/{{ host.name + '_' + host.ip }}/$BKP
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
|
||||
# link to latest
|
||||
{% for target in backup_targets %}
|
||||
{% for host in backup_hosts %}
|
||||
{% if 'domain' in host %}
|
||||
ln -sf {{ backup_folder }}/{{ target }}/{{ host.name + '_' + host.domain }}/$BKP {{ backup_folder }}/{{ target }}/{{ host.name + '_' + host.domain }}/LATEST
|
||||
{% elif 'ip' in host %}
|
||||
ln -sf {{ backup_folder }}/{{ target }}/{{ host.name + '_' + host.ip }}/$BKP {{ backup_folder }}/{{ target }}/{{ host.name + '_' + host.ip }}/LATEST
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
|
||||
# keep only last {{ backup_keep_days * ( backup_times_hour | length ) }}
|
||||
{% for target in backup_targets %}
|
||||
{% for host in backup_hosts %}
|
||||
{% if 'domain' in host %}
|
||||
DELETE_LIST=$(ls -1dtr {{ target }}/{{ host.name + '_' + host.domain }}/* | head -n -{{ backup_keep_days * ( backup_times_hour | length ) }})
|
||||
{% elif 'ip' in host %}
|
||||
DELETE_LIST=$(ls -1dtr {{ target }}/{{ host.name + '_' + host.ip }}/* | head -n -{{ backup_keep_days * ( backup_times_hour | length ) }})
|
||||
{% endif %}
|
||||
if (( $( echo $DELETE_LIST | wc -w ) > 0 )); then
|
||||
rm -rf $DELETE_LIST
|
||||
fi
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
|
||||
rm {{ backup_lock }}
|
||||
@@ -1,72 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e -o pipefail
|
||||
|
||||
if [ -f {{ backup_lock }} ]; then
|
||||
echo "Backup lock! Cannot procceed as lock '{{ backup_lock }}' exist."
|
||||
echo "Associated PID is $(cat {{ backup_lock }})"
|
||||
exit 1
|
||||
fi
|
||||
echo "$$" > {{ backup_lock }}
|
||||
|
||||
cd {{ backup_folder }}
|
||||
|
||||
# Load script envs
|
||||
echo "Load script environment variables"
|
||||
{% for scr_env in backup_client_script_envs %}
|
||||
{% if 'path' in scr_env %}
|
||||
export {{ scr_env.var }}={{ scr_env.path }}:${{ scr_env.var }}
|
||||
{% else %}
|
||||
export {{ scr_env.var }}={{ scr_env.value }}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
|
||||
# Perform client pre backup scripts for
|
||||
echo "Perform pre-backup scripts"
|
||||
{% for cmd in backup_client_scripts %}
|
||||
{{ cmd }};
|
||||
{% endfor %}
|
||||
|
||||
|
||||
# Backup files and directories
|
||||
echo "Copy files and directories"
|
||||
while read DIRFILE; do
|
||||
echo " - Copy $DIRFILE"
|
||||
BACKUP_SUBDIR=$(dirname $DIRFILE)
|
||||
mkdir -p "{{ backup_storage.file.path }}/$BACKUP_SUBDIR"
|
||||
cp -r -u $DIRFILE "{{ backup_storage.file.path }}/$DIRFILE"
|
||||
done < {{ backup_conf }}/filedir.list
|
||||
rm -f file.tgz #remove old backup
|
||||
tar czfv file.tgz file
|
||||
rm -rf file/*
|
||||
|
||||
# Backup databases
|
||||
echo "Generate DB dumps"
|
||||
while read DBS; do
|
||||
DBTYPE=$(echo $DBS | cut -f 1 -d "{{ backup_conf_db_sep }}" );
|
||||
DBNAME=$(echo $DBS | cut -f 2 -d "{{ backup_conf_db_sep }}" );
|
||||
if [ $DBTYPE == "mariadb" ] || [ $DBTYPE == "mysql" ]; then
|
||||
echo "- dump to {{ backup_storage.db.path }}/$DBTYPE/$DBNAME.sql"
|
||||
mkdir -p {{ backup_storage.db.path }}/$DBTYPE;
|
||||
mysqldump $DBNAME | gzip -c > {{ backup_storage.db.path }}/$DBTYPE/$DBNAME.sql.gz;
|
||||
elif [ $DBTYPE == "pgsql" ]; then
|
||||
echo "- dump to {{ backup_storage.db.path }}/$DBTYPE/$DBNAME.sql"
|
||||
mkdir -p {{ backup_storage.db.path }}/$DBTYPE;
|
||||
sudo -u postgres bash -c "pg_dump $DBNAME | gzip -c > /tmp/$DBNAME.sql.gz";
|
||||
mv /tmp/$DBNAME.sql.gz /backup/db/$DBTYPE/$DBNAME.sql.gz;
|
||||
else
|
||||
echo "- ERROR! DB type '$DBTYPE' for '$DBNAME' is unknown to backup."
|
||||
fi
|
||||
done < {{ backup_conf }}/db.list
|
||||
rm -f db.tgz #remove old backup
|
||||
tar czfv db.tgz db
|
||||
rm -rf db/*
|
||||
|
||||
#Mail
|
||||
rm -f mail.tgz #remove old backup
|
||||
tar czfv mail.tgz mail
|
||||
rm -rf mail/*
|
||||
|
||||
rm {{ backup_lock }}
|
||||
chown {{ backup_owner }}:{{ backup_group }} {{ backup_folder }}/*.tgz
|
||||
@@ -1,5 +0,0 @@
|
||||
{% if 'db' in backup_targets %}
|
||||
{% for db in backup_targets.db %}
|
||||
{{ db.type }}{{ backup_conf_db_sep }}{{ db.name }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
@@ -1,5 +0,0 @@
|
||||
{% if 'file' in backup_targets %}
|
||||
{% for filedir in backup_targets.file %}
|
||||
{{ filedir }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
@@ -1,5 +0,0 @@
|
||||
{% if 'mail' in backup_targets %}
|
||||
{% for mail in backup_targets.mail %}
|
||||
{{ mail }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
@@ -0,0 +1,21 @@
|
||||
#!/bin/bash
|
||||
|
||||
RUNFOLDER="{{ backup_run_folder }}";
|
||||
TARGETFOLDER="{{ backup_storage }}";
|
||||
REPOLOCATION="{{ backup_location }}";
|
||||
ARCHIVENAME="mailcow-$(date '+%s')";
|
||||
BORG_REPO_KEY=$(cat {{ backup_home }}/.borg.key);
|
||||
|
||||
cd $RUNFOLDER;
|
||||
MAILCOW_BACKUP_LOCATION="$TARGETFOLDER/" ./helper-scripts/backup_and_restore.sh backup all;
|
||||
LATESTBACKUP="$(ls -t $TARGETFOLDER | head -n 1)";
|
||||
|
||||
if [[ "$LATESTBACKUP" != *"mailcow"* ]];
|
||||
then
|
||||
echo "NOT MAILCOW! ABORT!";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
|
||||
borg create -C lzma $REPOLOCATION::$ARCHIVENAME $TARGETFOLDER/$LATESTBACKUP;
|
||||
rm -rf $TARGETFOLDER/$LATESTBACKUP;
|
||||
@@ -0,0 +1 @@
|
||||
#!/bin/bash
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
|
||||
Reference in new issue
Block a user