BAckup for Postgresql databases including remote CIFS share

ALL SCRIPTS AND OPERATIONS AS ROOT!

Mount the Samba/CIFS share and prepare folders and helper files

sudo apt-get install -y cifs-utils
mkdir /var/backups/pgsql/
mkdir /mnt/share
mount  //<your_backup_storage>/backup/pgsql -t cifs -o username=***,password=***  /mnt/share
echo "SELECT datname FROM pg_database;" > /var/backups/bases.sql
echo "
0  *    * * *   root    find /mnt/share/ -type d -mtime +30 -exec rm -rf '{}' +
0  *    * * *   root    find /mnt/share/ -type d -mtime +10 -not -name "*-23*" -exec rm -rf '{}' +
0  */1  * * *   root    find /var/backups/pgsql -type d -mmin +600 -not -name "*-23*" -exec rm -rf '{}' +
0  0    * * *   root    find /var/backups/pgsql -type d -mtime +5 -exec rm -rf '{}' +
03,33 1-23 * * *   root    nice -5 /var/backups/postgres.sh
" >> /etc/crontab
echo "//<your_backup_storage>/backup /mnt/share/ cifs username=***,password=***,iocharset=utf8,file_mode=0777,dir_mode=0777" >> /etc/fstab

/var/backups/postgres.sh

#!/bin/sh
hostname=`hostname`
  time=`date +"%H%M"`
  date=`date +"%Y%m%d"`
dirpath="/var/backups/pgsql/$date-$time"
mntpath="/mnt/share/$date-$time"
mkdir -p $dirpath
mkdir -p $mntpath
chmod -R 777 $dirpath

for db in $( su -c "psql < /var/backups/bases.sql" -m postgres | grep crm | egrep -v "_old_")
do
  logger "Backup $db"
  filename="$dirpath/${hostname}_${db}_${date}_$time.sql"
  logger "pg_dump --dbname=$db --file=$filename"
  su -c "pg_dump --dbname=$db --file=$filename" -m postgres
  gzip $filename
  logger "Sending to CIFS"
  cp $filename.gz $mntpath
done
logger "Done"
exit 0

Permission fix

chmod +x /var/backups/postgres.sh
chmod -R ao+wr /var/backups/pgsql/
faq/support/postgresql/backup.txt · Last modified: 2019/04/10 08:51 by 127.0.0.1
Back to top
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0