83 lines
2.5 KiB
Django/Jinja
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 %} |