Sebagai Admin sebuah server sudah sewajarnya jika kita membuat backup database yang ada di server kita secara automatis. Untuk ini berikut akan saya sampaikan cara untuk membuat script backup PostgreSQL secara automatis dengan operating system under linux dan langsung mengirimkannya ke sever backup dengan metode ftp.

1. Buat dahulu sebuah file applikasi yang dapat kita eksekusi.
[root@maulana]#touch /home/Maulana/pgsql_backup.sh

2. Buka file tersebut dan isikan dengan script dibawah ini.
[root@maulana]#vim /home/Maulana/pgsql_backup.sh

#===================
#!/bin/bash
#SCRIPTOR By MAULANA
#===================
BACKUP_DIR="/home/Maulana"
PGHOST="localhost" #PostgreSQL Host
PGUSER="postgres" #PostgreSQL User
date="$(date +%Y%m%d)"
jam="$(date +%H%M%S)"

FTPD="/pgsql" #FTP Direktori
FTPU="pgsql" #FTP User
FTPP="12345" #FTP Password
FTPS="192.168.5.4" #FTP Server

files=$BACKUP_DIR/$date

if [ -d $files ];
then
#rm -rf $j
echo Direktori sudah ada, proses akan dilanjutkan
else
echo Direktori backup belum dibuat, proses akan dilanjutkan
fi
mkdir -p $files

LIST="$(psql -h $PGHOST -U $PGUSER -l | awk '{print $1}' | grep -vE '^-|^List|^Name|^[(]|^template[0|1]')"

  for db in $LIST
  do

  FILE="$files/$date.$jam.DB-$db.sql.gz"
  echo Backup Database $db For $date Pada Folder $FILE
  /usr/bin/pg_dump -h $PGHOST -U $PGUSER $db | gzip -c > $FILE
  done

cd $BACKUP_DIR/
ARCHIVE=$date.$jam.gz
ARCHIVED=$date

tar -cvf $ARCHIVE $ARCHIVED

### Dump backup using FTP ###
DUMPFILE=$date.$jam.gz
ftp -n $FTPS <<END_SCRIPT
quote USER $FTPU
quote PASS $FTPP
mkdir $date
cd $FTPD/$date
mput $DUMPFILE
disconnect
close
END_SCRIPT

### Delete the backup dir and keep archive ###

rm -rf $ARCHIVED

###End Script####

3. Edit script ini sesuai konfigurasi database dan ftp server anda.
PGHOST, PGUSER, FTPD, FTPU, FTPP dan FTPS.

Setelah selesai kita membuat file diatas maka tekan Esc + : x, lalu jangan lupa set chmod 700 di file pgsql_backup.sh
[root@maulana]#chmod 700 /home/Maulana/pgsql_backup.sh

Untuk mengeksekusi file tersebut pada waktu-waktu tertentu, maka yang perlu kita lakukan adalah mengkonfigurasi crontab, berikut langkah-langkahnya:

[root@maulana]# crontab -e

Tambahkan :
44 12 * * * /home/Maulana/pgsql_backup.sh

Keterangan:
44 yaitu setiap menit ke 44
12 yaitu setiap jam 12
maka backup akan terjadi setiap hari pada pukul 12:44 siang

Share