#!/bin/bash	
# Simple backup script
#

############ config ################ 
### backup folder (local)
backupPath=/backup/localhost

### mysql 
mysqlUser=user
mysqlPassword=password 

### postgres
psqlHost=localhost
psqlPort=5432
psqlUser=postgres
psqlPassword=password

### remote server
remoteUser=user
remoteHost=remoteserver
remotePort=22
remotePath=/home/backup/localServerName

############ end config ############
#######################################

cat > ~/.pgpass << ^D
$psqlHost:$psqlPort:*:$psqlUser:$psqlPassword
^D

chmod 600 ~/.pgpass

ssh-keygen -t rsa
### hit return three times

### copy public key to the remote machine
### NOTE: make sure ~/.ssh exists on remote server
### and it has permissions 700
ssh-copy-id -i ~/.ssh/id_rsa.pub "-p $remotePort $remoteUser@$remoteHost"
### enter your password for username on remote_host

######################################
######### START BACKUP SCRIPT ########
######################################

cat > /etc/cron.weekly/remote_backup << ^D
#!/bin/sh
### current date
date=\`date +%Y-%m-%d\`

### current backup location
path=$backupPath/\$date
mysqlBackup=\$path/mysql
psqlBackup=\$path/psql 

### create path if doesn't exist #####
function validateDir {
  if [ ! -d \$1 ]
  then
    mkdir -p \$1
  fi
}

validateDir \$path
  
######### backup mysql ###############
validateDir \$mysqlBackup
#mysqldump -u $mysqlUser -p$mysqlPassword --all-databases > \$mysqlBackup/dumpall.sql

######### backup postgres ############
validateDir \$psqlBackup
pg_dumpall -U $psqlUser > \$psqlBackup/dumpall.sql

######### backup archive #############
#tar zcvf \$path/etc.tgz /etc/
#validateDir \$path/var
#tar zcvf \$path/var/named.tgz /var/named/
#tar zcvf \$path/home.tgz /home/

######### save to remote server #######
rsync -e "ssh -p $remotePort" -avrp $path $remoteUser@$remoteHost:$remotePath


^D
######################################
######### END BACKUP SCRIPT ########
######################################

chmod 700 /etc/cron.weekly/remote_backup

### create remote backup path
ssh -p $remotePort $remoteUser@$remoteHost mkdir -p $remotePath

