New script with rotation
This commit is contained in:
parent
8769a7e3f1
commit
75fac0ccae
|
@ -1,5 +1,5 @@
|
|||
BACKUP_LOCATION="CHANGEME"
|
||||
SCRIPT_LOCATION="CHANGEME"
|
||||
SERVICES="gitea miniflux prosody privatebin nextcloud"
|
||||
BACKUP_DIR="CHANGEME"
|
||||
GITEA_EXE="CHANGEME"
|
||||
MF_DBHOST="CHANGEME"
|
||||
MF_DBPORT=5432
|
||||
|
|
30
backup.sh
30
backup.sh
|
@ -1,30 +0,0 @@
|
|||
#! /bin/bash
|
||||
|
||||
DATE=$(date +%m-%d-%Y)
|
||||
|
||||
if [ -f backup.env ]
|
||||
then
|
||||
export $(cat backup.env | sed 's/#.*//g' | xargs)
|
||||
else
|
||||
echo "Error, backup.env doesn't exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$DATE" ] || [ -z "$SCRIPT_LOCATION" ] || [ -z "$GITEA_EXE" ] || [ -z "$MF_DBHOST" ] || [ -z "$MF_DBPORT" ] || \
|
||||
[ -z "$BACKUP_LOCATION" ] || [ -z "$MF_DBNAME" ] || [ -z "$MF_DBUSER" ] || [ -z "$MF_DBPASSWD" ] || [ -z "$NC_DBHOST" ] || \
|
||||
[ -z "$NC_DIR" ] || [ -z "$NC_DBPORT" ] || [ -z "$NC_DBNAME" ] || [ -z "$NC_DBUSER" ] || [ -z "$NC_DBPASSWD" ] || \
|
||||
[ -z "$LOG" ] || [ -z "$PB_DIR" ] || [ -z "$PROSODY_DBHOST" ] || [ -z "$PROSODY_DBPORT" ] || [ -z "$PROSODY_DBNAME" ] || \
|
||||
[ -z "$PROSODY_DBUSER" ] || [ -z "$PROSODY_DBPASSWD" ]
|
||||
then
|
||||
echo "Error, please check your configuration in backup.env"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
echo "" >> $LOG
|
||||
echo "===== $DATE =====" >> $LOG
|
||||
|
||||
source $SCRIPT_LOCATION/gitea.sh >> $LOG
|
||||
source $SCRIPT_LOCATION/miniflux.sh >> $LOG
|
||||
source $SCRIPT_LOCATION/nextcloud.sh >> $LOG
|
||||
source $SCRIPT_LOCATION/privatebin.sh >> $LOG
|
||||
source $SCRIPT_LOCATION/prosody.sh >> $LOG
|
|
@ -0,0 +1,118 @@
|
|||
#! /bin/bash
|
||||
|
||||
TODAY=$(date --date="today" +"%m-%d-%Y")
|
||||
if [ -f backup.env ]; then
|
||||
export $(cat backup.env | sed 's/#.*//g' | xargs)
|
||||
else
|
||||
echo "Error, backup.env doesn't exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Cette fonction appelle les fonctions qui s'occupent du daily, du weekly et du monthly
|
||||
function main_backup
|
||||
{
|
||||
mkdir -p $BACKUP_DIR/{daily,weekly,monthly}
|
||||
if [ -d "$BACKUP_DIR" ]; then
|
||||
JOUR=$(date --date="today" +"%j")
|
||||
|
||||
if [ "$JOUR" = "01" ]; then
|
||||
daily_backup
|
||||
weekly_backup
|
||||
monthly_backup
|
||||
elif [ "$JOUR" = "08" -o "$JOUR" = "15" -o "$JOUR" = "22" ]; then
|
||||
daily_backup
|
||||
weekly_backup
|
||||
else
|
||||
daily_backup
|
||||
fi
|
||||
else
|
||||
echo "Ce répertoire n'existe pas !"
|
||||
fi
|
||||
}
|
||||
|
||||
# Cette fonction s'occupe de faire un backup des services chaque jour en faisant un appel au script de backup spécifique du service
|
||||
# Elle supprime également le backup qui a 7 jours (pour ne garder que 7 backups)
|
||||
function daily_backup
|
||||
{
|
||||
TOREMOVEDATE=$(date --date="7 days ago" +"%m-%d-%Y")
|
||||
|
||||
for service in $(echo $SERVICES); do
|
||||
backup_$service "$BACKUP_DIR/daily/$service-$TODAY"
|
||||
done
|
||||
|
||||
rm -f $BACKUP_DIR/daily/*-$TOREMOVEDATE.*
|
||||
}
|
||||
|
||||
# Cette fonction copie le backup du jour de chaque service du dossier daily dans le dossier weekly
|
||||
# Aussi, elle supprime le backup qui date d'un mois qui est défini comme périmé
|
||||
function weekly_backup
|
||||
{
|
||||
TOREMOVEDATE=$(date --date="1 month ago" +"%m-%d-%Y")
|
||||
|
||||
for service in "$SERVICES"; do
|
||||
if [ -f "$BACKUP_DIR/daily/$service-$TODAY.*" ]; then
|
||||
cp "$BACKUP_DIR/daily/$service-$TODAY.*" weekly
|
||||
else
|
||||
echo "$BACKUP_DIR/daily/$service-$TODAY.* n'existe pas !"
|
||||
fi
|
||||
done
|
||||
|
||||
rm -f $BACKUP_DIR/weekly/$service-$TODAY.*
|
||||
}
|
||||
|
||||
# Cette fonction copie le backup du jour de chaque service du dossier daily dans le dossier monthly
|
||||
# Elle supprime également le backup qui date de 4 mois car il est périmé
|
||||
function monthly_backup
|
||||
{
|
||||
TOREMOVEDATE=$(date --date="4 month ago" +"%m-%d-%Y")
|
||||
|
||||
for service in "$SERVICES"; do
|
||||
if [ -f "$BACKUP_DIR/daily/$service-$TODAY.*" ]; then
|
||||
cp "$BACKUP_DIR/daily/$service-$TODAY.*" monthly
|
||||
else
|
||||
echo "$BACKUP_DIR/daily/$service-$TODAY.* n'existe pas !"
|
||||
fi
|
||||
done
|
||||
|
||||
rm -f $BACKUP_DIR/monthly/$service-$TODAY.*
|
||||
}
|
||||
|
||||
function backup_gitea
|
||||
{
|
||||
echo "===== Sauvegarde de gitea ====="
|
||||
sudo -u git $GITEA_EXE dump -f "$1.zip"
|
||||
}
|
||||
|
||||
function backup_miniflux
|
||||
{
|
||||
echo "===== Sauvegarde de miniflux ====="
|
||||
PGPASSWORD=$MF_DBPASSWD pg_dump -h $MF_DBHOST -d $MF_DBNAME -p $MF_DBPORT -U $MF_DBUSER | bzip2 -z > "$1.bz2"
|
||||
}
|
||||
|
||||
function backup_prosody
|
||||
{
|
||||
echo "===== Sauvegarde de prosody ====="
|
||||
PGPASSWORD=$PROSODY_DBPASSWD pg_dump -h $PROSODY_DBHOST -d $PROSODY_DBNAME -p $PROSODY_DBPORT -U $PROSODY_DBUSER | bzip2 -z > "$1.bz2"
|
||||
}
|
||||
|
||||
function backup_privatebin
|
||||
{
|
||||
echo "===== Sauvegarde de privatebin ====="
|
||||
tar -C $PB_DIR -czf "$1.tar.gz" cfg data
|
||||
}
|
||||
|
||||
function backup_nextcloud
|
||||
{
|
||||
TMP_DIR=$(mktemp -d)
|
||||
|
||||
echo "===== Sauvegarde de nextcloud ====="
|
||||
sudo -u www-data php $NC_DIR/occ maintenance:mode --on
|
||||
PGPASSWORD=$NC_DBPASSWD pg_dump -h $NC_DBHOST -d $NC_DBNAME -p $NC_DBPORT -U $NC_DBUSER > $TMP_DIR/db.pgsql
|
||||
tar -C $NC_DIR -cf "$1.tar" data themes config
|
||||
tar -rf "$1.tar" -C $TMP_DIR db.pgsql
|
||||
bzip2 -z "$1.tar"
|
||||
sudo -u www-data php $NC_DIR/occ maintenance:mode --off
|
||||
rm -rf $TMP_DIR
|
||||
}
|
||||
|
||||
main_backup
|
10
gitea.sh
10
gitea.sh
|
@ -1,10 +0,0 @@
|
|||
#! /bin/sh
|
||||
|
||||
echo ""
|
||||
echo "Sauvegarde de Gitea"
|
||||
|
||||
#Exécution du backup de Gitea
|
||||
echo "Exécution du backup de Gitea"
|
||||
sudo -u git $GITEA_EXE dump -f $BACKUP_LOCATION/gitea-$DATE.zip
|
||||
|
||||
echo "Backup effectué !"
|
15
miniflux.sh
15
miniflux.sh
|
@ -1,15 +0,0 @@
|
|||
#! /bin/sh
|
||||
|
||||
echo ""
|
||||
echo "Sauvegarde de miniflux"
|
||||
|
||||
# Backup the database
|
||||
echo "Dump de la base de données"
|
||||
PGPASSWORD=$MF_DBPASSWD pg_dump -h $MF_DBHOST -d $MF_DBNAME -p $MF_DBPORT -U $MF_DBUSER > $BACKUP_LOCATION/miniflux-$DATE
|
||||
|
||||
# Compress backup
|
||||
echo "Compression de la sauvegarde"
|
||||
gzip -f $BACKUP_LOCATION/miniflux-$DATE
|
||||
echo "Fichier enregistré dans dans $BACKUP_LOCATION/miniflux-$DATE.gz"
|
||||
|
||||
echo "Sauvegarde terminée !"
|
31
nextcloud.sh
31
nextcloud.sh
|
@ -1,31 +0,0 @@
|
|||
#! /bin/sh
|
||||
|
||||
TMP_DIR=$(mktemp -d)
|
||||
|
||||
echo ""
|
||||
echo "Sauvegarde de nextcloud"
|
||||
|
||||
# Stop the service
|
||||
echo "Mise en maintenance du service Nextcloud"
|
||||
sudo -u www-data php $NC_DIR/occ maintenance:mode --on
|
||||
|
||||
# Backup the database
|
||||
echo "Dump de la base de données"
|
||||
PGPASSWORD=$NC_DBPASSWD pg_dump -h $NC_DBHOST -d $NC_DBNAME -p $NC_DBPORT -U $NC_DBUSER > $TMP_DIR/db.pgsql
|
||||
|
||||
# Create archive file
|
||||
echo "Mise en archive des données"
|
||||
tar -C $NC_DIR -cf $BACKUP_LOCATION/nextcloud-$DATE.tar data themes config
|
||||
echo "Mise en archive du dump de la base de données"
|
||||
tar -rf $BACKUP_LOCATION/nextcloud-$DATE.tar -C $TMP_DIR db.pgsql
|
||||
echo "Compression de la sauvegarde"
|
||||
gzip -f $BACKUP_LOCATION/nextcloud-$DATE.tar
|
||||
echo "Fichier enregistré dans dans $BACKUP_LOCATION/nextcloud-$DATE.tar.gz"
|
||||
|
||||
# Restart the service
|
||||
echo "Remise en fonctionnement du service Nextcloud"
|
||||
sudo -u www-data php $NC_DIR/occ maintenance:mode --off
|
||||
|
||||
rm -rf $TMP_DIR
|
||||
|
||||
echo "Sauvegarde terminée !"
|
|
@ -1,11 +0,0 @@
|
|||
#! /bin/sh
|
||||
|
||||
echo ""
|
||||
echo "Sauvegarde de privatebin"
|
||||
|
||||
# Create archive file
|
||||
echo "Compression de la sauvegarde"
|
||||
tar -C $PB_DIR -czf $BACKUP_LOCATION/privatebin-$DATE.tar.gz cfg data
|
||||
echo "Fichier enregistré dans dans "$BACKUP_LOCATION"/privatebin-"$DATE".tar.gz"
|
||||
|
||||
echo "Sauvegarde terminée !"
|
15
prosody.sh
15
prosody.sh
|
@ -1,15 +0,0 @@
|
|||
#! /bin/sh
|
||||
|
||||
echo ""
|
||||
echo "Sauvegarde de prosody"
|
||||
|
||||
# Backup the database
|
||||
echo "Dump de la base de données"
|
||||
PGPASSWORD=$PROSODY_DBPASSWD pg_dump -h $PROSODY_DBHOST -d $PROSODY_DBNAME -p $PROSODY_DBPORT -U $PROSODY_DBUSER > $BACKUP_LOCATION/prosody-$DATE
|
||||
|
||||
# Compress backup
|
||||
echo "Compression de la sauvegarde"
|
||||
gzip -f $BACKUP_LOCATION/prosody-$DATE
|
||||
echo "Fichier enregistré dans dans $BACKUP_LOCATION/prosody-$DATE.gz"
|
||||
|
||||
echo "Sauvegarde terminée !"
|
Reference in New Issue