Files
Maison/Migration/Ansible/roles/samba4-dc/templates/samba-backup.sh.j2
2026-02-10 12:12:11 +01:00

83 lines
2.5 KiB
Django/Jinja

#!/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 %}