Site icon PlusMagi's Blog By Pitt Phunsanit

Docker: Samba Backup

เป็น shell script ที่จะ backup samba container ไว้ที่ folder data_backup

  1. สร้าง folder เก็บข้อมูลก่อน โดยคำสั่ง
    mkdir -p /Users/Shared/Portable/ad-samba-m/data_backup
  2. สร้างไฟล์
    touch data_backup.sh
  3. ใส่เนื้อหา
    #!/bin/bash
    
    # Configuration with Defaults
    VOLUME_NAME="${1:-ad-samba-data}"
    BACKUP_DIR="${2:-./data_backup}"
    TIMESTAMP=$(date +"%Y%m%dT%H%M%S")
    BACKUP_FILE="${BACKUP_DIR}/ad_samba_backup_${TIMESTAMP}.tar.gz"
    
    echo "=========================================="
    echo " Samba AD DC Backup Utility"
    echo "=========================================="
    echo "Volume Name: $VOLUME_NAME"
    echo "Backup Dir : $BACKUP_DIR"
    echo "Target File: $BACKUP_FILE"
    echo "------------------------------------------"
    
    # Create backup directory if it doesn't exist
    mkdir -p "$BACKUP_DIR"
    
    # 1. Stop the container to ensure data consistency
    echo "Stopping container..."
    docker compose stop
    
    if [ $? -ne 0 ]; then
    	echo "❌ Failed to stop container. Backup aborted."
    	exit 1
    fi
    
    # 2. Perform Backup
    echo "Starting backup..."
    # Run a temporary alpine container to mount the volume and backup directory,
    # then compress the volume contents into a tar.gz file.
    docker run --rm \
      -v "$VOLUME_NAME":/source_volume \
      -v "$(pwd)/$BACKUP_DIR":/backup_dir \
      alpine \
      tar czf "/backup_dir/ad_samba_backup_${TIMESTAMP}.tar.gz" -C /source_volume .
    
    BACKUP_STATUS=$?
    
    # 3. Start the container again
    echo "Starting container..."
    docker compose start
    
    # 4. Check Result
    if [ $BACKUP_STATUS -eq 0 ]; then
      echo "✅ Backup successful: $BACKUP_FILE"
      # List the created file to show size
      ls -lh "$BACKUP_FILE"
    else
      echo "❌ Backup failed!"
      exit 1
    fi
    
  4. ให้สิทธิ์
    chmod +x data_backup.sh

BACKUP

สามารถทำได้ง่าย ๆ โดยคำสั่ง

./data_backup.sh

จะดึงข้อมูลจาก Volume ad-samba-data มาเก็บเป็นไฟล์ .tar.gz ในโฟลเดอร์ data_backup/ บน Host

options

ตัวอย่างการนำสคริปต์ไปรันใช้งานจริง


อ่านเพิ่มเติม

Exit mobile version