summaryrefslogtreecommitdiffstats
path: root/Bash/virtualhosts-backup.sh
diff options
context:
space:
mode:
Diffstat (limited to 'Bash/virtualhosts-backup.sh')
-rw-r--r--Bash/virtualhosts-backup.sh75
1 files changed, 75 insertions, 0 deletions
diff --git a/Bash/virtualhosts-backup.sh b/Bash/virtualhosts-backup.sh
new file mode 100644
index 0000000..839b199
--- /dev/null
+++ b/Bash/virtualhosts-backup.sh
@@ -0,0 +1,75 @@
+#!/bin/bash
+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#
+# Virtualhost backup script [Thomas Lange <tl@nerdmind.de>] #
+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#
+# #
+# This script goes through the first level in the virtual host root directory #
+# and creates for each domain name within a compressed backup file. The script #
+# is compatible with a directory structure like the following: #
+# #
+# |--- bob #
+# | |--- bobs-blog.tld #
+# | |--- config #
+# | |--- htdocs #
+# |--- alice #
+# | |--- alice-domain.tld #
+# | |--- config #
+# | |--- htdocs #
+# |--- thomas #
+# |--- sub1.thomas-blog.tld #
+# | |--- config #
+# | |--- htdocs #
+# |--- sub2.thomas-blog.tld #
+# |--- config #
+# |--- htdocs #
+# #
+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#
+
+#===============================================================================
+# Define backup main directories
+#===============================================================================
+DIRECTORY_ROOT="/mnt/data/backups/virtualhosts/"
+DIRECTORY_PATH="$(date +%Y-%m-%d-%Hh%Mm)/"
+DIRECTORY_FROM="/var/www/"
+
+#===============================================================================
+# Delete old backups in backup root directory
+#===============================================================================
+find "${DIRECTORY_ROOT}" -type d -mtime +14 -exec rm -r {} \;
+
+#===============================================================================
+# Create backup path directory if not exists
+#===============================================================================
+if [ ! -d "${DIRECTORY_ROOT}${DIRECTORY_PATH}" ]; then
+ mkdir "${DIRECTORY_ROOT}${DIRECTORY_PATH}"
+fi
+
+#===============================================================================
+# Loop through all usernames within the source root directory
+#===============================================================================
+for username in $(find ${DIRECTORY_FROM}* -maxdepth 0 -type d -exec basename {} \;); do
+
+ #===============================================================================
+ # Define backup sub directories and target filename
+ #===============================================================================
+ DIRECTORY_USER="${DIRECTORY_ROOT}${DIRECTORY_PATH}${username}/"
+ DIRECTORY_FILE="${DIRECTORY_USER}%s.tar.bz2"
+
+ echo "[INFO] Entering directory: ${DIRECTORY_FROM}${username}/:"
+
+ #===============================================================================
+ # Create backup sub path directory if not exists
+ #===============================================================================
+ if [ ! -d "${DIRECTORY_USER}" ]; then
+ echo "[INFO] Creating backup directory for user $username [...]"
+ mkdir "${DIRECTORY_USER}"
+ fi
+
+ #===============================================================================
+ # Loop through all virtualhosts within the user directory
+ #===============================================================================
+ for virtualhost in $(find ${DIRECTORY_FROM}${username}/* -maxdepth 0 -type d -exec basename {} \;); do
+ echo "[INFO] Creating compressed backup for virtualhost $virtualhost [...]"
+ tar --create --bzip2 --file "$(printf "${DIRECTORY_FILE}" "${virtualhost}")" --directory "${DIRECTORY_FROM}${username}/" "${virtualhost}"
+ done
+done \ No newline at end of file