Bash Script for downliading Apache Log files
# 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"
Recent content
-
1 hour 3 minutes ago
-
1 week ago
-
1 week 1 day ago
-
1 week 1 day ago
-
1 week 1 day ago
-
1 week 6 days ago
-
2 weeks ago
-
2 weeks 1 day ago
-
2 weeks 1 day ago
-
2 weeks 2 days ago