66 lines
1.6 KiB
Bash
Executable File
66 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
CONTAINER_NAME="gitea"
|
|
CONF_PATH="/data/gitea/conf"
|
|
REPO_PATH="/data/gitea/data/git/repositories"
|
|
TMP_BACKUP_DIR="/tmp/gitea_backup"
|
|
CONF_TMP_DIR="${TMP_BACKUP_DIR}/conf"
|
|
REPO_TMP_DIR="${TMP_BACKUP_DIR}/repositories"
|
|
BACKUP_DIR="$HOME/backup/gitea"
|
|
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
|
|
BACKUP_FILE="${BACKUP_DIR}/gitea_backup_${DATE}.tar.gz"
|
|
LOG_FILE="${BACKUP_DIR}/backup_log_${DATE}.txt"
|
|
EMAIL="test@email.com"
|
|
|
|
|
|
mkdir -p "$BACKUP_DIR"
|
|
mkdir -p "$CONF_TMP_DIR"
|
|
mkdir -p "$REPO_TMP_DIR"
|
|
|
|
{
|
|
echo "Backup rozpoczęty: $(date)"
|
|
|
|
if ! docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
|
|
echo "Błąd: kontener $CONTAINER_NAME nie działa lub nie istnieje"
|
|
exit 1
|
|
fi
|
|
|
|
rm -rf "${TMP_BACKUP_DIR:?}/*"
|
|
|
|
echo "Kopiowanie konfiguracji..."
|
|
docker cp "${CONTAINER_NAME}:${CONF_PATH}/app.ini" "$CONF_TMP_DIR/app.ini"
|
|
if [[ $? -ne 0 ]]; then
|
|
echo "Błąd podczas kopiowania konfiguracji"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Kopiowanie repozytoriów..."
|
|
docker cp "${CONTAINER_NAME}:${REPO_PATH}" "$REPO_TMP_DIR"
|
|
if [[ $? -ne 0 ]]; then
|
|
echo "Błąd podczas kopiowania repozytoriów"
|
|
exit 1
|
|
fi
|
|
|
|
tar -czf "$BACKUP_FILE" -C "$TMP_BACKUP_DIR" .
|
|
|
|
if [[ $? -ne 0 ]]; then
|
|
echo "Błąd podczas tworzenia archiwum"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Backup zakończony sukcesem: $(date)"
|
|
rm -rf "$TMP_BACKUP_DIR"
|
|
|
|
} > "$LOG_FILE" 2>&1
|
|
|
|
|
|
if grep -q "Błąd" "$LOG_FILE"; then
|
|
mail_subject="Backup Gitea NIE powiódł się: $DATE"
|
|
else
|
|
mail_subject="Backup Gitea zakończony sukcesem: $DATE"
|
|
fi
|
|
|
|
mail_body=$(cat "$LOG_FILE")
|
|
|
|
python3 ./send_mail.py "$mail_subject" "$mail_body" $EMAIL
|