Kopia kontenera Samba

nano /root/rsync_backup_lxc.sh

 

#!/bin/bash

CONTAINER="srv-ad"
SOURCE="/var/lib/lxc/$CONTAINER/"
BACKUP_ROOT="/mnt/BackUp/srv-ad/rsync_lxc"
LATEST_LINK="$BACKUP_ROOT/latest"

DATE=$(date +%Y-%m-%d)
TIME=$(date +%H-%M)
CURRENT_HOUR=$(date +%H)

echo "=== Start rotacyjnego backupu rsync: $(date) ==="

# 1. Spójność bazy Samba AD
lxc-attach -n $CONTAINER -- mkdir -p /var/backups/samba-ad
lxc-attach -n $CONTAINER -- samba-tool domain backup online --targetdir=/var/backups/samba-ad --configfile=/etc/samba/smb.conf

# 2. Określenie typu backupu (Godzina 02 = Dzienny, każda inna = Godzinowy)
if [ "$CURRENT_HOUR" -eq "02" ]; then
    CURRENT_BACKUP="$BACKUP_ROOT/daily-$CONTAINER-$DATE"
else
    CURRENT_BACKUP="$BACKUP_ROOT/hourly-$CONTAINER-$DATE-$TIME"
fi

# 3. Wykonanie przyrostowego rsync (z wykorzystaniem hardlinków)
if [ -L "$LATEST_LINK" ]; then
    rsync -av --delete --link-dest="$LATEST_LINK" "$SOURCE" "$CURRENT_BACKUP"
else
    rsync -av "$SOURCE" "$CURRENT_BACKUP"
fi

# Aktualizacja linku do najnowszego backupu
rm -f "$LATEST_LINK"
ln -s "$CURRENT_BACKUP" "$LATEST_LINK"

# ==============================================================================
# 4. ROTACJA (Zostawiamy dokładnie po 5 kopii z każdego rodzaju)
# ==============================================================================

# Czyszczenie kopii godzinowych (zostawia 5 najnowszych)
echo "Rotacja kopii godzinowych..."
ls -dt $BACKUP_ROOT/hourly-$CONTAINER-* 2>/dev/null | tail -n +6 | xargs -I {} rm -rf "{}"

# Czyszczenie kopii codziennych (zostawia 5 najnowszych)
echo "Rotacja kopii codziennych..."
ls -dt $BACKUP_ROOT/daily-$CONTAINER-* 2>/dev/null | tail -n +6 | xargs -I {} rm -rf "{}"

echo "=== Backup i rotacja zakończone: $(date) ==="

 

Spis treści: