#!/bin/bash # Samba4 Backup Script # Generated by Ansible TIMESTAMP=$(date '+%Y-%m-%d_%H-%M-%S') DATE=$(date +%Y%m%d_%H%M%S) # Kept for compatibility HOSTNAME="{{ target_hostname }}" NFS_SERVER="{{ nfs_server | default('192.168.100.210') }}" NFS_MOUNT="/backup" BACKUP_BASE_DIR="{{ backup_dir | default('/backup/samba') }}" RETENTION_DAYS="28" # End of configuration BACKUP_FILE="$BACKUP_BASE_DIR/$HOSTNAME-$TIMESTAMP.tgz" {% raw %} # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color echo -e "${CYAN}🔄 Samba4 Backup Script" echo "==============================${NC}" # Function to check NFS availability echo "Checking NFS availability..." # Test 1: Check if backup directory is mounted if ! mountpoint -q "$NFS_MOUNT"; then echo -e "${RED}❌ ERROR: NFS mount point $NFS_MOUNT is not mounted!${NC}" exit 1 fi echo "[$(date '+%Y-%m-%d %H:%M:%S')] Starting backup : $BACKUP_FILE" >> "$BACKUP_BASE_DIR/backup.log" # Create backup folder mkdir -p "$BACKUP_BASE_DIR" if [ ! -d "$BACKUP_BASE_DIR" ]; then echo -e "${RED}❌ ERROR: cannot create $BACKUP_BASE_DIR${NC}" echo "[$(date '+%Y-%m-%d %H:%M:%S')] ERROR: cannot create $BACKUP_BASE_DIR" >> "$BACKUP_BASE_DIR/backup.log" exit 2 fi # Create backup file touch $BACKUP_FILE if [ ! -f "$BACKUP_FILE" ]; then echo -e "${RED}❌ ERROR: Cannot create backup file${NC}" echo "[$(date '+%Y-%m-%d %H:%M:%S')] ERROR: Cannot create backup file" >> "$BACKUP_BASE_DIR/backup.log" exit 3 fi # Stop samba echo "[$(date '+%Y-%m-%d %H:%M:%S')] Stopping Samba service" >> "$BACKUP_BASE_DIR/backup.log" systemctl stop samba-ad-dc tar -czf "$BACKUP_FILE" \ /var/lib/samba \ /etc/samba \ /etc/krb5.conf \ /etc/resolv.conf 2>/dev/null # Restart Samba echo -e "${YELLOW}🔄 Restarting Samba service${NC}" echo "[$(date '+%Y-%m-%d %H:%M:%S')] Starting Samba service" >> "$BACKUP_BASE_DIR/backup.log" systemctl start samba-ad-dc # Wait for Samba to be fully operational sleep 10 if ! systemctl is-active --quiet samba-ad-dc; then echo -e "${YELLOW}⚠️ WARNING: Samba service may not be fully operational${NC}" echo "[$(date '+%Y-%m-%d %H:%M:%S')] WARNING: Samba service may not be fully operational" >> "$BACKUP_BASE_DIR/backup.log" fi # Clean old backups echo "[$(date '+%Y-%m-%d %H:%M:%S')] Clean old backups" >> "$BACKUP_BASE_DIR/backup.log" find "$BACKUP_BASE_DIR" -type f -mtime +$RETENTION_DAYS -delete echo "[$(date '+%Y-%m-%d %H:%M:%S')] Backup done" >> "$BACKUP_BASE_DIR/backup.log" echo -e "${GREEN}Backup done${NC}" {% endraw %}