Skip to content

Instantly share code, notes, and snippets.

@jorarmarfin
Created June 19, 2024 20:33
Show Gist options
  • Save jorarmarfin/c6c343e1a1216194638e238b0d0ea1bd to your computer and use it in GitHub Desktop.
Save jorarmarfin/c6c343e1a1216194638e238b0d0ea1bd to your computer and use it in GitHub Desktop.
#!/bin/bash
# Array de directorios de origen y sus respectivos destinos
declare -A DIRECTORIES
DIRECTORIES["/var/www/apps"]="/backup/apps"
# Fecha y hora actual
TIMESTAMP=$(date +'%Y%m%d_%H%M')
# Función para hacer backup de un directorio
backup_directory() {
local SRC_DIR="$1"
local DEST_DIR="$2"
local BASE_NAME=$(basename "${SRC_DIR}")
local BACKUP_FILE="${DEST_DIR}/${BASE_NAME}_${TIMESTAMP}.7z"
# Crear el directorio de destino si no existe
mkdir -p "${DEST_DIR}"
# Crear backup
7z a "${BACKUP_FILE}" "${SRC_DIR}" -xr'!*.git' -xr'!*.gz' -xr'!*.zip'
# Salida de información
echo "Backup de ${SRC_DIR} completado y guardado en ${BACKUP_FILE}"
}
# Iterar sobre los directorios y hacer backup
for SRC_PARENT_DIR in "${!DIRECTORIES[@]}"; do
DEST_PARENT_DIR="${DIRECTORIES[$SRC_PARENT_DIR]}"
for SUBDIR in "$SRC_PARENT_DIR"/*/; do
[ -d "${SUBDIR}" ] && backup_directory "${SUBDIR}" "${DEST_PARENT_DIR}"
done
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment