script to take base backup and delete old backup files
# create backup of master Postgess and compress
export PATH=/home/postgres/software/9.6/bin/psql:$PATH
d=$(date +%Y-%m-%d)
LOGFILE=”backup-$d.log”
export PGPASSWORD=”password”
MASTERD=”10.96.43.37″
DIRECTORY=$d
BACKUP_LOC=/backup
ARCHIVE_LOC=/archive
LOG_LOC=/backup/logs
TO=”user1@yahoo.com user2@yahoo.com user3@yahoo.com user4@yahoo.com”
# Create a directory for today backup
mkdir -p $BACKUP_LOC/$DIRECTORY
echo “Backup started at $(date) by $0” > $LOG_LOC/$LOGFILE
#Stream mode does not compress
pg_basebackup -h $MASTERD -U back_user -p 5432 -D $BACKUP_LOC/$DIRECTORY –xlog-method=stream -v –checkpoint=fast >> $LOG_LOC/$LOGFILE 2>&1
if [ $? -eq 0 ]
then
echo “—————–” >> $LOG_LOC/$LOGFILE 2>&1
echo “BACKUP SUCCESSFUL” >> $LOG_LOC/$LOGFILE 2>&1
echo “—————–” >> $LOG_LOC/$LOGFILE 2>&1
echo “Backup completed successfully. Please check the attached logfile” > /tmp/backup_status
STATUS=0
else
STATUS=1
echo “Backup failed with some errors. Please check the attached logfile” > /tmp/backup_status
fi
# compress
echo “Compress started at $(date)” >> $LOG_LOC/$LOGFILE
# Create tar file and compress it
tar -czvf $BACKUP_LOC/$d.tar.gz /backup/$d >> /dev/null 2>&1
# clean some old information
/bin/rm -rf /backup/$d >> $LOG_LOC/$LOGFILE 2>&1
echo “Finished at $(date)” >> $LOG_LOC/$LOGFILE
mail -a $LOG_LOC/$LOGFILE -s “Backup status” $TO < /tmp/backup_status
rm -f /tmp/backup_status
## Delete old backups
/usr/bin/find $BACKUP_LOC/*.tar.gz -mtime +28 -delete
/usr/bin/find $LOG_LOC/backup*.log* -mtime +28 -delete
## Delete old archive logs
/usr/bin/find $ARCHIVE_LOC/* -mtime +28 -delete