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) ==="