6 Commits

Author SHA1 Message Date
Asif Bacchus 16f4c11f91 fix(BACKUP): remove extraneous mailcow dir in xtraLocation 2021-02-15 15:43:18 -07:00
Asif Bacchus 0bc0f8e5f9 refactor(BACKUP): update xtraLocation sample 2021-02-15 15:39:43 -07:00
Asif Bacchus 21e4a6774c docs(BACKUP): change xtraListPath description
- description was misleading, this is not a required variable
- holdover from importing
2021-02-15 15:37:32 -07:00
Asif Bacchus 7e739d96a1 feature(LOGWATCH): Update logwatch scripts
- add trailing newlines
- update search phrases to match logfile output
2021-02-15 15:31:05 -07:00
Asif Bacchus 61e505952d update TOC 2021-02-10 08:30:13 -07:00
Asif Bacchus 1939962b75 [README] add restore section 2021-02-10 08:08:18 -07:00
6 changed files with 28 additions and 18 deletions
+11 -2
View File
@@ -1,4 +1,4 @@
# Mailcow Backup Using borgbackup <!-- omit in toc --> # Mailcow Backup Using borgbackup
This script automates backing up your Mailcow installation using borgbackup and a remote ssh-capable storage system. I suggest using rsync.net since they This script automates backing up your Mailcow installation using borgbackup and a remote ssh-capable storage system. I suggest using rsync.net since they
have great speeds and a special pricing structure for borgbackup/attic users ([details here](https://www.rsync.net/products/attic.html)). have great speeds and a special pricing structure for borgbackup/attic users ([details here](https://www.rsync.net/products/attic.html)).
@@ -14,14 +14,19 @@ This script automates the following tasks:
- Runs 'borg prune' to make sure you are trimming old backups on your schedule - Runs 'borg prune' to make sure you are trimming old backups on your schedule
- Creates a clear, easy to parse log file so you can keep an eye on your backups and any errors/warnings - Creates a clear, easy to parse log file so you can keep an eye on your backups and any errors/warnings
## Contents <!-- omit in toc --> ## contents
<!-- toc -->
- [quick start](#quick-start) - [quick start](#quick-start)
- [configuration file](#configuration-file) - [configuration file](#configuration-file)
- [running the script](#running-the-script) - [running the script](#running-the-script)
- [scheduling your backup via cron](#scheduling-your-backup-via-cron) - [scheduling your backup via cron](#scheduling-your-backup-via-cron)
- [restoring backups](#restoring-backups)
- [final notes](#final-notes) - [final notes](#final-notes)
<!-- tocstop -->
## quick start ## quick start
Clone this repo or download a release file into a directory of your choosing. For all examples in this document, I will assume you will run the script from */scripts/backup*. Make sure the script file is executable and you protect the *.details* file since it contains things like your repo password: Clone this repo or download a release file into a directory of your choosing. For all examples in this document, I will assume you will run the script from */scripts/backup*. Make sure the script file is executable and you protect the *.details* file since it contains things like your repo password:
@@ -111,6 +116,10 @@ Edit your root user's crontab and add an entry like this which would run the scr
7 1 * * * /scripts/backup/backup.sh -l /var/log/mailcow_backup.log > /dev/null 2>&1 7 1 * * * /scripts/backup/backup.sh -l /var/log/mailcow_backup.log > /dev/null 2>&1
``` ```
## restoring backups
Starting with version 3.0, a *restore.sh* file has been included to semi-automate restoring your backups to a clean mailcow instance. There are a few steps required and they are better explained in the wiki than would be possible in a short write-up like this. Please check out the [restore process overview](https://git.asifbacchus.app/asif/MailcowBackup/wiki/8.0-Restore-overview) for more information.
## final notes ## final notes
I think that's everything. For detailed information, please review the [wiki](https://git.asifbacchus.app/asif/MailcowBackup/wiki/_pages). If I've forgotten to document something there, please let me know. I know the wiki is long but, I hate how much stuff for Linux and open-source programs/scripts in general are so poorly documented especially for newbies and I didn't want to make that same mistake. I think that's everything. For detailed information, please review the [wiki](https://git.asifbacchus.app/asif/MailcowBackup/wiki/_pages). If I've forgotten to document something there, please let me know. I know the wiki is long but, I hate how much stuff for Linux and open-source programs/scripts in general are so poorly documented especially for newbies and I didn't want to make that same mistake.
+7 -6
View File
@@ -36,12 +36,13 @@ borgRepoPassphrase="p@ssW0rd"
# FULL PATH where the associated keyfile for your repo is located -- relevant # FULL PATH where the associated keyfile for your repo is located -- relevant
# only if your repo requires a keyfile (i.e. 'keyfile' vs 'repokey') and if you # only if your repo requires a keyfile (i.e. 'keyfile' vs 'repokey') and if you
# are not using the default keyfile location # are not using the default keyfile location
borgKeyfileLocation="/var/borgbackup/.config/borg/keys/server_address__repo_name" #borgKeyfileLocation="/var/borgbackup/.config/borg/keys/server_address__repo_name"
# REQUIRED: path to text file containing a list (one per line) of files/ # additional files to backup
# directories to include in your backup. Since this is a generic backup script, # by default, the script will only backup your mailcow program directory
# nothing is defined by default. Therefore, ONLY files specified in this file # (e.g. /opt/mailcow-dockerized) and your mailcow data volumes. If you would
# will be backed up! # like additional files included (perhaps certificates, system configuration,
# etc.) include those locations listed one item per line in the file below
# see repo wiki for more details # see repo wiki for more details
borgXtraListPath="/scripts/backup/xtraLocations.borg" borgXtraListPath="/scripts/backup/xtraLocations.borg"
@@ -58,4 +59,4 @@ borgPruneSettings="--keep-within=14d --keep-daily=30 --keep-weekly=12 --keep-mon
# location of borg instance on your remote backup server # location of borg instance on your remote backup server
# this is very often just "borg1" # this is very often just "borg1"
borgRemote="borg1" borgRemote="borg1"
+4 -4
View File
@@ -49,12 +49,12 @@
# include the paths to important configuration files/directories and/or # include the paths to important configuration files/directories and/or
# data directories # data directories
# mailcow configuration (example) # mailcow configuration
/opt/mailcow-dockerized/ # already backed-up by the script by default based on mailcow.conf location
# NGINX (example) # NGINX (if this host is a reverse proxy, for example)
/etc/nginx/ /etc/nginx/
/usr/share/nginx/html/ /usr/share/nginx/html/
# LetsEncrypt (example) # LetsEncrypt
/etc/letsencrypt/ /etc/letsencrypt/
+1 -1
View File
@@ -11,4 +11,4 @@ Archive = /path/to/your/logfile.ext.?.gz
# You don't need to change this unless you have altered the 'stamp' variable in # You don't need to change this unless you have altered the 'stamp' variable in
# the script in which case you will want to update the regex in the custom pl # the script in which case you will want to update the regex in the custom pl
# script below # script below
*sqFullStampAnywhere *sqFullStampAnywhere
+1 -1
View File
@@ -6,4 +6,4 @@ Title = "System and Mailcow Backup"
# Override the detail level for this service # Override the detail level for this service
# Remember the levels are: 0, 1-4, 5, 6+ # Remember the levels are: 0, 1-4, 5, 6+
# Detail = 0 # Detail = 0
+4 -4
View File
@@ -3,8 +3,8 @@
############################################################################# #############################################################################
# $Id$ # $Id$
############################################################################# #############################################################################
# Log: Backup script (backup) # Log: mailcow backup
# Revision 1.0 2018/10/16 # Revision 1.1 2019/07/20
# Written by Asif Bacchus # Written by Asif Bacchus
############################################################################# #############################################################################
@@ -34,7 +34,7 @@ if ($detailLevel == 0) {
elsif ($ThisLine =~ /\-- \[WARNING\] /) { elsif ($ThisLine =~ /\-- \[WARNING\] /) {
$summaryWarn++; $summaryWarn++;
} }
elsif ($ThisLine =~ /All processes completed successfully/) { elsif ($ThisLine =~ /All processes completed/) {
$summarySuccess++; $summarySuccess++;
} }
} }
@@ -109,4 +109,4 @@ exit (0);
# mode: perl # mode: perl
# perl-indent-level: 3 # perl-indent-level: 3
# indent-tabs-mode: nil # indent-tabs-mode: nil
# End: # End: