Local to Git migration
This commit is contained in:
31
Backup-Util.conf.example
Normal file
31
Backup-Util.conf.example
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
##General Configuration
|
||||||
|
RMDAYS=14 #Days until first backup gets removed
|
||||||
|
DOMC=01 #Day of month for monthly backups
|
||||||
|
SYSTEMFILES="/etc/nginx/ /etc/apache2/ /etc/php/ /etc/mysql/ /etc/crontab /opt/" #Folders and files that will be backed
|
||||||
|
|
||||||
|
#Remote
|
||||||
|
BACKUPSERVICE=sftp #Transfer prtocal use ftp or sftp
|
||||||
|
|
||||||
|
REMOTESERVER=<Remote-Server> #Addres of Remote Server
|
||||||
|
REMOTEUSER=<user> #User for Remote Server
|
||||||
|
FTPPW=<Password> #Password for FTP Server ##Comment out if SFTP is used##
|
||||||
|
REMOTEPATH=/home #Path were backup wil be stored on FTP and a site sub-folder will be made
|
||||||
|
|
||||||
|
#SQL
|
||||||
|
DBUSER='root' #MySQL Username
|
||||||
|
DBPASS='<MSQLRootPW>' #MySQL Root password (syntax '<MSQLRootPW>')
|
||||||
|
|
||||||
|
##SiteBackup site backup command, multiple commands are allowed
|
||||||
|
#example: SiteBackup -d domain.com -sn domain -db wp_093 -sd "/var/www/domain.com/html" -ext-files "/ext/test.txt" -ai1 -wpupdate
|
||||||
|
#
|
||||||
|
# -d "domain.com" #Site Domain name
|
||||||
|
# -sn "domain" #Sitename for storage
|
||||||
|
# -db "db_1" #Site database,single database "db_1" ,multiple databses is posible using the following contex "db_1 db_2 db3"
|
||||||
|
# -sd "/var/www/domain.com/html" #Site folder
|
||||||
|
# -ext-files "<optfiles>" #Extra files to get added to the site backup
|
||||||
|
# -ai1 #Enable WP all in one migration backup
|
||||||
|
# -wpupdate #Enable WP updatedb
|
||||||
|
# -nodb #Disable databse backup
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
139
Backup-Util.sh
Normal file
139
Backup-Util.sh
Normal file
@@ -0,0 +1,139 @@
|
|||||||
|
#Check for Backup-Util config file
|
||||||
|
ScriptLocation="`dirname \"$0\"`"
|
||||||
|
if [ ! -f "$ScriptLocation/Backup-Util.conf" ]; then
|
||||||
|
echo "Config file does not exist."
|
||||||
|
echo "Expected config location: $ScriptLocation/Backup-Util.conf"
|
||||||
|
echo "Exiting"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
function SiteBackup () {
|
||||||
|
|
||||||
|
WPUPDATE=0
|
||||||
|
AI1=0
|
||||||
|
|
||||||
|
TEMP=`getopt -a -o d: -l sn:,db:,sd:,ext-files:,ai1,wpupdate,nodb -- "$@"`
|
||||||
|
eval set -- "$TEMP"
|
||||||
|
while true ; do
|
||||||
|
case "$1" in
|
||||||
|
-d )
|
||||||
|
DOMAIN=$2
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--sn )
|
||||||
|
SITENAME=$2
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--db )
|
||||||
|
DBNAME=$2
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--sd )
|
||||||
|
SITEDIR=$2
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--ext-files )
|
||||||
|
SITEEF=$2
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--ai1 )
|
||||||
|
AI1=1
|
||||||
|
shift 1
|
||||||
|
;;
|
||||||
|
--wpupdate )
|
||||||
|
WPUPDATE=1
|
||||||
|
shift 1
|
||||||
|
;;
|
||||||
|
--nodb )
|
||||||
|
NODB=1
|
||||||
|
shift 1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done;
|
||||||
|
|
||||||
|
DBARRY=($DBNAME)
|
||||||
|
|
||||||
|
echo "Making backup of $SITENAME"
|
||||||
|
|
||||||
|
##SITE Run
|
||||||
|
#creating folder
|
||||||
|
SITESENDDIR="$SENDDIR/$TODAY/$SITENAME/"
|
||||||
|
mkdir -p $SITESENDDIR
|
||||||
|
|
||||||
|
#Creating AI1M file
|
||||||
|
if [ "$AI1" = "1" ]; then
|
||||||
|
sudo -u www-data wp --path="$SITEDIR" plugin update all-in-one-wp-migration-unlimited-extension
|
||||||
|
sudo -u www-data wp --path="$SITEDIR" plugin update all-in-one-wp-migration
|
||||||
|
sudo -u www-data wp --path="$SITEDIR" ai1wm backup
|
||||||
|
find "$SITEDIR"/wp-content/ai1wm-backups/ -name "*.wpress" -printf "%P\n"| tar -czf /"$SITESENDDIR"/"$SITENAME"-ai1wm.tar.gz --no-recursion -C "$SITEDIR"/wp-content/ai1wm-backups/ -T - #Create ai1wm tar File
|
||||||
|
rm -f "$SITEDIR"/wp-content/ai1wm-backups/*.wpress
|
||||||
|
fi
|
||||||
|
|
||||||
|
#Dumping DataBase(es)
|
||||||
|
if [ "$NODB" != "1" ]; then
|
||||||
|
for i in "${DBARRY[@]}"
|
||||||
|
do
|
||||||
|
mysqldump -u "$DBUSER" "$i" --password="$DBPASS" --default-character-set=utf8 > "$TMPDIR"/"$SITENAME"-"$i".sql
|
||||||
|
done
|
||||||
|
find "$TMPDIR" -name "*.sql" -printf "%P\n"| tar -czf /"$SITESENDDIR"/"$SITENAME"-DB.tar.gz --no-recursion -C "$TMPDIR" -T - #Create tar File
|
||||||
|
rm -f /"$TMPDIR"/*.sql
|
||||||
|
fi
|
||||||
|
|
||||||
|
#Taronmogelijking SiteFiles files
|
||||||
|
tar -zcf /"$SITESENDDIR"/"$SITENAME"-Files.tar.gz $SITEDIR $SITEEF
|
||||||
|
|
||||||
|
#Running WP Update
|
||||||
|
if [ $WPUPDATE = 1 ]; then
|
||||||
|
wp cli update
|
||||||
|
sudo -u www-data wp --path="$SITEDIR" core update
|
||||||
|
sudo -u www-data wp --path="$SITEDIR" plugin update --all
|
||||||
|
sudo -u www-data wp --path="$SITEDIR" theme update --all
|
||||||
|
fi
|
||||||
|
|
||||||
|
unset DOMAIN SITENAME DBNAME SITEDIR SITEEF AI1 WPUPDATE NODB DBARRY
|
||||||
|
}
|
||||||
|
|
||||||
|
#Setting static Vars and getting Configuration
|
||||||
|
RMDAYS=$(sed -n '/RMDAYS/p' "$ScriptLocation/Backup-Util.conf" | sed -n 's/RMDAYS=//p' | head -n 1 | grep -o -E '[0-9]+')
|
||||||
|
LFTP=/usr/bin/lftp #Path to binary
|
||||||
|
TMPDIR=$(mktemp -d) #Your archives are here
|
||||||
|
SENDDIR=$(mktemp -d) #Sends everything in this folder to ftp
|
||||||
|
TODAY=$(date "+%d-%m-%Y") #Today's date like DD-MM-YYYY
|
||||||
|
RMDATE=$(date "+%d-%m-%Y" -d "$RMDAYS days ago") #TODAY minus X days - too old files
|
||||||
|
DOM=`date '+%d'` #Day of the month
|
||||||
|
source "$ScriptLocation/Backup-Util.conf"
|
||||||
|
|
||||||
|
echo "Making backup of System"
|
||||||
|
#SYSTEM run
|
||||||
|
#Taring SiteFiles files
|
||||||
|
SYSSENDDIR="$SENDDIR/$TODAY/System/"
|
||||||
|
mkdir -p $SYSSENDDIR
|
||||||
|
tar -zcf /"$SYSSENDDIR"/$(hostname -s)-Files.tar.gz $SYSTEMFILES
|
||||||
|
|
||||||
|
|
||||||
|
echo "Sending files to remote server"
|
||||||
|
if [ $BACKUPSERVICE = ftp ]; then
|
||||||
|
#Uploading and remove first backup on FTP
|
||||||
|
lftp -c "open -u ${REMOTEUSER},${FTPPW} ftp://${REMOTESERVER}; mirror -p -O /${REMOTEPATH} -R -F ${SENDDIR}/*; rm -rf /${REMOTEPATH}/${RMDATE}"
|
||||||
|
|
||||||
|
#Checking and running monthly backup to FTP
|
||||||
|
if [ $DOM == $DOMC ]; then
|
||||||
|
lftp -c "open -u ${REMOTEUSER},${FTPPW} ${REMOTESERVER}; rm -rf /${REMOTEPATH}/Monthly/; mkdir -p /${REMOTEPATH}/Monthly/; mirror -p -O /${REMOTEPATH}/Monthly/ -R -F ${SENDDIR}/${TODAY}/*"
|
||||||
|
fi
|
||||||
|
elif [ $BACKUPSERVICE = sftp ]; then
|
||||||
|
#Uploading and remove first backup on SFTP
|
||||||
|
lftp -c "open -u ${REMOTEUSER}, sftp://${REMOTESERVER}; mirror -p -O /${REMOTEPATH} -R -F ${SENDDIR}/*; rm -rf /${REMOTEPATH}/${RMDATE}"
|
||||||
|
|
||||||
|
#Checking and running monthly backup to SFTP
|
||||||
|
if [ $DOM == $DOMC ]; then
|
||||||
|
lftp -c "open -u ${REMOTEUSER}, sftp://${REMOTESERVER}; rm -rf /${REMOTEPATH}/Monthly/; mkdir -p /${REMOTEPATH}/Monthly/; mirror -p -O /${REMOTEPATH}/Monthly/ -R -F ${SENDDIR}/${TODAY}/*"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
#Deletes Temp Folder
|
||||||
|
echo "Clean UP"
|
||||||
|
rm -r "$SENDDIR" && rm -r "$TMPDIR"
|
||||||
67
conf.sh
Normal file
67
conf.sh
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
mrepo=https://git.ictmaatwerk.com/VPS-scripts/MySQL
|
||||||
|
mbranch=master
|
||||||
|
|
||||||
|
if [ -z ${ignphpcms+x} ]; then ignphpcms=0;fi
|
||||||
|
if [ $ignphpcms != 1 ]; then
|
||||||
|
############
|
||||||
|
# lftp #
|
||||||
|
############
|
||||||
|
|
||||||
|
sed -i -e '$a set ssl:verify-certificate no' /etc/lftp.conf
|
||||||
|
sed -i -e '$a set sftp:auto-confirm yes' /etc/lftp.conf
|
||||||
|
|
||||||
|
##############
|
||||||
|
# wp-cli #
|
||||||
|
##############
|
||||||
|
|
||||||
|
cd /opt
|
||||||
|
wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -O /opt/wp-cli.phar
|
||||||
|
wget https://raw.githubusercontent.com/wp-cli/wp-cli/v1.5.1/utils/wp-completion.bash -O /opt/wp-completion.bash
|
||||||
|
chmod +x /opt/wp-cli.phar
|
||||||
|
mv /opt/wp-cli.phar /usr/local/bin/wp
|
||||||
|
|
||||||
|
###################
|
||||||
|
# Backup-UTIL #
|
||||||
|
###################
|
||||||
|
|
||||||
|
mkdir -p /opt/BackupUtil
|
||||||
|
sed -i -e '$a source /opt/wp-completion.bash' ~/.bash_profile
|
||||||
|
source ~/.bash_profile
|
||||||
|
sed -i "\$a30 3 * * * root bash /opt/BackupUtil/Backup-Util.sh >/dev/null 2>&1" /etc/crontab
|
||||||
|
systemctl restart cron
|
||||||
|
wget -q -t7 "$mrepo"/raw/branch/"$mbranch"/Backup-Util.sh -O /opt/BackupUtil/Backup-Util.sh
|
||||||
|
wget -q -t7 "$mrepo"/raw/branch/"$mbranch"/config/Backup-Util/Backup-Util.unconfigured -O /opt/BackupUtil/Backup-Util.confs
|
||||||
|
|
||||||
|
sed -i -e 's/PASSword/'$password'/g' -e 's/HOSTNAME/'$(hostname -s)'/g' /opt/BackupUtil/Backup-Util.conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
##############################
|
||||||
|
# Backup-util Site Setup #
|
||||||
|
##############################
|
||||||
|
wget -q -t7 "$mrepo"/raw/branch/"$mbranch"/config/Motd/50-bckupnotice -O /etc/update-motd.d/50-bckupnotice
|
||||||
|
chmod +x /etc/update-motd.d/50-bckupnotice
|
||||||
|
|
||||||
|
#CMS WP
|
||||||
|
if [ $CMS = "wordpress" ]; then
|
||||||
|
echo "SiteBackup -d $domain -sn ${domain%*.*} -db $db_name -sd /var/www/$domain/html -ai1 -wpupdate" >> /opt/BackupUtil/Backup-Util.conf
|
||||||
|
#MOTD Notice
|
||||||
|
echo 'printf $red "Please run bash ~/wp-backup-Init.sh after initialisation of WP"' >> /etc/update-motd.d/50-bckupnotice
|
||||||
|
echo 'printf "\n"' >> /etc/update-motd.d/50-bckupnotice
|
||||||
|
sed -i -e 's/DOMAINname/'$domain'/' /root/wp-backup-Init.sh
|
||||||
|
wget -q -t7 "$mrepo"/raw/branch/"$mbranch"/config/Motd/wp-backup-Init.sh -O /root/wp-backup-Init.sh
|
||||||
|
fi
|
||||||
|
#CMS None
|
||||||
|
if [ $CMS = "none" ]; then
|
||||||
|
echo "SiteBackup -d $domain -sn ${domain%*.*} -sd /var/www/$domain/html -nodb" >> /opt/BackupUtil/Backup-Util.conf
|
||||||
|
fi
|
||||||
|
#CMS Nextcloud, Full non rsync
|
||||||
|
if [ $CMS = "nextcloud" ]; then
|
||||||
|
echo "SiteBackup -d $domain -sn ${domain%*.*} -db $db_name -sd /var/www/$domain/html" >> /opt/BackupUtil/Backup-Util.conf
|
||||||
|
#MOTD Notice
|
||||||
|
echo 'printf $red "Please note that Backup-Util is not optimized for Nextcloud"' >> /etc/update-motd.d/50-bckupnotice
|
||||||
|
echo 'printf "\n" >> /etc/update-motd.d/50-bckupnotice
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user