@@ -42,7 +42,7 @@ execute_command() {
4242BACKUP_DIR=" backup"
4343ABS_BACKUP_PATH=" $( pwd) /${BACKUP_DIR} "
4444TIMESTAMP=$( date +%Y-%m-%d-%H-%M-%S)
45- TEMP_BACKUP_DIR= " /tmp/tmp-backups/ ${TIMESTAMP} "
45+ TMP_DIR= " ${ABS_BACKUP_PATH} /tmp- ${TIMESTAMP} "
4646FILESYSTEM_BACKUP_NAME=" filesystem-${TIMESTAMP} .tar.gz"
4747APP_BACKUP_NAME=" app-${TIMESTAMP} .tar.gz"
4848
@@ -72,45 +72,43 @@ if ! $online; then
7272 "
7373fi
7474
75+ # Ensure backup directory exists before using TMP_DIR
76+ mkdir -p " ${ABS_BACKUP_PATH} /"
77+
7578echo ' Backing up filesystem...'
76- docker compose exec supportpal bash -c " mkdir -p ${TEMP_BACKUP_DIR } /filesystem-${TIMESTAMP} /config/production " # create the farthest directory
77- docker compose exec supportpal bash -c " cp -r /var/www/supportpal/config/production ${TEMP_BACKUP_DIR } /filesystem-${TIMESTAMP} /config"
78- docker compose exec supportpal bash -c " cp -r /var/www/supportpal/storage ${TEMP_BACKUP_DIR } /filesystem-${TIMESTAMP} "
79- docker compose exec supportpal bash -c " cp -r /var/www/supportpal/addons ${TEMP_BACKUP_DIR } /filesystem-${TIMESTAMP} "
80- docker compose exec supportpal bash -c " cd ${TEMP_BACKUP_DIR} && tar -czf ${FILESYSTEM_BACKUP_NAME} filesystem-${TIMESTAMP} "
79+ mkdir -p " ${TMP_DIR } /filesystem-${TIMESTAMP} /config"
80+ docker cp supportpal: /var/www/supportpal/config/production " ${TMP_DIR } /filesystem-${TIMESTAMP} /config/ " || { echo " error: failed to copy config/production from container " ; exit 1 ; }
81+ docker cp supportpal: /var/www/supportpal/storage " ${TMP_DIR } /filesystem-${TIMESTAMP} / " || { echo " error: failed to copy storage from container " ; exit 1 ; }
82+ docker cp supportpal: /var/www/supportpal/addons " ${TMP_DIR } /filesystem-${TIMESTAMP} / " || { echo " error: failed to copy addons from container " ; exit 1 ; }
83+ ( cd " ${TMP_DIR} " && tar -czf " ${FILESYSTEM_BACKUP_NAME} " " filesystem-${TIMESTAMP} " && rm -rf " filesystem- ${TIMESTAMP} " )
8184
8285echo ' Backing up database...'
8386DB_BACKUP_PATH=$( docker compose exec supportpal bash -c " cd ${COMMAND_PATH} && php artisan db:backup --store-local | grep -oE '/var/www/supportpal/.*/database-.*'" )
8487DB_FILE_NAME=$( echo " ${DB_BACKUP_PATH} " | xargs basename)
85- docker compose exec supportpal bash -c " mv ${DB_BACKUP_PATH} ${TEMP_BACKUP_DIR} /"
88+ docker cp " supportpal:${DB_BACKUP_PATH} " " ${TMP_DIR} /" || { echo " error: failed to copy database backup from container" ; exit 1; }
89+ docker compose exec supportpal bash -c " rm ${DB_BACKUP_PATH} "
8690
8791echo ' Backing up volume data...'
88- docker compose exec -u root supportpal bash -c " mkdir -p ${TEMP_BACKUP_DIR} /volumes-monolithic/cache && cp -r /redis-data/ ${TEMP_BACKUP_DIR} /volumes-monolithic/cache"
89- docker compose exec -u root supportpal bash -c " mkdir -p ${TEMP_BACKUP_DIR} /volumes-monolithic/caddy && cp -r /caddy/ ${TEMP_BACKUP_DIR} /volumes-monolithic/caddy"
92+ mkdir -p " ${TMP_DIR} /volumes-monolithic/cache"
93+ mkdir -p " ${TMP_DIR} /volumes-monolithic/caddy"
94+ docker cp supportpal:/redis-data " ${TMP_DIR} /volumes-monolithic/cache/" || { echo " error: failed to copy redis-data from container" ; exit 1; }
95+ docker cp supportpal:/caddy " ${TMP_DIR} /volumes-monolithic/caddy/" || { echo " error: failed to copy caddy from container" ; exit 1; }
9096if docker compose exec -u root supportpal bash -c " test -d /meilisearch" ; then
91- docker compose exec -u root supportpal bash -c " mkdir -p ${TEMP_BACKUP_DIR} /volumes-monolithic/meilisearch && cp -r /meilisearch/ ${TEMP_BACKUP_DIR} /volumes-monolithic/meilisearch"
97+ mkdir -p " ${TMP_DIR} /volumes-monolithic/meilisearch"
98+ docker cp supportpal:/meilisearch " ${TMP_DIR} /volumes-monolithic/meilisearch/" || { echo " error: failed to copy meilisearch from container" ; exit 1; }
9299fi
93100if docker compose exec -u root supportpal bash -c " test -d /qdrant" ; then
94- docker compose exec -u root supportpal bash -c " mkdir -p ${TEMP_BACKUP_DIR} /volumes-monolithic/qdrant && cp -r /qdrant/ ${TEMP_BACKUP_DIR} /volumes-monolithic/qdrant"
101+ mkdir -p " ${TMP_DIR} /volumes-monolithic/qdrant"
102+ docker cp supportpal:/qdrant " ${TMP_DIR} /volumes-monolithic/qdrant/" || { echo " error: failed to copy qdrant from container" ; exit 1; }
95103fi
96104
97- TMP_DIR=" /tmp/backup_$( date +%s) _$RANDOM "
98- mkdir -p " $TMP_DIR "
99-
100105echo " Backing up current working directory: $( pwd) ..."
101106tar -czf " $TMP_DIR /docker-files.tar.gz" --exclude=" ./${BACKUP_DIR} " .
102107
103- # Copy files to host.
104- execute_command " docker cp " " supportpal:${TEMP_BACKUP_DIR} /${FILESYSTEM_BACKUP_NAME} " " " " ${TMP_DIR} " " "
105- execute_command " docker cp " " supportpal:${TEMP_BACKUP_DIR} /${DB_FILE_NAME} " " " " ${TMP_DIR} " " "
106- execute_command " docker cp " " supportpal:${TEMP_BACKUP_DIR} /volumes-monolithic" " " " ${TMP_DIR} " " "
107-
108108# Combine backup files.
109- mkdir -p " ${ABS_BACKUP_PATH} /"
110109(cd " $TMP_DIR " && tar -czf " ${ABS_BACKUP_PATH} /${APP_BACKUP_NAME} " " ${FILESYSTEM_BACKUP_NAME} " " ${DB_FILE_NAME} " volumes-monolithic/ docker-files.tar.gz)
111110
112- # Cleanup.
113- docker compose exec -u root supportpal bash -c " rm -rf ${TEMP_BACKUP_DIR} /"
111+ # Cleanup (now only needs to clean the host TMP_DIR, container cleanup is minimal)
114112rm -rf " $TMP_DIR "
115113
116114echo " Backup created successfully at ${ABS_BACKUP_PATH} /${APP_BACKUP_NAME} "
0 commit comments