131 lines
3.0 KiB
Bash
Executable File
131 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
DIR_PATH=${1}
|
|
DIR=$(/usr/bin/basename ${DIR_PATH})
|
|
LOG="${DIR}-backup.log"
|
|
TIMESTAMP=$(/usr/bin/date +%Y/%m/%d' '%H:%M:%S)
|
|
|
|
#
|
|
# show to screen also and write to file
|
|
#
|
|
function log() {
|
|
echo -e "\e[96m`date +'%d/%m/%Y %H:%M:%S'`\e[39m ${1}"
|
|
echo -e "`date +'%d/%m/%Y %H:%M:%S'` ${1}" >> $LOG
|
|
}
|
|
|
|
#
|
|
# database - get credentials
|
|
#
|
|
function get_db_credentials() {
|
|
SETTINGS=$(find ${DIR} -name settings.php | grep default)
|
|
DATABASE=$(cat $SETTINGS | tr -d ' ' | grep "^'database'" | awk -F\' '{print $4}')
|
|
USERNAME=$(cat $SETTINGS | tr -d ' ' | grep "^'username'" | awk -F\' '{print $4}')
|
|
PASSWORD=$(cat $SETTINGS | tr -d ' ' | grep "^'password'" | awk -F\' '{print $4}')
|
|
|
|
[[ -z "${SETTINGS}" ]] && log "Empty variable SETTINGS" && return 1
|
|
[[ -z "${DATABASE}" ]] && log "Empty variable DATABASE" && return 1
|
|
[[ -z "${USERNAME}" ]] && log "Empty variable USERNAME" && return 1
|
|
[[ -z "${PASSWORD}" ]] && log "Empty variable PASSWORD" && return 1
|
|
|
|
log "SETTINGS: ${SETTINGS}"
|
|
log "DATABASE: ${DATABASE}"
|
|
log "USERNAME: ${USERNAME}"
|
|
log "PASSWORD: ${PASSWORD}"
|
|
|
|
return 0
|
|
}
|
|
|
|
#
|
|
# database - verify credentials
|
|
#
|
|
function verify_db_credentials() {
|
|
mysql -u"${USERNAME}" -p"${PASSWORD}" --batch --skip-column-names -e "SHOW DATABASES;" | grep "${DATABASE}" > /dev/null;
|
|
|
|
if [ $? -ne 0 ];then
|
|
log "Verify database credentials [FAIL]"
|
|
return 1
|
|
fi
|
|
|
|
log "Verify database credentials [ OK ]"
|
|
return 0
|
|
}
|
|
|
|
#
|
|
# database - export data
|
|
#
|
|
function export_db() {
|
|
mysqldump -u"${USERNAME}" -p"${PASSWORD}" ${DATABASE} > ${DATABASE}.sql
|
|
|
|
if [ $? -ne 0 ];then
|
|
log "Export database [FAIL]"
|
|
return 1
|
|
fi
|
|
|
|
log "Export database [ OK ]"
|
|
return 0
|
|
}
|
|
|
|
#
|
|
# Check the path
|
|
#
|
|
function check_path() {
|
|
[ ! -d ${DIR} ] && log "${TIMESTAMP} ${DIR} does not exist" && return 1
|
|
[ ! -f ${DIR}/web/sites/default/settings.php ] && \
|
|
[ ! -f ${DIR}/sites/default/settings.php ] && log "${TIMESTAMP} Cannot find setting.php" && return 1
|
|
return 0
|
|
}
|
|
|
|
#
|
|
# Create tarball
|
|
#
|
|
function create_tarball() {
|
|
log "Create ${DIR}-backup.tar.gz"
|
|
tar -czpf "${DIR}-backup.tar.gz" "${DIR}" "${DIR}.sql"
|
|
[ $? -ne 0 ] && return 1
|
|
return 0
|
|
}
|
|
|
|
#
|
|
# Create checksum
|
|
#
|
|
function create_checksum() {
|
|
log "Create ${DIR}-backup.md5sum checksum"
|
|
CHECKSUM=$(md5sum ${DIR}-backup.tar.gz | awk '{print $1}' )
|
|
echo ${CHECKSUM} > "${DIR}-backup.md5sum"
|
|
}
|
|
|
|
#
|
|
# Start
|
|
#
|
|
function main () {
|
|
if check_path; then
|
|
if get_db_credentials; then
|
|
if verify_db_credentials; then
|
|
if export_db; then
|
|
if create_tarball; then
|
|
create_checksum
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
}
|
|
|
|
[ ${#} -lt 1 ] && log "${TIMESTAMP} Directory argument is missing" && return 1
|
|
[ ${#} -gt 1 ] && log "${TIMESTAMP} Too many arguments" && return 1
|
|
|
|
main
|
|
|
|
#
|
|
# Show results
|
|
#
|
|
echo
|
|
# ls -lh ${DIR}-backup.tar.gz --color=auto
|
|
# ls -lh ${DIR}-backup.md5sum --color=auto
|
|
# ls -lh ${DIR}-backup.log --color=auto
|
|
ls -lh ${DIR}-backup.* --color=auto
|
|
echo
|
|
echo -e " MD5 checksum: $(cat ${DIR}-backup.md5sum)"
|
|
echo
|
|
|