| Server IP : 202.61.199.114 / Your IP : 216.73.217.139 Web Server : nginx/1.22.1 System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64 User : web20 ( 1018) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/crons/ |
Upload File : |
#!/bin/bash
declare -a weblist dbase
backupType="$1"
backupPass="J:xn\T=+P!K|r;V_O2i2"
webfolders="/var/www/"
vhostfolder="/etc/nginx/sites-available/"
# auto delete these files
filelist=(readme.html license.txt liesmich.html wp-config-sample.php)
datebkp="$(date '+%Y%m%d-%H%M')"
DIRS=$'\n' read -d '' -r -a weblist <<< "$(find ${webfolders} -maxdepth 1 -type l -printf "%f\n")"
echo "RESULTS FOR: $HOSTNAME"
for domain in "${weblist[@]}"
do echo "# $domain"
domainFull="${webfolders}${domain}/web/"
configFile="${domainFull}wp-config.php"
backupFolder="${webfolders}${domain}/private/"
if [[ -f "${configFile}" ]]
then
# delete WordPress default files
for file in "${filelist[@]}"; do if [ -f "${domainFull}$file" ]; then rm -f --interactive=never "${domainFull}$file" && echo "$(date +'%Y-%m-%d %H:%M:%S') - deleted ${domainFull}$file"; fi; done
# create temporary folder for backup files
if [[ ! -d "${backupFolder}/misc" ]]; then mkdir "${backupFolder}/misc"; fi
storageFolderMisc="~/storage/Webserver/${HOSTNAME}/${domain}/misc"
storageFolderWeb="~/storage/Webserver/${HOSTNAME}/${domain}/web"
IFS=$'\n' read -d '' -r -a dbase <<< "$(php -d display_errors=off -r 'include("'${configFile}'"); print DB_NAME . "\n" . DB_USER . "\n" . DB_PASSWORD . "\n" . DB_HOST;')"
printf "WEBSITE: ${domain}\nSERVER: $HOSTNAME\n\nDB_NAME: ${dbase[0]}\nDB_USER: ${dbase[1]}\nDB_PASS: ${dbase[2]}\nDB_HOST: ${dbase[3]}\n\ngunzip < database.sql.gz | mysql --user=${dbase[1]} --password=${dbase[2]} ${dbase[0]}" > "${backupFolder}misc/mysql_access.txt"
printf '#!/bin/bash\n\ngunzip < database.sql.gz | mysql --user='"${dbase[1]}"' --password='"${dbase[2]}"' '"${dbase[0]}"'\nif [ "$?" -eq 0 ]\nthen\n\techo "import was successful"\nelse\n\techo "import failed"; printf "'"\\\n"'"\n\n\tread -p "Enter MySQL User: " mysql_user\n\tread -sp "Enter MySQL Password: " mysql_pass; printf "'"\\\n"'"\n\tread -p "Enter MySQL Database: " mysql_dbase; printf "'"\\\n"'"\n\n\tgunzip < database.sql.gz | mysql --user="${mysql_user}" --password="${mysql_pass}" "${mysql_dbase}"\n\tif [ "$?" -eq 0 ]; then echo "import was successful"; else echo "ERROR: import aborted"; exit 1; fi;\nfi' > "${backupFolder}misc/import.sh"
# set rights to run this script in cli
chmod +x "${backupFolder}misc/import.sh"
# copy vhost
if [[ -f "${vhostfolder}${domain}.vhost" ]]; then cp "${vhostfolder}${domain}.vhost" "${backupFolder}misc/${domain}.vhost"; fi
mysqldump -u "${dbase[1]}" -p"${dbase[2]}" "${dbase[0]}" | gzip > "${backupFolder}misc/database.sql.gz"
ssh st20897@storage.cloud.pacim.de "mkdir -p ${storageFolderMisc}"
# Verschlüsseltes Archiv erstellen
7z a -mhe=on "${backupFolder}${datebkp}_misc.7z" "${backupFolder}misc/*" -p"${backupPass}"
scp -r "${backupFolder}${datebkp}_misc.7z" st20897@storage.cloud.pacim.de:"${storageFolderMisc}"
if [[ "${backupType}" = "FULL" ]]
then
7z a -mhe=on "${backupFolder}${datebkp}_web.7z" "${webfolders}${domain}/web/*" -p"${backupPass}"
ssh st20897@storage.cloud.pacim.de "mkdir -p ${storageFolderWeb}"
scp -r "${backupFolder}${datebkp}_web.7z" st20897@storage.cloud.pacim.de:"${storageFolderWeb}"
fi
# Backup Files löschen
if [ ! -z "${backupFolder}" ]; then cd "${backupFolder}" && rm -r *; fi
fi
done