Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #================================================================================================
- #
- # FILE: wbackup.sh
- # CARA GUNA: wbackup.sh file.csv
- # KETERANGAN: melakukan backup pada webhost dengan input file comma separated value (csv)
- # PENULIS: Muhfi Asbin Sagala (muhfi.asbin@usu.ac.id)
- # VERSI:
- # TGL BUAT: 15.12.2011 - 11:55
- # TGL REVISI: 05.01.2012 - 15:03
- #
- #================================================================================================
- #set -x # Debug
- TAR="$(which tar)" # Perintah kompresi tar
- DUMP="$(which mysqldump)" # Perintah dump database MySQL
- DATE="$(which date)" # Perintah penampil tanggal
- NOW="$(${DATE} +%Y%m%d)" # Tanggal sekarang
- MKDIR="$(which mkdir)" # Perintah membuat direktori
- FIM=${1} # File masukan (berupa file CSV)
- #----------------------------------------------------------------------------------------------------
- # periksa kewenangan root
- #----------------------------------------------------------------------------------------------------
- if [ "$(whoami)" != 'root' ] || [ "$(id -u)" != 0 ]; then
- echo "Siapa Kau???"
- exit 1
- fi
- #----------------------------------------------------------------------------------------------------
- # periksa file masukan
- #----------------------------------------------------------------------------------------------------
- if [ -z "${FIM}" ]; then
- echo "Masukan tidak tersedia!"
- echo "Bentuk Perintah : ${0} [nama file]"
- exit 1;
- elif [ ! -f ${FIM} ]; then
- echo "File masukan tidak ada"
- exit 1;
- elif [[ "$(echo ${FIM} | awk -F . '{print $NF;}')" != 'csv' \
- || "$(file -ib ${FIM} | awk -F ';' '{print $1}')" != 'text/plain' ]]; then
- echo "File masukan salah!"
- echo "Bukan file CSV"
- exit 1;
- else
- #----------------------------------------------------------------------------------------------------
- # mengambil data dari file masukan
- #----------------------------------------------------------------------------------------------------
- for d in $(seq 2 `wc -l "${FIM}" | awk '{print $1}'`)
- do
- UNIT="$(sed -n $d'p' "${FIM}" \
- | awk -F ';' '{ print $2 }' \
- | sed -r 's/^ *//g;s/ *$//g' \
- | tr -dc '[:print:]' )"
- DIR="$(sed -n $d'p' "${FIM}" \
- | awk -F ';' '{ print $4 }' \
- | sed -r 's/^ *//g;s/ *$//g' \
- | tr -dc '[:print:]' )"
- DB="$(sed -n $d'p' "${FIM}" \
- | awk -F ';' '{ print $5 }' \
- | sed -r 's/^ *//g;s/ *$//g' \
- | tr -dc '[:print:]' )"
- DBUSER="$(sed -n $d'p' "${FIM}" \
- | awk -F ';' '{ print $6 }' \
- | sed -r 's/^ *//g;s/ *$//g' \
- | tr -dc '[:print:]' )"
- DBPASS="$(sed -n $d'p' "${FIM}" \
- | awk -F ';' '{ print $7 }' \
- | sed -r 's/^ *//g;s/ *$//g' \
- | tr -dc '[:print:]' )"
- #----------------------------------------------------------------------------------------------------
- # periksa direktori backup dan membuatnya jika tidak ada
- #----------------------------------------------------------------------------------------------------
- RDIR="$(echo ${DIR} | sed 's|/| |g' | awk '{print $3}')"
- CDIR="$(echo ${DIR} | sed 's|/| |g' | awk '{print $4}')"
- if [ ! -d "${RDIR}/${CDIR}" ]; then
- mkdir -p "${RDIR}/${CDIR}"
- echo "Berhasil membuat ${RDIR}/${CDIR}"
- else
- echo "${RDIR}/${CDIR} sudah ada"
- fi
- #----------------------------------------------------------------------------------------------------
- # melakukan backup direktori dan database
- #----------------------------------------------------------------------------------------------------
- cd ${RDIR}/${CDIR}
- ${TAR} -zcPf ${CDIR}.${NOW}.tar.gz ${DIR}
- echo "Berhasil membuat ${CDIR}.${NOW}.tar.gz"
- ${DUMP} -u${DBUSER} -p${DBPASS} ${DB} > ${DB}.${NOW}.sql
- echo "Berhasil membuat $DB.$NOW.sql"
- cd ../..
- done
- fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement