backup files to .tar.gz file extention

  • Author: Admin
  • Published On: 3/30/2026
  • Category: editor
#!/bin/bash
# ==========================
#  CONFIG
# ==========================
SCRIPT_NAME="create_tar.sh"
EXCLUDE_FILE="/root/samot_dev/samot1/exclude.txt"     # Absolute path to avoid cron errors
SOURCE_DIR="/root/samot_dev/samot1"                   # Your project folder
BACKUP_DIR="/root/bak/samot_dev"      # Output directory
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
OUTPUT_FILE="$BACKUP_DIR/samot_$DATE.tar.gz"
# Email settings (msmtp)
EMAIL_TO="[email protected]"
EMAIL_FROM="[email protected]"
HOSTNAME=$(hostname)
LOGFILE="$HOME/.backup_task.log"
# Ensure backup folder exists
mkdir -p "$BACKUP_DIR"
# ==========================
#  FUNCTIONS
# ==========================
send_email() {
    SUBJECT="$1"
    MESSAGE="$2"
    echo -e "Subject: $SUBJECT\nFrom: $EMAIL_FROM\nTo: $EMAIL_TO\n\n$MESSAGE" \
        | msmtp --debug -f "$EMAIL_FROM" "$EMAIL_TO"
}
log() {
    echo "[$(date +"%Y-%m-%d %H:%M:%S")] $1" >> "$LOGFILE"
}
# ==========================
#  START
# ==========================
log "=== Backup job started ==="
# Check exclude list
if [ ! -f "$EXCLUDE_FILE" ]; then
    ERR="❌ Exclude file not found: $EXCLUDE_FILE"
    log "$ERR"
    send_email \
        "❌ BACKUP FAILED on $HOSTNAME" \
        "$ERR
Script: $SCRIPT_NAME
Time: $(date)"
    exit 1
fi
# ==========================
#  CREATE TAR.GZ
# ==========================
log "Creating archive: $OUTPUT_FILE"
tar --exclude-from="$EXCLUDE_FILE" -czf "$OUTPUT_FILE" -C "$SOURCE_DIR" .
if [ $? -ne 0 ]; then
    ERR="❌ Failed to create archive file: $OUTPUT_FILE"
    log "$ERR"
    send_email \
        "❌ BACKUP FAILED on $HOSTNAME" \
        "$ERR
Script: $SCRIPT_NAME
Time: $(date)"
    exit 1
fi
log "✅ Backup successfully created: $OUTPUT_FILE"
log "=== Backup job finished ==="
exit 0
  • Share On: