Sorry, you need to enable JavaScript to visit this website.
Skip to main content
Welcome to our website! Explore our services and portfolio.

Bash Script for downliading Apache Log files

Submitted by admin on
# Mandatory Settings
SSH_HOST="user@your-server.com"
REMOTE_PATH="/var/log/apache2"

# Optional/Default Settings
LOCAL_DEST="."
# This folder is where logs will be moved after compression
ARCHIVE_DIR="./archive"
LOG_FILE_NAME="access-$(date +%Y-%m-%d).log"#!/bin/bash

ENV_FILE=".env"

# 1. Check if .env file exists
if [ ! -f "$ENV_FILE" ]; then
    echo "Error: .env file not found."
    exit 1
fi

# 2. Load environment variables
set -a
source "$ENV_FILE"
set +a

# 3. Validate mandatory variables (including the new ARCHIVE_DIR)
REQUIRED_VARS=("SSH_HOST" "REMOTE_PATH" "LOCAL_DEST" "LOG_FILE_NAME" "ARCHIVE_DIR")
for var in "${REQUIRED_VARS[@]}"; do
    if [ -z "${!var}" ]; then
        echo "Error: Environment variable $var is missing."
        exit 1
    fi
done

# 4. Prepare Paths
FULL_REMOTE_SOURCE="${SSH_HOST}:${REMOTE_PATH%/}/${LOG_FILE_NAME}"
mkdir -p "$ARCHIVE_DIR" # Ensure the archive folder exists

echo "------------------------------------------------"
echo "Phase 1: Downloading $LOG_FILE_NAME..."
rsync -avz "$FULL_REMOTE_SOURCE" "$LOCAL_DEST"

# 5. Check rsync status and start Rotation/Compression
if [ $? -eq 0 ]; then
    echo "------------------------------------------------"
    echo "Phase 2: Rotating and Compressing..."
    
    # Path to the file just downloaded
    DOWNLOADED_FILE="${LOCAL_DEST%/}/${LOG_FILE_NAME}"
    
    # Compress the file (gzip replaces the original with .gz)
    gzip -f "$DOWNLOADED_FILE"
    
    # Move the compressed file to the archive directory
    mv "${DOWNLOADED_FILE}.gz" "$ARCHIVE_DIR/"
    
    echo "Success!"
    echo "Log archived to: $ARCHIVE_DIR/${LOG_FILE_NAME}.gz"
    echo "------------------------------------------------"
else
    echo "------------------------------------------------"
    echo "Error: Transfer failed. Rotation skipped."
    exit 1
fi	

 

 

# Mandatory Settings
SSH_HOST="user@your-server.com"
REMOTE_PATH="/var/log/apache2"
# Optional/Default Settings
LOCAL_DEST="."
# This folder is where logs will be moved after compression
ARCHIVE_DIR="./archive"
LOG_FILE_NAME="access-$(date +%Y-%m-%d).log"