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/