Compare commits

..

No commits in common. "master" and "master" have entirely different histories.

4 changed files with 47 additions and 55 deletions

View File

@ -1,11 +0,0 @@
[Unit]
Description=Check AutoBackup
After=syslog.target network.target
[Service]
RestartSec=2s
Type=oneshot
User=root
Group=root
ExecStart=/root/check_AutoBackup.sh
[Install]
WantedBy=multi-user.target

View File

@ -1,7 +0,0 @@
[Unit]
Description=Check AutoBackup Timer
[Timer]
Persistent=false
OnCalendar=*-*-* 2,8,14,20:05:00
[Install]
WantedBy=basic.target

View File

@ -14,7 +14,7 @@ The script monitors the backend of a restic backup. The bash script is executed
* no restic authentication needed
* multiple repos
* individual interval for each repo
* custom email server via [mailsend](https://github.com/muquit/mailsend-go/releases)
* custom email server via [ssmtp](https://wiki.debian.org/sSMTP)
* loud alarm buzzer via [FTDI_simple_alarm](https://git.mosad.xyz/localhorst/FTDI_simple_alarm)
## Planned Features
@ -23,9 +23,22 @@ The script monitors the backend of a restic backup. The bash script is executed
## Installation
#### 1. download the check_AutoBackup.sh
#### 2. chmod +x check_AutoBackup.sh
#### 3. install mailsend
#### 3. install ssmtp
#### 4. nano /etc/ssmtp/ssmtp.conf
#### 4. edit settings in check_AutoBackup.sh
```UseSTARTTLS=YES
FromLineOverride=YES
root=
mailhub=mail.yourmailserver.tld:587
AuthUser=mailuser@maildomain.tld
AuthPass=yourmailuserpassword
```
#### 5. nano /etc/ssmtp/revaliases
```
root:mailuser@maildomain.tld:mail.yourmailserver.tld:587
```
#### 6. edit settings in check_AutoBackup.sh
```
DEBUG="true" #true --> dont send email
@ -34,9 +47,10 @@ backupFolder="./backups" #directory that contains all repos
receiverEmail="mailuser@maildomain.tld"
senderEmail="mailuser@maildomain.tld"
senderName="AutoBackup Watchdog"
```
#### 5. edit repo settings in check_AutoBackup.sh
#### 7. edit repo settings in check_AutoBackup.sh
```
repos_name[0]=" first backup repo"
@ -44,18 +58,10 @@ repos_directory[0]="first_repo" #repo in backupFolder
repos_interval[0]=21600 #sec
repos_interval_tolerance[0]=10 #%
```
#### 6. install crontab or systemd-timer
For systemd see
`CheckAutoBackup.service` and `CheckAutoBackup.timer`
#### 8. install crontab or systemd-timer
For corntab see
```
5 2,8,14,20 * * * /root/check_AutoBackup.sh >/dev/null 2>&
```
#### 7. optional install FTDI simple alarm
#### 9. optional install FTDI simple alarm
[FTDI_simple_alarm](https://git.mosad.xyz/localhorst/FTDI_simple_alarm)
uncomment line 167 in check_AutoBackup.sh
uncomment line 117 in check_AutoBackup.sh

View File

@ -1,31 +1,29 @@
-#! /bin/bash
#! /bin/bash
### GENERAL SETTINGS ###
DEBUG="false" #don't send mail if in debug mode
DEBUG="true"
timestampFolder="index" #folder for reading timestamp
backupFolder="/mnt/hdd/backups/" #directory that contains all repos
backupServerName="Onsite Backup" #name of this backup server
backupFolder="./backups" #directory that contains all repos
########################
### eMail ###
receiverEmail="dummy@gmail.com"
senderEmail="dummy@gmail.com"
senderPassword="__PW_DB__"
mailServer="dummy@gmail.com"
receiverEmail="admin@coptersicht.de"
senderEmail="autobackupwatchdog@coptersicht.de"
senderName="AutoBackup Watchdog"
########################
######### REPO SETTINGS #########
repos_name[0]="CDS Backup"
repos_directory[0]="cdsbackup"
repos_name[0]=" first backup repo"
repos_directory[0]="first_repo"
repos_interval[0]=21600 #sec
repos_interval_tolerance[0]=10 #%
#repos_name[1]="SDS Backup"
#repos_directory[1]="sdsbackup"
#repos_name[1]="second backup repo"
#repos_directory[1]="second_repo"
#repos_interval[1]=21600 #sec
#repos_interval_tolerance[1]=10 #%
#repos_name[2]="another backup repo"
#repos_name[2]=" another backup repo"
#repos_directory[2]="another_repo"
#repos_interval[2]=21600 #sec
#repos_interval_tolerance[2]=10 #%
@ -57,6 +55,9 @@ do
echo "Repo ${repos_directory[i]} doesnt exist!"
rm -f mail_content.txt
cat >> mail_content.txt <<EOL
Subject: AutoBackup Failure "${repos_name[i]}"
From: $senderEmail
Content-Type: text/html; charset="utf8
<head>
<style>
h1{
@ -82,7 +83,7 @@ do
</style>
</head>
<body>
<h1>AutoBackup Failure on $backupServerName</h1>
<h1>AutoBackup Failure</h1>
<h2>Directory for the automatic backup for "${repos_name[i]}" not found</h2>
<div>
<p>Local time: $(date)</p>
@ -90,14 +91,14 @@ do
</div>
</body>
<footer>
<p>Version: 0.2.3</p>
<p>Author: <a href="mailto:mail@hendrikschutter.com">mail@hendrikschutter.com</a></p>
<p>Version: 0.2</p>
<p>Author: <a href="mailto:hendrik.schutter@coptersicht.de">hendrik.schutter@coptersicht.de</a></p>
</footer>
EOL
if [ "$DEBUG" = "false" ];
then
mailsend-go -sub "AutoBackup Failure ${repos_name[i]} on $backupServerName" -smtp $mailServer -port 587 auth -user $senderEmail -pass $senderPassword -from $senderEmail -to $receiverEmail body -file mail_content.txt
ssmtp -f$senderEmail -F$senderName $receiverEmail < mail_content.txt
rm mail_content.txt
#/etc/init.d/alarm start
fi
@ -121,6 +122,9 @@ EOL
echo -e "\e[39m " #reset console color to black
rm -f mail_content.txt
cat >> mail_content.txt <<EOL
Subject: AutoBackup Failure "${repos_name[i]}"
From: $senderEmail
Content-Type: text/html; charset="utf8
<head>
<style>
h1{
@ -146,7 +150,7 @@ EOL
</style>
</head>
<body>
<h1>AutoBackup Failure on $backupServerName</h1>
<h1>AutoBackup Failure</h1>
<h2>Overdue for the automatic backup for "${repos_name[i]}"</h2>
<div>
<p>Local time: $(date)</p>
@ -157,18 +161,18 @@ EOL
</div>
</body>
<footer>
<p>Version: 0.2.3</p>
<p>Author: <a href="mailto:mail@hendrikschutter.com">mail@hendrikschutter.com</a></p>
<p>Version: 0.2</p>
<p>Author: <a href="mailto:hendrik.schutter@coptersicht.de">hendrik.schutter@coptersicht.de</a></p>
</footer>
EOL
if [ "$DEBUG" = "false" ];
then
mailsend-go -sub "AutoBackup Failure ${repos_name[i]} on $backupServerName" -smtp $mailServer -port 587 auth -user $senderEmail -pass $senderPassword -from $senderEmail -to $receiverEmail body -file mail_content.txt
ssmtp -f$senderEmail -F$senderName $receiverEmail < mail_content.txt
rm mail_content.txt
#/etc/init.d/alarm start
fi
fi
done
echo " "
echo "Finished"