Created
October 28, 2021 10:04
-
-
Save ArrayIterator/2a9a1ddc2fff7dec4dfd1e20e70efe3a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
C_USER='user' | |
CWD_DIR=/home/${C_USER}/host/aurys.fr | |
CONFIG_DIR=${CWD_DIR}/config | |
BACKUP_DIR=${CWD_DIR}/database | |
CONFIG_FILE=${CWD_DIR}/public/wp-config.php | |
COMMITDATE=`date '+%Y-%m-%d %H:%M:%S'` | |
C_NAME='${C_USER}' | |
C_EMAIL='${C_USER}@127.0.0.1' | |
echo -e "---------------------------------\n" | |
echo -e " GIT BACKUP\n"; | |
echo -e "---------------------------------\n" | |
if [ $(whoami) != ${C_USER} ]; then | |
echo -e "\e[31m[FAILED]\e[00m PLEASE USE USER : \e[35m\`${C_USER}\`\e[00m TO RUN BACKUP\n"; | |
exit; | |
fi | |
if [ ! -f /usr/bin/git ]; then | |
echo -e "\e[31m[FAILED]\e[00m BINARY APPLICATION : \e[35m\`/usr/bin/git\`\e[00m IS NOT INSTALLED\n"; | |
exit; | |
fi | |
if [ ! -f ${CONFIG_FILE} ]; then | |
echo -e "\e[31m[FAILED]\e[00m CONFIG FILE: \e[32m${CONFIG_FILE}\e[00m DOES NOT EXIST!\n\n"; | |
exit; | |
fi | |
GIT_ORIGIN=`git remote` | |
GIT_REMOTE=`git remote -v` | |
if [ "${GIT_REMOTE}" == '' ]; then | |
echo -e "\e[31m[FAILED]\e[00m REMOTE \e[32mREPOSITORY\e[00m DOES NOT EXIST!\n\n"; | |
fi | |
echo -e "\e[35m[PREPARE]\e[00m GO TO : \e[32m${CWD_DIR}\e[00m"; | |
# > GOTO | |
cd ${CWD_DIR}; | |
if [ ! -d ${BACKUP_DIR} ]; then | |
mkdir -p "${BACKUP_DIR}" | |
fi | |
# > DETERMINE DB CHECKING | |
echo -e "\e[35m[PREPARE]\e[00m DOING \e[32mDATABASE CHECKUP\e[00m"; | |
DB_HOST=`cat ${CONFIG_FILE} | grep DB_HOST | grep -iPoh "[^\"\'\(\)]+" |tail -1` | |
DB_USER_NAME=`cat ${CONFIG_FILE} | grep DB_USER | grep -iPoh "[^\"\'\(\)]+" |tail -1` | |
DB_PASSWORD=`cat ${CONFIG_FILE} | grep DB_PASSWORD | grep -iPoh "[^\"\'\(\)]+" |tail -1` | |
DB_NAME=`cat ${CONFIG_FILE} | grep DB_NAME | grep -iPoh "[^\"\'\(\)]+" |tail -1` | |
if [ ${DB_HOST} == '' ];then | |
echo "\e[31m[FAILED]\e[00m Database Host Does not exists."; | |
fi | |
if [ ${DB_USER_NAME} == '' ];then | |
echo "\e[31m[FAILED]\e[00m Database Username Does not exists."; | |
fi | |
if [ ${DB_PASSWORD} == '' ];then | |
echo "\e[31m[FAILED]\e[00m Database Password Does not exists."; | |
fi | |
if [ ${DB_NAME} == '' ];then | |
echo "\e[31m[FAILED]\e[00m Database Password Does not exists."; | |
fi | |
echo -e " + DATABASE HOST : \e[32m${DB_HOST}\e[00m"; | |
echo -e " + DATABASE USER : \e[32m${DB_USER_NAME}\e[00m"; | |
echo -e " + DATABASE PASSWORD: \e[32m${DB_PASSWORD}\e[00m"; | |
echo -e " + DATABASE NAME : \e[32m${DB_NAME}\e[00m"; | |
TMPDBNAME="${BACKUP_DIR}/${DB_NAME}.sql.tmp" | |
DBNAME="${BACKUP_DIR}/${DB_NAME}.sql" | |
echo -e "\e[35m[BACKUPING]\e[00m BACKUP DATABASE TO \e[32m${DBNAME}\e[00m"; | |
COMMAND="mysqldump -u ${DB_USER_NAME} --password='${DB_PASSWORD}' --host=${DB_HOST} ${DB_NAME} &> ${DBNAME}" | |
echo -e "Running Command:\n${COMMAND}" | |
mysqldump -u ${DB_USER_NAME} --password="${DB_PASSWORD}" --host=${DB_HOST} ${DB_NAME} &> ${TMPDBNAME} || exit | |
# exit; | |
EXISTSDB=$(cat ${TMPDBNAME} | grep CREATE | head -1); | |
if [[ "${EXISTSDB}" == '' ]];then | |
# rm ${TMPDBNAME} | |
echo -e "\e[31m[FAILED]\e[00m No Database Has Been Backed UP."; | |
else | |
if [ -f ${DBNAME} ];then | |
rm ${DBNAME} | |
fi | |
echo -e "\e[32m[SUCCEEED]\e[00m Database Has Been Backed UP."; | |
mv -f ${TMPDBNAME} ${DBNAME} | |
fi | |
# REMOVE CACHED | |
echo -e '\e[35m[COMPRESS]\e[00m COMPRESS DATABASE TO GZIP' | |
if [ -f "${DBNAME}.previous.gz" ]; then | |
rm -f "${DBNAME}.previous.gz"; | |
git rm --cached "${DBNAME}.previous.gz" | |
fi | |
if [ -f "${DBNAME}.gz" ]; then | |
mv "${DBNAME}.gz" "${DBNAME}.previous.gz" | |
git rm --cached "${DBNAME}.gz" | |
fi | |
gzip -9 $DBNAME | |
# BACKUP GIT | |
echo -e '\e[35m[PUSH]\e[00m PROCESSING BACKUP TO GIT' | |
echo -e " + Set email to \e[32m[${C_EMAIL}]\e[00m" | |
/usr/bin/git config user.email "${C_EMAIL}" &> /dev/null | |
echo -e " + Set Username to \e[32m[${C_NAME}]\e[00m" | |
/usr/bin/git config user.name "${C_NAME}" &> /dev/null | |
echo -e " + Adding all files" | |
/usr/bin/git add -A &> /dev/null | |
echo -e " + Commiting files with commit note: Backup \e[32m${COMMITDATE}\e[00m" | |
/usr/bin/git commit -am "Backup ${COMMITDATE}" &> /dev/null | |
echo -e " + Push data to repository" | |
/usr/bin/git push origin master | |
echo -e " + Prune garbage collection" | |
/usr/bin/git gc --prune --aggressive # &> /dev/null | |
/usr/bin/git repack --max-pack-size=1g -a -d | |
#/usr/bin/git remote update | |
echo -e "\e[35m[DONE]\e[00m\n\n" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment