[BASH] backup assets for laravel projecet - fourslickz/notes GitHub Wiki

#!/bin/bash
dir=/root/backup_assets

date=$(date +%Y%m%d-%H%M%S)
tanggal=$(date +%d)
bulan=$(date +%m)
tahun=$(date +%Y)

remote_dir=/home/pramuka/backup_assets
remote_host=BACKUP-SERVER-IP-ADDRESS
remote_user=USERNAME
remote_ssh_port=SSH-PORT


backup()
{

    echo "starting backup $app..."
    path=$dir/$tahun/$bulan/$tanggal
    parentDirectory=$path/$app

    if [ ! -d "$parentDirectory" ];
      then mkdir --parents $parentDirectory;
    fi

    # copy directory
    cd $2
    rsync -av --exclude={'framework','logs'} storage $parentDirectory/
    rsync -av --no-links public $parentDirectory/

    # create zip
    cd $path
    zip -r ./$app-$date.zip ./$app

    # send file to archive server
    cd $dir
    rsync -avz -e "ssh -p 2244" --relative ./$tahun/$bulan/$tanggal/$app-$date.zip $remote_user@$remote_host:$remote_dir

    # clean directory
    rm -rf $dir

}

produksi()
{
    echo "starting backup produksi"
}

app=$1
case $app
in
    project-1) backup $app '/var/www/html/live/project-1' ;;
    project-2) backup $app '/var/www/html/live/project-2' ;;
    project-3) backup $app '/var/www/html/live/project-3' ;;
    project-4) backup $app '/var/www/html/live/project-4' ;;
    project-5) backup $app '/var/www/html/live/project-5' ;;
    *) echo "Nothing to do"
       exit ;;
esac