debamp/src/amp-proxmox-utils/usr/bin/vzdump.hook.sh

63 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
RETOUR=0
if [ "$1" = "backup-end" ]
then
. /etc/amp-proxmox-utils/vzdump.hook.conf
echo "vzdump hook backup-end (by thomas Legay)"
VM_ID=$3
#Rename archive name with vm hostname
VM_HOSTNAME=$(pct config $VM_ID | grep hostname | cut -d " " -f 2)
ARCHIVE_DIR=$(dirname $TARFILE)
ARCHIVE_NAME=$(basename $TARFILE)
NEW_ARCHIVE_NAME=$(echo $ARCHIVE_NAME | awk -v VM_HOSTNAME="$VM_HOSTNAME" -F '[-]+' '{print $1"-"$2"-"$3"-"VM_HOSTNAME"-"$4"-"$5'})
ARCHIVE_PREFIX=$(echo $ARCHIVE_NAME | awk -F '[-]+' '{print $1"-"$2"-"$3"-"}')
echo "Rename $ARCHIVE_NAME to $NEW_ARCHIVE_NAME"
mv $TARFILE $ARCHIVE_DIR/$NEW_ARCHIVE_NAME
TMP=$?
[ $TMP -ne 0 ] && RETOUR=$TMP
#Remove old archive
nb=$(find $ARCHIVE_DIR -regex ".*/vzdump-lxc-$VM_ID-.*\(.tgz\|.tar.gz\|.tar\|.tar.zst\|.tar.lzo\)" | wc -l)
nb_delete=$(($nb - $MAX_ARCHIVE ))
echo "$nb archives ( $nb_delete to delete)"
if [ $nb_delete -gt 0 ]
then
count=0
for archive in $(find $ARCHIVE_DIR -regex ".*/vzdump-lxc-$VM_ID-.*\(.tgz\|.tar.gz\|.tar\|.tar.zst\|.tar.lzo\)" -printf "%T@ %p\n" | sort -n | cut -d " " -f 2)
do
count=$(( $count + 1 ))
delete_prefix=$(echo $archive | sed 's/\(.tgz\|.tar.gz\|.tar\|.tar.zst\|.tar.lzo\)//')
if [ $count -le $nb_delete ]
then
for file in $(ls $delete_prefix*)
do
echo "Remove $file"
rm "$file"
done
fi
done
fi
#remove old log
find $ARCHIVE_DIR -type f -mtime +$MAX_LOG_DAYS -name "*.log" -delete
#export archive
for tmp in $(find /etc/amp-proxmox-utils/vzdump.hook.d/ -name '*.conf')
do
. $tmp
echo "copie de l'archive pour $*"
scp -P $BACKUP_PORT $ARCHIVE_DIR/$NEW_ARCHIVE_NAME $BACKUP_DEST_USER@$BACKUP_DEST_IP:$BACKUP_DEST_PATH
TMP=$?
[ $TMP -ne 0 ] && RETOUR=$TMP
for tmp in $( ssh -p $BACKUP_PORT $BACKUP_DEST_USER@$BACKUP_DEST_IP "ls -rt $BACKUP_DEST_PATH/*$3*" | grep -v -e .log | head -n -$NB_ARCHIVE);
do
echo "suppression distante de $tmp"
ssh -p $BACKUP_PORT -l $BACKUP_DEST_USER $BACKUP_DEST_IP rm $tmp
done
done
fi
exit $RETOUR